% Debian Pure Blends % Jonas Smedegaard % Paris, France, November 4th, 2013 # Creating sustainable hacks # Debian - the universal operating system 18722 source packages ~1000 members 4-5000 non-member contributors 19 years old # Debian Pure Blends - Debian universally relevant # Debian Pure Blends - Debian universally relevant Light(er than GNOME) desktop Specific (non-english) language Custom-designed taskbar Custom applications included Custom emphasized applications in menu Custom default desktop background Custom branding # Ideas as water ![Photo: [George Hodan](http://www.publicdomainpictures.net/view-image.php?image=18935)](../../../fb/talk/epfsug2/ripple-20044.jpg) # Downstream <-> Upstream ![Sketch: [Siri Reiter](http://sirireiter.dk/)](../../../fb/talk/epfsug2/developmentstream.jpg) # Derivatives Wandering off? Running ahead? Scouting? # Making a blend pick a base distro hack on it optimize hacks get hacks adopted upstream # Maintaining a blend ![Photo: [Thinkgeek](https://www.thinkgeek.com/product/e9aa/)](e9aa_soylent_green_crackers.jpg) # Debian environment Social contract Constitution Policy # Blends * Debian Jr * Debian Med * Debian Edu * Debian Science * Debian EzGo * BrDesktop * Debian Accessibility * Debian Lex * DebiChem * Debian GIS * Debian Multimedia # Debian Pure Blends - all Debian * **D**ebian packages - selections (e.g. for tasksel to pick up) * **D**ebian configuration - use of policy-compliant package-provided interfaces * **D**ebian distribution media - installing via Debian itself DDD : **Debian** packages **Debian** configured from **Debian** distribution # Debian Pure Blends - why bother? Nice on paper with ideals and priciples, but... What's in it for me?!? # 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 # 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 # 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 # Sources for this talk * Me: * This talk: * For Debian facts see Zack's slides: