Free vs. Open (feat. Hadoop)
I just had a minor epiphany.
I was scanning Twitter and someone mentioned Apache Hadoop. Suddenly I realized:
Apache Hadoop is not a Free Software project.
Hadoop may, in some technical/legal sense be Free Software, but I will now stick my neck out and repeat:
Apache Hadoop is not a Free Software project.
Wait, hold your fire, let me explain...
Sometimes it's easiest to identify a social movement by what it is not. Atheists are not religious. Pacifists are against violence. These explanations are clear and far easier to understand than a hypothetical list of all the things atheists or pacifists are.
Hadoop is Open Source. It is a cluster computing system which companies and scientists love, but individuals and consumers couldn't care less about. It is based on ideas made popular (invented?) by Google, but Google kept their code to themselves, so the Hadoop project was created to advance the state of the art and bring MapReduce to the rest of the industry.
To me, Hadoop is the perfect poster child for Open Source, but most of the Free Software movement won't care about it one bit. Thinking about why shines a strong light on the differences between the two movements.
Wait, who cares?
Why does this matter?
Well, although I'm sure most people don't care, us geeks can get really emotional about the difference between Free Software and Open Source. Violent, even.
Every geek has an opinion. But when asked to explain, we falter and wave our hands, "admitting" that there's really no difference, or spouting vague nonsense about pragmatism vs. idealism or even communism vs. capitalism.
I've always found this deeply unsatisfying. Because although I respect Open Source, I love Free Software.
So what is the difference? I propose the following definitions:
The Free Software Community writes and shares software with an explicit intent to safeguard the rights and freedoms of its users by eliminating antifeatures and natural monopolies.
The Open Source Community writes and shares software with an explicit intent to advance the state of the art of computing through open collaboration and publication.
Both are noble goals, members of both camps can stand proud. But when stated this way, they are also obviously different.
Hadoop fits perfectly into the latter category, but it does nothing at all for the former. If anything, it brings more antifeatures to the world and strengthens cloud-based monopolies by making deep data mining easier for all those people with their own personal datacenters.
Enough about Hadoop. Hadoop's cool.
What I want to talk about, is why I feel this is a useful way to explain these closely related movements. I think it helps me understand my community a tiny bit better, and I want to explain why.
Why can't we be friends?
Both the Open Source and Free Software movements use similar tools and licenses and there is a lot of overlap between them. Together they have built GNU/Linux, Firefox and many other wonderful things.
Most of the time they are allies - but not always.
I feel the definitions above shed light on why:
Free Software proponents often prefer licenses which restrict the freedom of the developer, in order to protect the end users from antifeatures and natural monopolies.
Open Source folks are focused on technical excellence and getting a job done. Talking about ideals and rights becomes a distraction at best.
Depending on the field, "advancing the state of the art" and "protecting users rights" may be fundamentally incompatible.
Free Software folks benefit greatly from Open Source, but their ideals and restrictive licenses make them ill equipped to reciprocate.
This last bullet in particular goes a long way towards explaining the animosity many Open Source advocates have shown the Free Software movement (Richard Stallman has borne the brunt of this). From their point of view, Free Software takes and takes, giving little back and adds insult to injury by passing moral judgement over those who don't live up to their lofty ideals.
Zealots (like me) are just so annoying! ;-)
But seriously, knowing where we differ can make it easier to "agree to disagree" and get on with all the things we do agree on. Which is probably most of them...
Everybody loves labeling things. Being able to pidgeonhole things into little boxes helps us feel like we understand them. This way of defining the two movements makes it really easy to do that sort of thing to various unsuspecting FLOSS projects.
- Free Software: GNU, Firefox, LibreOffice, VLC, PageKite
- Open Source: Apache, Android, Hadoop, Varnish, Linux
The first category includes mostly tools which are written for direct use by individuals or with an explicit "social intent".
The second includes software written to solve particular hard technical problems or "platforms" which provide the foundations upon which end user software is built.
This of course is just my opinion. You're welcome to invent your own classification scheme and pidgeonhole my software any time.
Choose your friends
As a techie, it's easy to read my definition and notice whether one or the other resonates more strongly. This in turn may help you choose your friends and decide which projects to contribute to.
This may also have implications for new software projects - it's easy for a developer to look at those two categories and decide which they want their project to focus on. That in turn will inform all manner of decisions, from choice of licenses to "branding" and advocacy.
It's also not a great stretch to expect projects to be more successful if they align themselves with the movement more interested in the problem they aim to solve.
As an extreme example, is entirely possible to imagine a successful Open Source project which is actively hostile towards the goals of the Free Software movement - an open DRM system would be a good example. Trying to create "GNU libdrm" would make no sense.
Conversely, the Open Source movement might not be very interested in "me too" projects which are merely providing an alternate solution to a well understood problem. But the Free Software folks would probably be very welcoming and supportive if there was no Freedom-focused project existing in that space.
Even though there are many things which unite us, and even though many of us belong to both categories, I think there are real differences between the Open Source and Free Software communities.
By highlighting them I don't mean to be divisive - quite the opposite. My hope is that by understanding our motivations better, we'll find it easier to get along, respect each others differences and work together.
Thanks for reading!
Please feel free to tell me what you think - I may end up converting this post into a talk or try to spread it more widely, so any and all feedback is very welcome.
Comments and follow-ups: