% Debian Pure Blends - hacking in your parents' house % Jonas Smedegaard % Nitte, Mangalore, October 28th, 2011 # Overview * Me and Asia * Tricky terms * FLOSS Eco System * Debian - distro & community * Customizing Debian # Me and Asia ![Asia trip](../map.png) # Tricky terms FLOSS: **F**ree/**L**ibre **O**pen **S**ource **S**oftware. Hacking: Being creative with small pieces -- like playing with Lego. Cracking: Breaking digital "locks", typically to steal digital data. # FLOSS Eco System ![Software Code Stream](../developmentstream.png) # Debian - distro & community * Community * Distribution * Free! # Debian - Community * ~1000 "Developers" * ~500 "Maintainers" * ??? actual contributors... # Debian - Community structure * Democracy # Debian - Community structure * ~~Democracy~~ * We all obey Debian Free Software Guidelines * Almost no hierarchy: Each package maintainer responsible # Debian - Distribution * Generic - choices are exposed to the user * Mother of other distros # Debian packages * They all obey Debian Policy * Mozilla Iceweasel (Firefox): ~3 packages (+ ~70 lang packages) * LibreOffice: ~30 packages (+ ~90 lang packages) * Debian: ~35.000 packages # Debian packaging - Mentors + sponsoring * Peer review - many eyes see more bugs * Education - Debian quality standards * Ideals transfer - get help on packaging * Mailinglist: * IRC channel on OFTC.net: \#debian-mentors * Website: # Debian packaging - Join teams * Peer review - many eyes see more bugs * Education - Debian quality standards * Ideals transfer - get help on packaging * Wiki page: # Debian - derivatives * Knoppix * Ubuntu * BOSS * SWECHA * ... # Debian deriving * Try use **live-builder**... # Debian - blends * Optimizing Debian itself for special purpose use or * Merging back derived work into Debian # Debian - existing blends * Debian Jr * Debian Med * Debian Edu * Debian Science * Debian EzGo * BrDesktop * Debian Accessibility * Debian Lex * DebiChem * Debian GIS * Debian Multimedia # Debian - future blends * FreedomBox * Debian LAN * BOSS? * SWECHA? * ...? # Debian blending * Join existing teams * Convince Debian Developers to create new teams * Try use **boxer** # Debian Pure Blends - Benefits * backed by Debian - help, bug tracking, translations, etc. * teamwork - others might help you refine and maintain your setups * common structures - others might take over if you loose interest # Debian Pure Blends - downsides * **annoying** - Debian package maintainers may not like proposed changes * **slow** - stable distribution is released infrequently * **rigid** - all contributions must match Debian Free Software Guidelines * **complex** - packages must obey Debian Policy # Tech - Debian support overloading choices * Debian installer * tasksel * debconf * aptitude # Tech - examples of non-pure blending * include non-Debian packages or non-packaged stuff * include Debian packages from different Debian suite * configure system other than via Debian package installation * install using non-Debian media You don't own your system - you provide one for others to own. So don't refine it like a (sloppy) user: Handle it like a Debian developer! # Tech - Debian, generic setup * select package profile(s) * install # Tech - Debian, hand-tuned * select package profile(s) * select additional packages * install * (re)configure packages # Tech - Debian, auto-tuned * pre-seed package selection * pre-seed package configurations * install * (re)configure non-debconf packages # Tech - Debian Pure Blend = generic * select blend profile * install # Tech - tasks involved * extra software → into Debian officially * manual configurations → preseeding * maybe create temporary dirty hacks * maybe use/create reusable tweaks * eliminate dirty hacks and tweaks * convince others in Debian to add as tasksel task # Tech - blends-dev Tool to help maintain package lists and prospective packages. Example: # Tech - dirty tricks Avoid configuration files... * config.d folders * databases * networked data # Tech - tweaks Reusable scripts compatible with one or more of... * FAI * hands-off at http://hands.com/d-i/ * CFengine * Puppet # Tech - good style * Aptitude * debconf * Config::Model # Tech - When is it "Pure"? When all is in Debian, with no dirty tricks: * package selection(s) * customizations * installation # Team - getting involved * identify and isolate tweaks at your own system * register missing software - on wiki page or (better!) in Debian BTS * write documentation * write the dream of how things ought to work * wite how details work now * discuss downstream (i.e. with users and subdistros) how things work / should work * discuss upstream (i.e. with authors) what is possible now / soon # Team - getting involved II * write intro for peer enthusiasts * decide and document ideal formats - translations, graphics etc. * prioritize pending tasks - of various kinds to encourage many different contributions * document where it is ok to ask beginners' questions * document if beginners can ask for a mentor # Team - getting involved III * make illustration * make screendumps * make fan graphics * make desktop backgrounds, CD covers, stickers, etc. * Register the project as a DOAP file, and maybe at Ohloh and Freshmeat etc. * Register and maintain relevant Debtags # Team - getting involved IV * Translate package descriptions * Translate debconf dialogs * Translate upstream code # Team - getting involved V * Help integrate contributions from graphics artists, translators and others * document decision processes of the team (and Debian and upstreams?) * document workflows in teams * insist on transparency - not only for code! # Team - Continuous status checks * Ask users about their needs - you will forget over time! * Ask teams about their tasks - each participant has slightly different perception of the common vision and status * Ask upstreams about use: perhaps potentials are missed, or code or persons feel as being abused # Debian Pure Blends - Future * debconf dontcare vs. explicit choice of default option * debconf query mechanism (and fill buffer from live system) * APT explicit choice of alternate dependency/recommendation * APT dontcare vs. explicit choice of default dependency/recommendation * Config::Model - semantic configfile handling # The End * Me: * Debian: * Debian Derivatives Census: * This talk: * Illustrations: * Asia trip: