At the annual GUADEC conference, the meeting of the Gnome developers, some rather interesting statistics were released. These statistics were meant to answer some important questions and provide insight into how the community worked, namely:
- How big is Gnome?
- How many paid developers are there?
- Who writes all of this software and why?
But I’m not sure they had that particular effect.
As part of that report, a discrepancy in the number of contributions made by Red Hat – the packagers of the largest Linux server distribution – and Canonical – the packagers of the largest Linux desktop distribution — was discovered. And it isn’t a small discrepancy, either:
- During the past few years, Red Hat made 70,790 commits to the Gnome project. This accounted for 16.3% of all contributions.
- In the same time period, Canonical made 4487 commits, accounting for 1.03% of all contributions.
- This means that, despite its position as the number one desktop distribution, contributions from Red Hat outnumber those from Canonical by more than 16 times.
This is an explosive finding and has lead to some miscellaneous ugliness.
According to Red Hat, Ubuntu is riding its coattails. They’re taking advantage of the work of other companies. According to Ubuntu, Red Hat is engaged in tribalism that puts it in the company of racists, misogynists and others. (Yes, I’m oversimplifying and removing the niceties of urbane disagreement.)
This happens from time to time. Open source is filled with passionate people who wish to change the world through technology. They feel strongly about their work and when disagreements invariably arise, they quite often erupt into bouts of temporary ugliness. But even though such explosions flare frequency (and are just as quickly forgotten), trying to understand what causes them is important; and that’s particularly true in this case.
Before I go further, though, I want to clear up one thing. There is no doubt that Ubuntu is an important project and asset:
- For starters, they’ve created an entire collaboration ecosystem used by many, including me. Bazaar is my distributed version control system of choice, and I love Launchpad.
- Second, they’ve changed the dynamics of how open source is released. Many projects have seen the wisdom in a regular, planned cycle. It provides a degree of consistency between projects that enables collaboration.
- Finally, Ubuntu has created a robust design culture on the Linux desktop. People are talking about user experience, simplicity and elegance; and they actually mean it! You can go to Open Source conferences and attend excellent workshops on UI design and aesthetics taught by knowledgeable experts.
All three are major contributions.
But even though Ubuntu is a good open source citizen, the people at Red Hat make an important point. The fact that Red Hat contributes 16 times more code than Ubuntu to Gnome is a problem. It’s a really, really big problem, actually; and the whole situation is significantly more complicated than Mark Shuttleworth’s response would have you believe.
One of the cornerstones of open source development is collaboration and sharing. Certainly, there is competition, but there comes a point when our best ideas get incorporated into the work of others. It’s an indicator that our work is effective.
The same dynamic exists in academic research. One of the most important metrics of efficacy is how frequently your work is cited. You can be the most prolific researcher/writer in a discipline, but if you’re work isn’t being read and used, it means absolutely nothing. Some of the greatest scientific minds of the ages (Newton, Einstein, Galileo) produced a bare handful of formal publications (by modern standards, they might not have achieved tenure); yet, their contributions enabled the birth of entire disciplines.
The significant imbalance between code contributions show that Ubuntu’s ideas aren’t propagating. It’s like an academic whose work isn’t being cited. Maybe they’ve written hundreds of papers, but if others aren’t seeing them, what’s the point?
This isn’t to say that Ubuntu is getting overlooked. Of course Ubuntu has some excellent ideas and people are starting to use them. For example, just look at the similarities between these two screenshots. The first shows Unity, a new shell for netbook computers that is being developed by Canonical. The second shows some of the most recent mock-ups for Gnome Shell, the next generation UI for the Gnome desktop.
Clearly, both groups of developers are watching the work of the others. But even though Canonical’s work is having an impact, that doesn’t mean it’s propagating. Quite often, in fact, it isn’t getting used outside of Ubuntu.
For example, even though both Unity and Gnome Shell seek to serve the same audience and address the same need, the developers of both are perfectly content to work in isolation. Some are even taking potshots at their “competition.” There is talk about who is copying whom, and how people inhibiting innovation.
Of course such talk is ridiculous. Open Source, projects routinely steal each others’ best ideas. If they choose, they’re even allowed to steal the code. It’s one of the core software freedoms guaranteed by the GPL and similar licenses. Moreover, such cross-pollination is a good thing. It shows that the work is both getting noticed, and that it is high quality.
So, what, exactly is the problem here? Why are two of the largest open source companies at each others’ throats? Why does a prominent Red Hat employee clearly resent Ubuntu? What is going on?
In his response, I think that Mark Shuttleworth partially describes the problem.
The resentment of Ubuntu is due to ideological difference. But whereas Shuttleworth labels it tribalism and declares it “the enemy within”, I don’t think that’s right. This particular tussle has little to do with formal affiliations (as Shuttleworth describes it, “where they work, which sports team they support, which Linux distribution they love”) and very much to do with distinctions born of culture.
Moreover, it’s been a long time coming.
Canonical is a difficult type of company to classify. Unlike Novell or Red Hat (IBM), which are traditional engineering firms, Canonical defies categorization. In a lot of ways, they’re very similar to Apple. They undertake engineering projects and create innovative solutions, but they don’t self-identify as engineers. If anything, they’re designers. (Whenever pressed about it, Mark Shuttleworth describes “design” as Ubuntu’s most important mission.)
Canonical also differs in their main focus. The business strategies of Novell or Red Hat are clear. They distribute server versions of Linux. They charge for consulting services. That’s how they make their money. Desktop Linux is a side-project. In contrast, Canonical has slated its reputation on desktop Linux. They’ve pledged to bring it to the masses and build a thriving system of services on top of it.
These are some very big differences and amount to significantly more than the traditional fan-boy smackdown. Sure, there’s people saying, “My distro is better than your distro!” But for the traditional fanboy, resistance crumbles when you start asking, “Why?” Here resistance isn’t crumbling, though, which provides evidence of a clash of culture.
In a cultural clash, both sides are motivated by careful and intelligent reasoning that happens to be in opposition to other side. In this case, Shuttleworth and Canonical see the world from a design perspective, and Red Hat see with the eyes of engineers; which means that they’re focusing on different things.
At the moment, Canonical is obsessed with the consistency, polish and elegance of the Gnome desktop. Moreover, most of their efforts are mostly aimed at simplification and refinement, not necessarily new features. (Think Ubuntu Software Store, 100 Paper Cuts, Ayatana. I know, I’m oversimplifying again.) In contrast, Red Hat is looking at the future. Their most significant efforts are about the next generation of Gnome.
Which is the root of the problem. Red Hat refuses to see Canonical’s contributions. They’re outside Red Hat’s region of interest, and for that reason, they do not exist.
So when a Red Hat engineer sees statistics showing that one company produces 16x the code of the other, that merely reinforces his existing worldview. Such narrow-mindedness is many things (short sighted, foolish, egotistical), but it isn’t tribalism. It’s the manifestation of a different set of core values and pleading for “mutual respect” isn’t going to make it go away. The matter isn’t helped any due to another another trait Canonical has inherited from the design world: independence and the need for control.
There is an assumption amongst designers so deep that it has become a force of nature:
Good design doesn’t happen by committee. Good design bears the indelible mark of a gifted individual. It’s consistent, internally cohesive and artistically beautiful.
You can see this principle on parade in many things that Canonical/Ubuntu does. For example:
In order to have the “freedom” to innovate, Ubuntu has moved much of its development to an environment they control: Launchpad. While this gives Ubuntu freedome, it also insulates them from the rest of the community.
Ubuntu has stated that the project is not a democracy, and design decisions aren’t up for debate. When Ubuntu moved the window controls from the right side of the window to the left side, it was met with a lot of resistance. Instead of reconciling the issues, debate was ended by dictum.
There are even groups inside the Ubuntu philosophical tent (though not necessarily the project) which view codebase forks in a favorable light. It gives new developers tremendous freedom to experiment without needing to compromise.
To an engineer, this type of behavior is infuriating.
Engineering, by its very nature, is about collaboration. Some of the very best engineering is done by committee. It causes the rough edges of specifications to get filed off and ensures that the resulting product will meet the needs of everyone. It’s created tech like ODF, CSS, HTML, and for that matter, Gnome.
But even though design by committee can be very effective, it isn’t always pretty. It requires politicking, lobbying for your position, getting riled, calling people names, and theatrics. It might even require that you compromise artistic vision.
These are not things that designers do well. Especially if ego gets involved.
Which seems to sum up this particular fight. Ubuntu has chosen not to compromise. After all, they aren’t a democracy.
But while Ubuntu might not be a democracy, the larger Linux community is. For that reason, Shuttleworth, Canonical and rest of us Ubuntites need to engage with it..
Which is also why the Gnome stats are so concerning. The fact that Ubuntu only contributes to 1% of the Gnome development shows a lack of engagement. It demonstrates that ideas aren’t propagating to a larger audience and in essence, the community (and I include myself in this) has built a magnificent echo chamber.
As a I mentioned earlier, there’s no doubt that the Ubuntu community is making serious contributions, but if that work stays internal, what’s the point? It doesn’t do much good. Certainly, some ideas are leaking out and conversations are happening. But it’s all on the periphery. Ideas have been cherry picked without understanding the context that gave rise to them, which is Bad.
I understand that working with upstream can be hard. It’s political with entrenched interests and egos; but it’s better than maintaining whole codebases in parallel (like we’re doing now). Upstream projects have a system to ensure their survival. Forks, on the other hand, usually do not. They die when they’re creators lose interest.
For that reason, Ubuntu should move as much code upstream as possible. Many other groups can do this – Novell, Red Hat, Sun, Fluendo Collabora, Intel, Lanedo, Nokia, Codethink Eazel, and Litl – why can’t we?
Ubuntu’s focus on design is good. It’s been neglected on the Linux desktop for far too long. I am happy to see both Canonical and the larger Ubuntu community advocating for it. But far too much of that advocacy happens within the borders of Ubuntu-land. Additionally Ubuntu designers need to step up and contribute to upstream projects.
Perhaps upstream won’t accept contributions on the first submission. That’s been known to happen. But simply turning away and claiming that “code no longer talks” is the wrong response. Instead, Ubuntu should organize, lobby and adapt.
What would of happened to the Civil Rights Movement if they’d broken the first time they got drenched with fire hoses?
Eventually, riffed egos will heal and any fight between Canonical and Red Hat will be forgotten. After all, the whole thing is petty and stupid. But the discrepancy which gave it rise is still important and needs to be resolved. As a community, we (Ubuntu) should be asking some hard questions:
- Why aren’t our contributions being accepted?
- How can we adapt so that they are?
If we can’t do this, we risk becoming even more insular than we already are; and that would be Bad. Worse than bad, actually. It would mean that we’ve been ineffective.
Acknowledgements and Further Reading
Many of the illustrations in this blog post were taken from Dennis Estanislao and Sean Geret’s excellent talk at Mix2010: What Developers and Designers Don’t Get About One Another. The presentation slides can be found here.