What to do about GNU?

Tagged:  •    •    •  

About a month ago, I released GNU sed version 4.2.2 and included in the release a "rant" (more of a criticism, perhaps—I'm not a native speaker) about the state of the GNU project.

I made it clear that I had no philosophical disagreement with FSF; in fact, that's likely the reason why almost no one took my post as an occasion to attack the FSF and Richard Stallman. To the few that did: guys, you clearly missed the point. I wrote that text because I want free software and the FSF to be successful. My concern is that if GNU loses, the FSF loses—even if some other piece of free software happens to win.

Anyhow, these people were clearly a minority. I was surprised by the positive reactions to my post. All of the flames mostly concentrated on the virtues and sins of the C++ programming languages. I was most pleasantly surprised by the amicable reactions from fellow GNU hackers and from Stallman himself.

In fact, Richard clearly understood the difference between quitting maintainership, and quitting the GNU project completely; the difference between not contributing any more code, and rescinding all links with GNU. Resigning commit access meant I'll be contributing less code to GNU, but if there are other compelling ways to help, count me in.

So, here are some proposals to fellow hackers. Some of them may work out, some of them may not. It is even possible some of them are inapplicable because of U.S. law for non-profits. But I'm sure that they are welcome by the FSF, and that's already a good motivation to write them.

First of all, let's talk about GNU. GNU needs updated coding standards, and coding standards are about much more than brace positioning. The GNU coding standards should summarize best practices into a free document that people can refer to; everyone, not just GNU developers. Most importantly, such an update should focus on existing best practices. If you don't like something in D-Bus or pkg-config or the Autotools, fix it upstream (and be prepared to be told you're wrong). That's how it works with free software.

GNU also has a maintainer guide. The maintainer guide should document the services that GNU makes available. For example, a short guide to debbugs and the Hydra continuous integration server, both of which are used by many GNU projects. As an aside, it would be great if some of the infrastructure put in place for GNOME and other large GNU projects could be reused by all of them. Regardless of personal opinions about desktop environments, the GNOME project is clearly a successful community, and we all should learn from it!

Second, let's talk about what GNU is. There are too many projects in GNU. Micromanagement is impossible at this scale, therefore nobody really tracks them. This has many problems: the signal-to-noise ratio in the list of GNU software projects is low, the different projects are not as coherent as they could be, there is little or no mentoring for new GNU maintainers, and so on.

GNU should be reorganized around a few high-profile umbrella projects: for example the development environment (GCC, binutils, gdb, glibc, etc.), the build system (comprising Autotools but also gnulib), the POSIX environment, and GNOME. Everything else should either integrate itself with such a meta-project, or find another home. For example, as I mentioned in my December post, GNU Smalltalk could become a GNOME project.

Third, what about the FSF? The FSF could be the home for some of these projects. GNU MediaGoblin is an obvious example, and could perhaps be a "pilot" for more projects to follow. The FSF would donate help with bureaucracy, including copyright assignment. FSF and the projects it endorses could mutually benefit in terms of branding. Similarly, organizing a donation process for FSF-endorsed projects will likely bring members to the FSF.

FSF projects would be vetted quite strictly, and not judged as parts of a system---but rather, for their contribution to the advancement of software freedom. Such projects are often tied to academic work. It would be great if the FSF gave exposure to research that advances freedom. Perhaps even get access to funding from the National Science Foundation (in the U.S.) or the European Framework Programmes, and use it to hire developers for FSF projects.

GNU has been producing free software for almost 30 years now, and there's no reason why it should stop. Join us now and share the software; you'll be free, hackers, and we'll do our best to make it fun!

All of this seems important. I believe that was your biggest pain points as a maintainer, and I think that your proposals could fix them. The only issue I can really relate to is the 'too much projects' one. You mentioned big projects, that are actually used and important. What about projects like libre js? I get it, it's important thing. Morally. But I don't think it's possible to believe in its serious adoption (at least worth the development and marketing time). Why would the project which has already too many projects take on something like this?

Sure, it's the right thing to do - morally. But I'm certain it won't further the FSF's cause. Before it becames relevant, javascript will probably be long gone and replaced with something else.

Another thing, that I'd guess scares people, adding to the problem of not enough developers is the nature of the organisation. I was asking a libre js related question on reddit today. One of the answers was:
"Why not come to #librejs on irc.freenode.net, or get directly in touch with lduros or rms. (lduros doesn't really make any design decisions -- he just hacks the thing. Suggestions like yours should probably go to rms.)"

So there's a guy whose contribution is doing what he's told? That doesn't sound very inviting. I understand, that not all GNU projects are like that. But from the outside the entire FSF seems to be 'RMS and some guys'. I don't think it's healthy for an organisation to have such image - people want to join the projects, where they can contribute on all levels. Many people seem to think that FSF needs a new leader or they think about starting an alternative organisation. They believe the ideas behind GNU, they just don't want to be part of a group so strongly influenced by RMS.

I get the idea, that FSF has to be extreme, to widen the window of experience. So other people wanting change and freedom don't seem so extreme. I just don't think it's a good idea to mix making code (which is all about community) and making political point (which has to divide people, especially if it's extreme by design). In my (uninformed) opinion GNU projects could benefit from cutting their association with FSF.

There is a lot of truth to what you are saying, but i believe you may be missing the larger point with the FOSS movement. Are you suggesting a complete refactor of thousands of projects by thousands of coders? One of the grandest accomplishments of *nix is how easy it is to distribute code. I can write you a snippet, stuff it in a pretty little test harness, wrap it up with autotools (which you herald) and email you the tar-ball. The portability really is a beautiful thing.

An SOP for GNU projects would be great, but where is the manpower for that going to come from? I'd rather all the brilliant and generous coders keep coding.

I am not suggesting refactoring thousands of projects (GNU doesn't have that many). I am suggesting reassessing the organization of the GNU maintainer community; GNOME distributes many different tarballs already for example. In fact, nothing of what I'm not suggesting affects the code.

You said that English is not your native language?

I just wanted to compliment you on your abilities though. You are quite good at writing in English. Furthermore, you used "comprise" correctly.

It would be great if the proposed new standards were compatible with Debian's guide for upstreams and the other similar documents linked from the guide:


About your use of reCAPTCHA:


Yes, Google is probably using reCAPTCHA for their own good or business, since they're providing you with a robust Captcha system for free.

Thanks for the great post, one thing: "GNU should be reorganized around a few high-profile umbrella projects" needs extension to talk about how umbrella projects can be (occasionally) created as well.

GNU's software creates an embedded framework of software that paid software picks up on and continues to work with. How come GNU isn't being represented fairly over there? I'm sure the average consumer has no idea about GNU and how much they owe GNU - it would be great to raise awareness and get more people excited about GNU the way they are about Apple, MSFT, and Google's software ecosystem.

User login