% Debian Pure Blends % Jonas Smedegaard (& Andreas Tille) % Hồ Chí Minh, Việt Nam, November 12th, 2010 # Overview * Debian is generic - Blends are specific * Purity: all is Debian * Why bother? * Technical details * Team, community, users * Future # Debian - the universal Operating System * Stable * Flexible Debian is the universal Operating System. Goal : Usable everywhere # Debian - very flexible... > * Flexible: good * Very flexible: very good # Debian - **too** flexible! * Flexible: good * ~~Very flexible: very good~~ * Very flexible: very confusing! Debian is too flexible: confusing and to some even scary! # Debian - ways to simplify 1. Keep things as-is - educate users instead 1. Remove choice 1. Provide multiple defaults # Debian - simple if generic defaults are ok * Mainstream (but not too new) hardware * GNOME desktop * Iceweasel web browser * Exim MTA * Apache web server * MySQL database server Debian *is* simple - if you happen to like its defaults. # Debian Pure Blend - Debian for a specific purpose Debian Pure Blend (in short DDD): a subset of Debian configured to support a particular target group out-of-the-box. Goal 1 : Turn Debian into the distribution of choice for a specific target group Goal 2 : Advertise this fact to the world to attract users and developers # Debian Pure Blend - technical parts * package selection(s) * customizations The concrete work to include as packages with official Debian. # Debian Pure Blend - reality parts * goals & noise about progress * package health + encourage additional software packaging * passion & patience * good relations with Debian package maintainers, competitors, and upstream authors * good relations with users Surrounding work making a Blend relevant. # Debian Pure Blend - current blending projects * Debian Jr * Debian Med * Debian Edu * Debian Science * Debian EzGo * BrDesktop * Debian Accessibility * Debian Lex * DebiChem * Debian GIS * Debian Multimedia Projects working on Blends - some pure, some not (yet)... # 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