By Zed A. Shaw

Making Debian Responsible For Its Actions

I write software for other people to use. I give it away for free usually, and I take a great amount of time making my software as good as I possibly can. I don't make perfect software, but I actually do craft it and promote it. I write it to work with as many systems as possible and work with people to get it right. In fact, I spent a large amount of time recently removing Python from Mongrel2 because the Python on many systems is too old.

Today I wanted to transfer a Ruby gem I hadn't worked on in ages to someone who wanted to adopt it. So I installed ruby gems on my Ubuntu system using aptitude and what do I see? Gems can't even run because the gems needs openssl and net/scp, but the Debian (not Ubuntu) package doesn't install it along with rubygems. Even though the piece of software I asked aptitude to install requires these libraries to run, they refuse to install it.

Remember I have no love for Ruby, but this is a bug, and the package is broken. No culture clash explains it, it is just broken. I "aptitude install rubygems" and if I can't type every gem command without getting a stack trace then you have packaged rubygems wrong.

Think about it this way. Imagine I give you a game. You download it, install it, and click on it to play it and it blows up. I forgot to give you a couple of libraries you need to run it. Now, if I do this how should I behave? Well first I apologize, then I fix the installer, then I give you an installer that installs a working piece of software. That's how software works, by being installed correctly. You would also say that my software had a bug, and you'd be right.

What would you do if I basically told you to piss off and find the libraries yourself? Why you'd stop using my software. You'd call me names. You'd say I'm an idiot. You'd probably tell all your friends I write crap software.

This is what Debian maintainers are doing, but there's a very specific reason why they do this and it's not a "culture clash". It's embrace and extend which they probably learned from Microsoft. You see, if you have to adapt your software and processes to their weird layout and packages, then you can't get off their platform. It is sadly pure business and has nothing to do with open source, quality, or culture.

It's simply a tactic to make sure that you are stuck on Debian.

If we look at this problem from an open source perspective, Debian is at a minimum being a horrible citizen. That software they install is mine. I wrote it and gave it to my users, not Debian. I did not write it for a package maintainer, I wrote it for an end user to get value out of. I did not write it to boost the Debian business plan. It is not theirs, it is mine. Their rights extend as far as I've granted them, and that is all.

What is happening is control is not aligned with responsibility. Debian has taken control of the software package and recrafted it for their very narrow set of system administrator users. However, they refuse to take responsibility for the defect and quality problems they create. Instead I end up being responsible for their mistakes, which is wrong.

If Debian is in control, then Debian should be made responsible. That's the only way to get them to change it. If they don't want to be responsible, then they should let me be in control.

But here's the problem, Debian package maintainers don't want to give up control to the responsible parties. I would more than gladly make my own .deb packages, but they refuse to let me. In fact, I plan on making packages for the major Unices in order to head them off. That's what everyone ends up doing.

So where does this leave us? It's simple, if Debian refuses to take responsibility then they leave the software authors with two choices:

  1. Make Debian responsible by any means necessary.
  2. Remove Debian's control by any means necessary.

In order to restore the balance of power and place control with responsibility we have to do one of these.

Most of the solutions so far have been about removing Debian's control. That's why things like rvm and pip exist. Since Debian is trying to be in control and not responsible, Ruby and Python people have created alternative package managers that remove Debian's control. Problem solved.

What I want to explore though is how we can do the first tactic of making Debian responsible for its careless and rude packaging behavior. I thought about this, and frankly I can't think of a way to make them responsible. You can't point users at them because that's just bad customer service. You can't take their "patches" because they're usually Debian specific. You can't get them to code on your project because they aren't skilled or motivated enough.

There just really isn't a way to make them responsible other than a possible mass revolt by the major open source authors. If someone else has a suggestion about making Debian responsible for their actions, I am open to it.

Until then though, let's entertain the idea, even hypothetically, that all of the people who write software can revolt against Debian and literally make them pay for their mistakes. I'm imagining a mass petition, maybe some funny ad campaigns, in-person confrontations meant to embarrass package maintainers, SEO tricks to get people off Debian, promotion of any alternative to Debian, anything to make them pay, apologize, and listen.

If you write software and you're sick of Debian screwing up your gear, then shoot me ideas for how we can make this happen. I think that if enough of us band together to make Debian responsible for its actions we can actually get them to start asking us before they package our software to find out how we think it should be packaged.

Send your suggestions to post@sheddingbikes.com and let's get this plan into action. How do we make Debian responsible for its packages? I won't post your suggestions unless you ask.