Sunday, December 31, 2006

memes that damage debian

The Debian project is afflicted with several damaging memes. One that is causing problems at the moment is the idea that life should be fair. Unfortunately life is inherently unfair, it's not fair that those of us who were born in first-world countries (the majority of Debian developers) have so many more opportunities than most people who are born in "developing" countries, and things just continue to be unfair as you go through life. Unfair things will happen to you, deal with it and do what is necessary to have a productive life!

When one developer has regular long-term disputes with many other developers the conclusion is that the one person who can't get along is at fault. We can debate about whether one or two significant disputes are a criteria for this or whether having a dozen developers disagreeing with them is the final point. But the fact is that if there is a large group of people who work together well and an individual who can't work with any of them then there is only one realistic option, the individual needs to go find some people that they can work with - they can resign or be expelled. The fact that something slightly unfair might have happened a year ago is no reason for pandering to an anti-social developer. The fact that expelling a developer for being anti-social is unfair to them is no reason for damaging the productivity of all Debian developers.

Another problemmatic meme is the idea that we have to tolerate everyone - even those who are intolerant (known as the Limp Liberal meme). When someone has no tolerance for others (EG being racist or practicing sexual discrimination) then they have no place in a community such as Debian. They need to be removed sooner rather than later. All Debian developers know the problems caused by deferring such expulsion.

The final damaging meme that I have observed is you can't force a volunteer to do any work. On it's own that statement is OK, but the interpretation commonly used in Debian is you can't take their job away from them either. The most common example of this is when a developer is not maintaining a package and someone else does an NMU (non-maintainer upload) to fix a bug, the developer then flames the person who did this (usually to fix a severe bug). It seems to be believed that a Debian developer owns their packages and has a right to prevent other people from working on them. This attitude also extends to all other aspects of Debian, there are many positions of responsibility in Debian that are not being adequately performed and for which volunteers are offering to help out but being refused.

The idea of the GPL is that when a program is not being developed adequately it can be taken over by another person. However when that program is in a Debian package the developer who owns it can refuse to allow this.

3 comments:

Anonymous said...

Maybe we should migrate to a debian-wide SVN for maintaining packages as a first step?
And enforce the use of some standard ways of packaging (e.g. debhelper, CDBS) to make it easier to take over.

0-day-NMU policy has been in effect for most of the release cycle, hasn't it?

The main reason I see for having a primary maintainer is to avoid duplicate work...

etbe said...

I am not convinced that one packaging method is necessarily appropriate for all packages. Different packages have different technical requirements that drive the decisions on how to maintain them.

A complex package that has many patches suits the model of package building including an apply-patch stage. A simpler package that has few patches is best served with a simple diff.gz against the entire source tree. A package where the primary maintainer is also the upstream developer is best maintained as a native Debian package.

Is SVN the best option for such things anyway? I got the impression that GIT was the way it was all going...

Thomas Hood said...

"The final damaging meme that I have observed is you can't force a volunteer to do any work."

This somehow got entrenched in the constitution.

"Nothing in this constitution imposes an obligation on anyone to do work for the Project. A person who does not want to do a task which has been delegated or assigned to them does not need to do it."(§2.1.1)

Originally I assumed that this made the uncontroversial point that Debian developers are volunteers and can't be forced to accept positions (or to do the associated work) that they don't want to accept. Later during a discussion on one of the Debian mailing lists my nose was rubbed in the correct interpretation of the clause, namely, that a Debian volunteer can't be forced to do any work even if he or she continues to hold a position that would (normally) entail doing that work. Responsibility is thus abolished in the project. This makes Debian significantly different from other volunteer projects I am familiar with. I agree that it is damaging.

On the other hand, I suppose that the clause makes holding a position in Debian more attractive.