Why Would Anyone Develop on /

Wookey

19th September 2012

Automotive Summit 2012 1 / Wookey () Why Would Anyone Develop on Debian/Ubuntu 22 Outline

1 A little History

2 Debian ecosystem

3 Choosing a distro base

4 Development

Automotive Linux Summit 2012 2 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Prelude — the notion of “distribution”

distributions are meant to ease management key notion: the abstraction of package offer coherent collections of software killer application: package managers Automotive Linux Summit 2012 3 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Outline

1 A little History

2 Debian ecosystem

3 Choosing a distro base

4 Development

Automotive Linux Summit 2012 4 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Debian: once upon a time

Fellow Linuxers, This is just to announce the imminent completion of a brand-new Linux release, which I’m calling the Debian Linux Release. [. . . ] Ian A Murdock, 16/08/1993 comp.os.linux.development

entirely independent - no one commercial sponsor , tools and open process built collaboratively by experts

Automotive Linux Summit 2012 5 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Debian: one of a kind?

1993 — not many distros back then 19 years later — lots of other distros

openSUSE, , PCLinuxOS, , Linux, CentOS, FreeBSD, Arch, Sabayon, Puppy, , MEPIS, Ultimate, NetBSD, Tiny Core, , CrunchBang, , Vector, , , Red Hat, aptosid, Peppermint, PC-BSD, Chakra, Salix, ClearOS, , , Super OS, BackTrack, gOS, TinyMe, , EasyPeasy, Frugalware, Clonezilla, Pardus, Meego, OpenBSD, Quirky, PC/OS, Zorin, Debian, SystemRescue, Element, , , Macpup, wattOS, Scientific, , , DragonFLY, Elive, linux-gamers, 64 Studio, Ubuntu, , Nexenta, Parisx, NuTyX, GhostBSD, Kongoni, moonOS, LFS, Lunar, Imagineos, Untangle, Fedora, Yellow Dog, aLinux, Yoper, IPFire, BlankOn, Mandriva, PureOS, FreeNAS, , Linpus, , blackPanther, . . .

with many differences: technical choices support release management packaging system release schedule user base target users/purpose look & feel community package set How is Debian different?

Automotive Linux Summit 2012 6 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Outline

1 A little History

2 Debian ecosystem

3 Choosing a distro base

4 Development

Automotive Linux Summit 2012 7 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 The distribution pipeline

yesterday . . .

Automotive Linux Summit 2012 8 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 The new distribution pipeline

. . . today

Automotive Linux Summit 2012 8 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 The new distribution pipeline

. . . today

This is a Good Thing

wider FLOSS adoption more eyeballs swallow more bugs more potential contributors

Automotive Linux Summit 2012 8 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 A Debian derivative example: Ubuntu

Upstream started in 2004 by target: desktop Debian derivative Debian very popular (15–20x Debian?) historical/past correlations 11% main ↔ corporate Patch universe ↔ community 74%

I heavily customized/forked in main 15% I very close to Debian elsewhere sprouting its own derivatives (≈80) Ubuntu I . . . as Debian transitive derivatives

Data for Oneiric Ocelot, main + universe

Automotive Linux Summit 2012 9 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Blends and remixes

Debian Pure Blends I Debian Edu, Debian Med, Debian Science, Debian GIS, DebiChem, . . . I Debian Automotive I blends..debian.org Ubuntu Automotive remix

Automotive Linux Summit 2012 10 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Mechanism

-vendor package tracking system ‘also exists in’ Focus on the delta Working upstream saves time Everything is a package Amazing array of tooling - rebuildd, reprepro, dpkg-dev, debrsign, dupload, sbuild, pbuilder, debdiff, debchange, debconf, svn-buildpackage, -buildpackage, debcheckout, debcommit, debi, dose, dpkg-source, debsnap, -cache, grep-dctrl, devscripts, . . .

Automotive Linux Summit 2012 11 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 The universal OS

Wide architecture support (arm, , amd64, mips) and 6 others Same environment on dev and target Easy debugging Open infrastructure - easy to have your own repository Legal checks already done

I All software meets the 4 freedoms I Linking checked for incompatibility

Automotive Linux Summit 2012 12 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Outline

1 A little History

2 Debian ecosystem

3 Choosing a distro base

4 Development

Automotive Linux Summit 2012 13 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Debian or Ubuntu

Fundamentally quite similar 2 yr release cycle 3-3.5yr security support 6 month release cycle Easier to use 18-months security support - 5yrs for Do-ocracy LTS releases More solid upgrades Commercial support Distributed support: Quicker to get things changed (linpro, credativ) Automotive needs really long-term security support

Automotive Linux Summit 2012 14 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Effective community working

Propose ideas early Take and give feedback Write down specs for shared understanding Learn to work in the open

Automotive Linux Summit 2012 15 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Managing derivatives

Everyone has the same issues Tracking upstream Managing patches Running repo, buildd, versioning Upstreaming saves a lot of hassle in the long run

Automotive Linux Summit 2012 16 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Emdebian

Identical binaries Reduced on-disc bloat Cross-toolchains

Automotive Linux Summit 2012 17 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Outline

1 A little History

2 Debian ecosystem

3 Choosing a distro base

4 Development

Automotive Linux Summit 2012 18 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Multiarch is very simple

Put libraries into architecture-specific paths

I /usr/lib/libfoo (amd64)→/usr/lib/ 64-linux-gnu/libfoo I /usr/lib/libfoo (armel)→/usr/lib/arm-linux-gnueabi/libfoo I /usr/lib/libfoo (i386)→/usr/lib/i386-linux-gnu/libfoo Change the default linux loader path.

Install libraries side-by side i386/amd64, arm/arm64 Run foreign binaries in-place with 32/64 special casing goes away (/emul/ia32-linux) Canonical locations

I Files don’t move when cross-bulding Build/host version lockstep dpkg --add-architecture i386 apt-get install libattr1-dev:armel apt-get -aarmel build-dep acl dpkg-buildpackage -aarmel Automotive Linux Summit 2012 19 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Crossbuilding - library paths

Runtime is the same as build-time.

Old system (classic/dpkg-cross) build-time library path: /usr/arm-linux-gnueabi/lib/libfoo runtime library path: /usr/lib/libfoo

Multiarch build-time library path: /usr/lib/arm-linux-gnueabi/libfoo runtime library path: /usr/lib/arm-linux-gnueabi/libfoo

Much harder for libtool to screw it up

Automotive Linux Summit 2012 20 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Bootstrapping

dpkg build profiles Remove circular build-dependencies Cross-build from scratch Dose3 dependency analysis One of main Yocto/OE advantages

Automotive Linux Summit 2012 21 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22 Thanks!

Wookey [email protected] http://wookware.org

about the slides: available at http://wookware.org/talks/ copyright c 2012 Wookey license CC BY-SA 3.0 — Creative Commons Attribution-ShareAlike 3.0

Automotive Linux Summit 2012 22 / Wookey (Linaro) Why Would Anyone Develop on Debian/Ubuntu 22