March 26, 2008
This article was contributed by Diego Pettenò
[Editor's note: This article, which looks at the interactions of
software projects and distribution providers, will be presented in three
parts.]
Introduction
In today's world most users of Linux don't build their system from scratch
by downloading the sources of the applications and libraries they need and
building them by hand. Most users will use one or more distributions (the
ones that best suit their needs), and they'll stick with the packages
provided by the distribution for as long as they can.
Power users may know how to get the software they want and build it so it
runs, but the average user won't go around looking for software that is not
readily available to them. The job of a distribution is, of course, to
provide as much software as its users will need, sometimes changing the
software so that it suits the needs of its users better.
The distribution's developers, the so-called downstream
developers, have different responsibilities compared to the
original software developers, the upstream developers. The former are
responsible directly to their users, while the latter are usually more
focused on implementing their software correctly for their own
standards (which means for instance implementing a protocol exactly as
described by the standard, or supporting a file format exactly as it
should be).
Most of the time, these two objectives are compatible with one
another, and users face an interface that hides the details of the
implementation. Sometimes though there are user requests that
upstream developers won't acknowledge, for instance: to parse a
file that was written improperly by a commonly-used tool (maybe a
proprietary tool that does not support free software). In these cases,
some distributions tend to edit the source, creating a modified version for
that particular distribution, with a different behaviour, interface, or
what not.
It's because of cases like this, especially in the last few
years, that there have been many arguments between original developers and
distributions, which sometimes involved legal threats, forks or
removal of software from distributions' repositories. It's not fun to
watch these arguments going by, and sometimes it's all because of
differences in opinion between the developers, or in how their
experiences have affected their views.
Starting with the idea that everybody wants to have the software they
wrote used, this article will try to explain what distributors want
and why they ask the original developers to cooperate toward that
goal. People who worked both as an upstream developer and as a
downstream maintainer usually know what is being done with
their code in a distribution and why. For people who have only seen
one side, understanding of the needs or the reasons of the other side might
be a very difficult task.
Technical and philosophical needs
The majority of the
points where upstream and downstream have different
views can be divided into
technical and
philosophical
points. On the technical side, distributors need to make the
software build on their system, without lots of workarounds, and it should
follow the same behaviour as other software in their setup. On the
philosophical side, they have needs relating to user requests
and expectations. Users expect some consistency in how software looks and
behaves on their system. Often, both of these kind of matters relate to
the policy (written or unwritten) of that distributor.
While one might actually expect a philosophical debate between
developers on formats and how to implement a protocol, it's difficult to
understand how so many arguments are caused by different technical
requests. Unfortunately even the technical needs are often different
between upstream projects and distributions. The only way to
accommodate both is to provide choices, something that more times than not
is considered bad by the upstream developers, who do not
want the complication of too many choices.
I sincerely doubt there will ever be a time when all the
upstream developers and the downstream maintainers will
be on the same page, but it is possible to at least try to understand
what the other side wants, and see if it's possible to cover their
needs, without regressing. Even if that means increasing the complexity a
bit. It is true that most of today's tools, in every area, are more
sophisticated and complex than their equivalent years ago (tens of years
for computer tools, hundreds of years for other areas).
[This ends part 1 of this article. Part 2 will look at the technical
needs of distributions and the upstream developers. Finally, part 3 will
cover the philosophical concerns and present some conclusions. Stay tuned
for part 2, which should air in two weeks.]
(
Log in to post comments)