I’ve been giving the issue of the source code licenses quite a bit of thought recently (I just moved that thread from the private Staff forum to here after asking Mark’s permission).
As you may know, I’ve been burned by licensing issues before (see The Pulse Story).
In a nutshell, for Heartbeat, we need a license that:
-
Protects the freedom of the source & nurtures the commons (so that the source cannot be closed off later). This is basically what the AGPL provides.
-
Allows us to post the binaries on the App Store (we could still do this under the AGPL for code that we wrote and thus have the copyright for)
-
Allows us to merge back the contributions of the community and still be able to post the binaries on the App Store. This, we cannot do on the AGPL.
The role of ‘Keeper of the Commons’
Ind.ie, as the organisation that originated Heartbeat and as the organisation whose social mission it is to keep nurturing it, has the role of Keeper of the Commons. While others may use Heartbeat and Waystone, and improve it in the process, it is not the primary social mission of any other organisation to nurture it. As Heartbeat is being released into the commons as free (as in freedom) software, it is only fair that Ind.ie, as the Keeper of the Commons, can use any contributions made back into the commons.
The AGPL, while otherwise entirely fit for purpose, locks us out of merging back community contributions into the binaries that we want to host on the App Store. As such, we can’t use the AGPL as-is.
Why is the App Store important?
A core tenet of independent technology is usability and accessibility (in all of its meanings). We must build free (as in freedom) technology that can compete on experience / convenience. On the Mac (and iOS) platforms, the primary means that regular people get applications is through the App Store. To compete on experience, we must support it.
Free software licenses in an app store world
We may not like what app stores stand for (DRM, etc.) but, at this point, we must accept that they are a fact of life. We have two choices:
- Either we reject them outright, keep free software off of app stores, and expect Apple, etc., to come running to us because the lack of free software is crippling their very existence, or
- Be pragmatic about it and see app stores as a publishing / distribution channel for reaching our target audience (everyday people who use technology an an everyday thing).
Needless to say, I favour the second.
Evolving AGPL via an app store exception
So here are some initial thoughts on how to extend the AGPL via exceptions to do what we want. I’ve excepted these from the original thread:
I keep coming back to Mark Wilcox’s idea for a license that simply takes an existing FSF license and adds an app store exception to it.
I think this covers what we need without complicating things.
The AGPL (for Heartbeat) is a great base and expresses the core intent (protecting the freedom of the software). The only problem for us is not being able to release it on the app store. So we add an exception.
This is Mark’s original suggestion:
GPLv3 with unmodified app store binary distribution exception.
This source code is licensed under the GNU GPLv3 with an exception to allow distribution on public app stores. You can submit a binary built from a GPL licensed version of the source code, which has been published publicly online, to a public app store for distribution. The app store owner and/or operator can process that binary in their standard way (including internal distributions, re-packaging and even adding DRM mechanisms) and distribute it via their app store without complying with the terms of the GNU GPLv3.
For the avoidance of doubt, no other exceptions to the standard terms of the GPLv3 are granted by this license and the app store owner and/or operator gets no additional rights to use the project in source code form.
I would further refine it to take the AGPL as the base and to explicitly give the original authors — the keepers of the commons — the right to precedence if different versions of the app are submitted by different parties and fall foul of duplicate content rules on certain app stores (like Apple’s):
(The bits I’ve added to Mark’s version are in boldface. I also added a link to the GNU license on first mention.)
Ind.ie Commons License (ICL)
(GNU AGPLv3 license with unmodified app store binary distribution exception.)
Copyright © < year > < author(s) >
This source code is licensed under the GNU AGPLv3 with an exception to allow distribution on public app stores. You can submit a binary built from an AGPL licensed version of the source code, which has been published publicly online, to a public app store for distribution. You must, however, mention that the source code is available under the ICL and provide a link to the source code or describe how the source code may be obtained in your binary’s app description on the app store. The app store owner and/or operator can process that binary in their standard way (including internal distributions, re-packaging and even adding DRM mechanisms) and distribute it via their app store without complying with the terms of the GNU AGPLv3.
[Name of Organisation] is The Keeper of the Commons for this product. It is our primary social mission to develop and maintain this product for the general good. Furthermore, distribution on app stores is a primary means of reaching our audience. While you are free to distribute versions of this product on app stores yourself, if there is a conflict with the original version due to app store rules that forbid the hosting of duplicate content, you hereby accept that the original version by The Keeper of the Commons, above, will get precedence. This is to protect The Keeper of the Commons from being locked out of the app store by third parties that do not have the same primary social mission.
For the avoidance of doubt, no other exceptions to the standard terms of the GNU AGPLv3 license are granted by this license and the app store owner and/or operator gets no additional rights to use the project in source code form.
Ind.ie Framework License (IFL)
(GNU LGPLv3 license with unmodified app store binary distribution exception.)
Copyright © < year > < author(s) >
This source code is licensed under the GNU LGPLv3 with an exception to allow distribution on public app stores. You can submit a binary built from an LGPL licensed version of the source code, which has been published publicly online, to a public app store for distribution. You must, however, mention that the source code is available under the IFL and provide a link to the source code or describe how the source code may be obtained in your binary’s app description on the app store. The app store owner and/or operator can process that binary in their standard way (including internal distributions, re-packaging and even adding DRM mechanisms) and distribute it via their app store without complying with the terms of the GNU LGPLv3.
For the avoidance of doubt, no other exceptions to the standard terms of the GNU LGPLv3 license are granted by this license and the app store owner and/or operator gets no additional rights to use the project in source code form.
As I mentioned in the original thread, I’m talking to Richard Stallman about this and he’s already run it past the lawyers at FSF and things are looking promising.
I am not sure, however, about whether such an exception would have any binding whatsoever given the following stipulation in Clause 7 of the AGPL:
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it.
I read this to mean that our exceptions can easily be stripped and future changes contributed under plain vanilla AGPL (thereby rendering all this effort moot).
This also got me thinking about how broken software licenses are today. Specifically, that many developers do not actually understand them and make arbitrary choices that may or may not actually express their intent. So I’m writing up some thoughts about how we might take this opportunity to try and fix this by taking an approach similar to Creative Commons. Good code is easy understand, extend, and compose. Why shouldn’t our licenses have similar qualities. Isn’t it ridiculous that we can write code and make software and yet not fully grok the legal code that governs the use of our software or get caught out by obscure idiosyncracies?
I feel we need to move towards licenses made up of standardised blocks that we can easily compose to express our intent. Indie Commons Licenses, if you will.
But that is the topic of a future post as I need to get back to coding now.
I’ll keep you updated on how the current licences are progressing. And, like everything else, this is all very pre-alpha. I fully expect us to iterate and evolve it along with everything else. That’s how we do things around here. 