We'll see | Matt Zimmerman

a potpourri of mirth and madness

Posts Tagged ‘Debian

Ubuntu is based on Debian unstable

From time to time, I see someone remark that Ubuntu uses packages from Debian unstable, and that they don’t think this is a very good idea. I would like to explain why we do this and how it works, and hope that this will enable a less one-sided view of the subject.

Debian is well known and regarded as a product, the Debian system itself. In addition to this end product, the Debian community produces a variety of useful by-products. One of the most celebrated is Debian “unstable”, which despite its unglamorous name is an incredible achievement. It represents the collective work of a vast number of developers, who package and maintain essentially all of the free software available.

Put simply, Debian unstable provides immediate access to anything you could want from the free software world. It’s all there, updated daily with the latest and greatest releases. As if that weren’t great enough, the components are continuously integrated, so that problems become evident right away and can be fixed quickly.

Debian doesn’t “release” unstable directly; it’s an intermediate stage in their process. The Debian release team selects components which they believe are ready to release, and place them in “testing”, which is the next stage in the process. However, many people, developers especially, use unstable as their primary operating environment. They drink from the firehose of free software, delivered daily by Debian.

Ubuntu was created in a similar spirit, but with significantly different goals. We wanted to release a complete product much more frequently and regularly. We wanted to focus on desktop users, and provide a system which met their specific needs, even if this meant serving some other needs less well. In this way, we created a complement to Debian, as many others had done before us.

What we did differently was to choose unstable as the basis for this work. There are many other distributions based on Debian, but at the time, they were mostly derived from a particular release. Debian would make a release, then someone else would take this and produce a customized version of it. The problem was that these customized versions would become outdated as Debian continued to develop. Bringing them up to date with Debian’s latest work required a lot of effort, particularly as Debian’s releases were sometimes years apart with massive changes between them.

Basing Ubuntu on Debian unstable meant keeping up. We would continually merge in the latest code from Debian, keeping Ubuntu closely in sync. While this was sure to be a lot of work, it provided us with access to all of the pre-packaged software we would need to produce Ubuntu, freshly delivered every day. Instead of duplicating this work, we could build on it.

We would, of course, need to do our own release management, and make decisions about what was ready to ship, just as Debian’s release team did. We couldn’t reuse their work, because we needed to make different decisions in order to suit our distinct release cycle and provide the desktop experience we wanted.

These decisions reflected some of the key advantages of free software. We could get the benefits of a custom solution without having to reinvent every wheel. We could focus on the pieces which mattered most to us, and use stock components everywhere else. We showed that this applied to open processes as well as open source code.

This is why, and how, Ubuntu was based on Debian unstable. It was, quite simply, the best tool for the job, and still is today.

Written by Matt Zimmerman

March 8, 2009 at 16:32

Posted in Uncategorized

Tagged with ,

The free software ecosystem and its denizens

Free software is a remarkable phenomenon.  It is a highly evolved form of collaboration: compared to other creative endeavors, free software developers all over the world are able to work together on a project with surprisingly little friction.  It is a grassroots political movement which has grown from small online communities to span geographical and national boundaries.  It is a multicultural social group with unique and diverse characteristics.  It has spawned a variety of self-governing organizations and successful corporations.

It is also an interesting example of a gift economy.  In general, participants in free software donate their work to the greater good, with no expectation of an exchange of value.  Some contributions are rewarded by social or professional recognition, where the author achieves standing among their peers or receives gratitude from recipients of their work.  Others indirectly evoke rewards in kind, such as where the creator of a program is rewarded by contributions from others which improve it further.  Some are works for hire, where a corporation commissions a contribution through its employees, in pursuit of its own aims.  There are other types of exchanges where I do not personally understand what motivates the contributor.

There are many recognized roles in free software, but they can be broadly classified into three types:

Developers are the heart of this economy.  They are continuously creating and improving free software technology, and publishing their source code for other developers to use and learn from.  Some developers write one program and then vanish from the community, while others contribute to many different projects over the course of decades.  Highly effective developers are celebrities in the free software community.

Users, also known as “people”, are the reason why software is written.  Their needs and wants determine which software is considered valuable.  Many of them also contribute directly to free software in one way or another, by promoting awareness, providing testing and feedback, supporting other users, writing documentation, or building communication links.  Historically, most users of free software were also its developers, but today, this is no longer true, and millions of people use free software who are not developers.

Packagers connect these two groups.  They gather up the source code produced by developers, wrap it in standardized packaging, and bundle it into collections (distributions) designed to meet the needs of users.  Users experience free software almost exclusively through a distribution.  As the free software stack has grown in size and complexity, so have distributions, and the maintenance of a modern distribution is a large-scale development project in itself: selecting appropriate software and versions, getting the lot working smoothly together, and releasing it in the form of a product which is accessible to users.  Packagers create only a small fraction of the software included in their distribution, but they define several key aspects of “what it is like” to use it.  Users most strongly associate their experience of free software with a distribution.

If free software were film, developers would be some combination of writer and crew, creating and expressing characters and a story.  Users would be viewers (including critics and fans), who receive and interpret the work.  Packagers would be the film crew, realizing the production on film so that it can be seen.

If free software were food, developers would be chefs, developing recipes and cooking.  Users would eat and critique the dishes.  Packagers would be restaurateurs, serving customers and creating an environment in which they can experience the food.

Neither of these analogies are very complete.  In particular, these analogies fail to capture the strange loops of free software.  Every developer is also a user, reliant upon of thousands of other programs which they receive in packaged form order to do their development work.  Every team of packagers develops some software in order to make their distribution work, and they use the distribution itself in order to do so.

Distributions, and the integration work that they do, are a critical part of this ecosystem.  Many of us would not be using free software today if not for the efforts of projects like Debian, whose mission is to produce a complete system out of free software created by others.  In my case, Debian provided both the means and the motivation for my contributions to free software, and later made Ubuntu possible.

Strong, productive relationships between these groups are essential to continuing the growth and development of free software.  Whichever groups you’re part of, get to know your counterparts in other groups.  Talk to the people who are packaging your software, writing the software you package, using your software or packages.  Learn about the problems they face and how you can help each other.  Don’t assume that this communication is someone else’s job: reach out and make it happen.

Written by Matt Zimmerman

October 7, 2008 at 12:46