On the tyranny of defining “open source”
I am not a lawyer and therefore am possibly not qualified to discuss the legal
peculiars presented herein. Everything in this post is mere opinion and should
not be treated as legal or other advice.
Recently, there’s been a bit of a kerfuffle around Elasticsearch. It started by
them announcing that they’re relicensing the code under the
Server Side Public License, instead of the Apache 2.0 License it was
under beforehand. They have the full power to do this since contributions to
Elasticsearch were submitted under CLA that transferred their copyright to
Elasticsearch BV.
There are many who are vocal critics of the SSPL, the foremost being the Open
Source Initiative. The aforelinked post, however, argues that SSPL is
not open source on the basis of the OSD. Which, in fact, is not quite
true—the SSPL provides complete and total freedom to run software licensed
thereunder, provided that the infrastructure software is also made open
source. [1] This means that no freedoms are taken away; SSPL instead makes the
license “viral” the same way GPL is, except by extending the virality to
infrastructure software. In a way, SSPL is just GPL, [2] turned up to 11 and
adjusted for today’s SaaS-heavy world.
Now, sure, one could argue whether this “virality” isn’t actually a restriction
of use, for perhaps some software running inside your favourite SaaS is actually
proprietary and not owned by you, and therefore cannot be made open-source. I’ll
just have to defer to the precedent set by the Linux kernel
that’s been found in many, many consumer devices, especially wireless APs, and
which, no doubt, has had previously proprietary drivers attached that were made
open source by the virtue of the GPL. SSPL’s wording might also be in partial
conflict with OSD’s point 9, but software such as Elasticsearch isn’t really
“distributed along other software” so I believe it doesn’t apply either.
But this is not what I’m here to argue—I’ll defer to Kyle Mitchell, who is in
fact an actual lawyer and has hashed over the license
particulars already.
When I first learned about open source, it was in the context of freedom. It was
an ideal: the Four Essential Freedoms, the ability for anyone to use and hack on
any software anywhere. But this is a colloquialisation; in fact, “open source”
and “free software” (which I’ll hereafter call “libre software” to disambiguate
the “libre” and “gratis” meanings) are nowhere near synonyms, despite how
they’re often used.
Libre software, as espoused by the Free Software Foundation and Richard
Stallman, indeed is this ideal; it’s the antithesis of software ownership, and
the embodiment of the slogan that “information wants to be free,” if we were to
treat software as a form of information. And that one I still find a noble goal
to work towards, although itself not without its problems.
Open source, meanwhile, is a different beast entirely. I’ve heard it described
as watered down and more business friendly interpretation of libre software, and
over time it’s proving to be more and more true. [3] Note that the megacorps
that are in any measure engaged with the wider developer community always use
the term open source, and never (or very rarely) speak of libre software.
The fact is that there is a difference of intent. Libre software is a
philosophy that’s in staunch opposition to capitalism, and the vast majority of
these corporations operate in a capitalistic framework, by which it means that
their primary goal, at some level or another, is to make money. Most of the
actions of most corporations can be viewed through this lens: does this help us
make money or does this make it more difficult for us to make money? In this way
they are lawnmowers—they do not have empathy; they have only goals and
will work towards those goals within a certain framework.
Adhering to the principles of libre software would require these corporations to
give up the notion that software is their trade secret, and
instead give the software away. Unfortunately, that maps poorly onto the
software that is integrally important to these corporations, such as Google’s
monorepo, or Windows for Microsoft.
Open source, meanwhile, is less defined by ideology and more defined by utility.
Open source allows for a corporation to selectively choose what to share with
the world, how to share it, and usually place few restrictions on usage in
closed scenarios (which would be unthinkable for libre software—why would you
ever do anything with software that isn’t open!?) Yet at that, exactly what gets
open sourced is subject to deliberation, and the potential benefits and
drawbacks are weighed carefully.
For an example, let’s take Google. Both Kubernetes and Bazel grew out of
Google-internal projects, but they became open sourced. My speculation about the
reason for that is that this not only brings Google positive publicity, but also
attains them mindshare within the developer community. After all, Kubernetes has
become a de-facto standard for server software deployment, and that’s pretty
great for Google which continues to hire multiple
thousands of employees every year.
I suppose what I’m saying is that corporations don’t tend to make their software
open source on a whim or with the sole intention being goodwill; every release
is deliberated, and there is a reason why any one thing should or should not
become open source. I myself have fallen into the trap of reducing this process
down to a simple “they did it for the Greater Good,” which is not necessarily
singularly true. As with many things in tech, it’s more nuanced than that.
In this light, it is worth asking the question of whether open source is even a
worthy goal to strive towards for its own sake. Are you imparting value unto the
world by having your code be available to everyone? Are you
trying to smash the etairecracy by creating something that’s owned by the
community instead of a megacorporation? Or are you just doing it out of the
goodness of your heart, or because of your principles?
While I understand the heartbreak sentiment going on about it, I
fully respect the choice of Elasticsearch BV (and MongoDB folks, for that
matter) to relicense their software. The recent fights about what exactly is or
isn’t “open source” has left the term defined less precisely than it ever has
been, and therefore it’s no longer a label that has much value left on its own
behalf.
I believe that it’s better to just treat the license of any software on its own
terms. It is a list of rules, and what those rules prescribe needs not to fit
within some sort of framework. Whether it fits with the values of libre software
or with the Open Source Definition is good to know, but a license being “open
source” does not necessarily correspond to a useful set of values to be judged
by. After all, BSD and GPL represent polar opposites of the “FOSS” spectrum, and
grouping them under the same banner is kind of not particularly useful. [4]
Also, as a community, I feel like we tend to throw the term “FOSS” around
without considering whether it’s right to do so. Libre software and open source
software are fundamentally different; just because any project satisfies both
definitions doesn’t mean its values and goals align with either, and by that
measure we shouldn’t apply this label without merit and intention.