% 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: <http://debian-med.alioth.debian.org/tasks/psychology>

# 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