Visiting a future of GNU
random thoughts on a beloved project
The initial announcement of the GNU Project had been posted on September 27, 1983. Time flies… Now, more than 40 years later, is it still a project? No. The project is gone and only the trademark is still alive. Let be frank: GNU reputation is bad. My subjective example: more than often, I skip GNU when speaking about Guix. Why? Because when I think to GNU, I see picky discussions about the color of some old sheds, while elsewhere people have fun with cool verandas.
Still, GNU means something to me. It means an humanist project. It is because of GNU that I have been introduced to the idea that any technology must, first and before all, respects ethics. And GNU has showed by leading a real world example that it is possible to build together the technology we need and still respects human beings.
Yes, GNU means something to me and I am very grateful to all the people that have shaped this over the past 40 years. Tradition and heritage must not lock in conservatism, instead tradition and heritage feed the reinvention. Somehow they draw open bounds instead of limiting to some closed ecosystems.
That’s said, the fall of GNU (as trademark) takes GNU (as project) down. It makes me sad and maybe GNU (as the whole) cannot be saved at this point. Passionated people for whom GNU also means a lot to them are trying in one way or the other to revive or rescue GNU. I do not know if GNU can survive and, because of the bad reputation, maybe something named differently should be created. It does not change the idea here whether it is named GNU or New GNU or Pick-A-Name.
I think the current situation of GNU is the result of a multi-layered wrong structure. Worse, I am not sure to get if there is even one coherent evaluated1 structure and, from where I stand, GNU seems a mess. Not a teeming baazar but a stagnant filled sink. Aside, I do not even speak about some bus factor – I wish all the best to Richard Stallman –: as far as I know, Richard is a regular human and GNU as it is today will not survive Richard’s retirement. Again, I wish all the best to Richard!
What is GNU doing in order to prepare the future? From the next year to the next 40 years. This post is my attempt for capturing the future I wish for GNU.
What is GNU?
The official website says: GNU is an operating system. Today, it is inaccurate. Either it’s more than an operating system, either it’s less, in both cases, it’s not an operating system. I think that’s the (first) mistake: focus on some technical considerations; it neglicts the core and misses that people join GNU because of its philosophy.
What is GNU? GNU is a collection of technical projects that agrees to fullfil one self-discipline and practise, that agrees to obey common rules and shared standards. GNU is a collection of projects that share principles. Maybe we could even stretch: GNU is an intentional community, an alternative lifestyle, a social experiment.
We collaborate to build software together, yes for sure. However, the way we do it – ruled by principles – is more important than the technical implementation we end up. Obviously, the discussion is only focused on technical topics and source code is the law, as with any Open Source project. The extra grain of salt that GNU adds is about principles around such law.
Principle, not value
Please note GNU is about principles and not about values. A principle is a general belief that you have about the way you should behave, which influences your behaviour. The value of something is its importance or usefulness; if you place a particular value on something, that is the importance or usefulness you think it has.
Consider the example of sharing source code. If I do it because it makes more money in my business, if I do it because I think it’s good, or if I do it because it pleases my beloved Cat, then the three shares the same value (the importance and usefulness of sharing source code) but the principles are different (the why it’s important is different: money, good, ask-the-cat).
Moreover, GNU insists on “Free Software definition”, i.e., GNU roots all in the four essential freedoms. I think that’s the (second) mistake2. Any Open Source project with compliant license agrees with these four freedoms. Therefore, what is different between these Open Source projects and GNU? Is GNU yet another Open Source project but reduced to its (apparent bad reputation) trademark? In other words, one needs an ad-hoc explanation to distinguish between the moral and the legal; starting from some values, the attempt is to pull back some principles.
From my understanding, principles imply values: the moral must emerge from the principles. To do so, one way3 is to consider that the seed of a right is an obligation. Alone in the universe, I still have obligations (duties) but there is no right. My obligation toward you grants you a right, and it does not read: because you have a right then I look after an obligation. That’s the idea: alone in the universe and maybe programming, I would still strive to apply for myself the same principles (obligations). Even alone in the universe, the humanist project still sounds.
The heart of GNU is its GNU Manifesto! This post is a call to revisit this initial manifesto from 1985-87; especially section “Why I Must Write GNU”. What is pulsing the whole collection of GNU projects is the implicit principles outlined in this GNU Manifesto; well that’s what I believe. I think this GNU manifesto needs to be deeply reshaped, refreshed based on tradition and heritage.
Principles
What are these principles? I do not know for you. What I sketch for me looks like:
- Being benevolent.
- Being autonomous.
Well, that’s general principles which say all and nothing in the same time. Sure! These principles must translate into concrete measures if applied to a project, for example:
- Have an actionable Code of Conduct.
- Have transparent decision-making process.
- Documentation and manual are more important than features.
- Translate as much as possible.
- Emphasize equity by helping other to make their own progress.
- Rely only on software that I run as I wish for any purpose and that I study and/or change as I wish.
- Refuse to negociate with software that I cannot (or not allowed to) study and/or modify and/or share copies (modified or not).
- Accept to negociate with software that I cannot study and/or modify and/or share copies only if I can then distribute software that I can study, modify and share copies (modified or not).
- The bootstrap of the program is more important than features.
- Craft my own solution if I do not feel autonomous with the others.
Principles do not hold in Court, thus obviously these obligations are then translated into rights via licenses. The key point is, in my humble opinion, a moral (ethics) naturally emerges from these principles or concrete measures. These principles and concrete measures make GNU different from any other Open Source project using good ol’ GPL or friend licences.
The principles (and concrete measures) make GNU: this frame makes obvious the moral and the legal, it makes trivial the difference between GNU and Free Software compared to Open Source projects. Instead of an aposteriori ethics applied on the top of the rights (license), this frame bootstraps the rights (license) using the principles as seed. It is the principles that glue the collection of all GNU projects; the principles make GNU as an humanist project.
Organization
My view is very simple: each project mutually recognizes that the concrete measures of the other projects follow the same principles. We could imagine that the collection of projects agree on a common set of concrete measures. Let name ’social contract’ a set of concrete measures. And we could name the common set of concrete measures (’social contract’) the GNU Social Contract.
Then, each project might amend, add or remove some concrete measures and thus establish another ’social contract’; ’social contract’ that then needs to be recognized by the other projects. It is up to each project to implement their ’social contract’ the way they want or wish. And somehow, other projects have an eye on such implemetation.
The agreement between all projects might be based on consensus. Or on a more or less complex system based on vote. The key point here is to mainly (and only?) focus on why we (as various projects) want to be under the same umbrella; it excludes picky discussions about our differences. Or better worded: mutual agreement must reinforce the common principles and concrete measures ('social contract'). If we (as various projects) cannot resolve or let aside our differences, then why do we want to be under the same banner?
Next steps?
The first step seems to discuss if the current collection of GNU projects want to save the GNU project or if they prefer let it go as a wonderful story in the Great History. Well, I am not sure where this might be discussed. Or even whether the current GNU community is able to have a sane and constructive discussion on the future of GNU.
The second step would to agree on principles and what they mean. At this point, it answers the first step.
The third step would to draft a common set of concrete measures (’social contract’). Somehow, each current GNU projects lists a set of obligations they consider crux and core. Then, depending on what is emerging, the agreement of this common ’social contract’ starts.
When the future is sombre, let dream… it’s free!
PS: I am aware this might appear as some naive ideas. But, at some point, any humanist project looks as naive ideas, no? It is not because the ideal is unreachable that one stops to try to live with it; it is perhaps by trying again and again to live with this ideal that it might make this ideal possible.
Footnotes:
Look, MIT/GNU Scheme and GNU Guile are both implementations of the Scheme programming language. Yet another historical reason, I guess.
GNU Assembly Social Contrat 1.0 does the same mistake, in my humble opinion.
See The Needs for Roots, Simone Weil. (PDF)