% 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: <mailto:debian-mentors@lists.debian.org>
 * IRC channel on OFTC.net: \#debian-mentors
 * Website: <http://mentors.debian.net/>

# Debian packaging - Join teams

 * Peer review - many eyes see more bugs
 * Education - Debian quality standards
 * Ideals transfer - get help on packaging
 * Wiki page: <http://wiki.debian.org/Teams>

# 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: <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

# The End

 * Me: <dr@jones.dk>
 * Debian: <http://www.debian.org>
 * Debian Derivatives Census: <http://wiki.debian.org/Derivatives/Census>
 * This talk: <http://dr.jones.dk/blends/talk/nitte>
 * Illustrations: <http://sirireiter.dk/blog/entry/110310/>
 * Asia trip: <http://wiki.jones.dk/DebianAsia2011>