The NPL concept

So, now that I feel a bit more awake, I guess I can expand on the software licensing concept discussed earlier. The core idea could be summed up in one question : is it possible to combine the binary redistribution freedom that freeware licenses give with the collaborative open source model of the GPL family of licenses, in a package that is more convenient for users while retaining the core advantages of the original ?

What is good about the GPL ?

First, I have to ask myself why I use the GPL right now, and what I don’t like in it and would like to change if I were to write my own license. Let’s start with the former. The GPL family is built around two notions, the first one of which is that users of a program should be able to learn how it works, modify it, and release modified versions of it, through public disclosure of its complete source code by the program’s author. The second notion, called “copyleft” by the original license author Richard Stallman, is that people who use that knowledge to build new software should contribute back their work to the open source software community under the same conditions, as a payment for the service that said community has provided to them by releasing the source code.

And that’s it. In two simple sentences, I have summed up the interesting part of about 8 pages of boring legal terms. Of course, there is more to it, like provisions to ensure that people do not include submarine software patents in GPLd software, or a requirement that any external data that is necessary for software to work (like locked bootloader signing keys) are provided along the source code. But that is essentially an extension of the first notion of complete source code disclosure, since source code which cannot be used to build and distribute working software is pretty much useless.

Now, the second notion is the most distinctive feature of the GPL, and has attracted lots and lots of heated debate among programmers ever since the first public release of the GPL has been around. What makes it so interesting is that it challenges a core belief of our “occidental” societies, which is that unregulated competition in a free market is the best thing that can ever happen to man. The GPL, to the contrary, places the moral value of equality above that of freedom, and emphasizes collaboration between developers rather than the infinite pursuit of individual success through whatever means are required to reach that end. In that sense, it can be considered a “left-wing” license from a political point of view, and I am pretty confident that it has been accused of communism at least once on the American web for this very reason.

When you think of it though, cooperation is truly a huge driving force for mankind. It is the reason why we have large companies instead of lots of small shops like in the Middle Age, and the reason why these companies spontaneously tend to form oligopolies that agree on pricing, bribe officials, or legally help each other at the expense of their customers instead of just pleasing economists by competing without mercy with each other. As it turns out, competition without cooperation is just a lot less efficient for people who do it, no matter how much it could potentially benefit humanity as a whole if we are to believe free market advocates. But there is a bright side to it too, since without cooperation between large amounts of people, major achievements of mankind (such as the personal computer which you are reading this on) would also have never come to be.

What is not so good about the GPL ?

So, as you have probably guessed by now, I think that the GPL license does the right thing by enforcing cooperation between developers. The fact that software users are able to know what they are dealing with by checking the source code of their software, and to produce and release improved versions of it, is also unquestionably a good thing. So what is it that I do not like about this license in practice ? Well, two things basically : first its obfuscating complexity, and second how ridiculously difficult it is to enforce it in practice.

As I mentioned earlier, the GPL license is approximately 8 pages of formatted text long. Among open source software licenses, I believe that this is a record : most versions of the BSD and MIT licenses fit on less than a page of formatted text,  and the Apache software license, which takes more time to address issues like software patents and code ownership, only manages to reach about 3 pages in length by spending a full page of text explaining every single software development concept known to man in terms that lawyers can understand.

Sure, 8 pages is nothing as compared to Microsoft and Apple’s infamous magazine-sized EULAs, but it is still a lot to read, and the specificities of copyleft alone cannot justify this. What’s more, the GPL inflicts lots of software development concepts upon users of binary distributions of software released under it, even though most of them will never be bound by those terms, never look at the source of the software they use, nor even acknowledge that they have a right to do so due to the obfuscating length of that license agreement. I believe that this is a problem.

Another issue which I have with the GPL is the requirement set in its clause 5 that any GPL-licensed binary must be always provided with the associated source code, or at least an offer to distribute it. To better figure out what my problem with this is, consider the following situation : I have just gotten myself the portable edition of some wonderful piece of GPL-licensed software, which was distributed without source code for obvious download size reasons (though there was a link to said source on the website which I downloaded the software from, but I did not see it). I decide to share it with my friendly coworker Alice, by copying it to her USB pen drive. Guess what ? Simply doing so is a violation of the GPL. Seriously, GNU guys what kind of “free” software is that ?

In my opinion, it is not reasonable of developers to expect that every user of their software deal with the burden of redistributing source code if they did not alter it in any way. Setting this requirement does not bring much to the open-source community, except maybe data deduplication in the event where the original developer goes bust and his source code repository is lost. And since the GPL allows people who distribute GPL software to only transmit the source code distribution promise of the original software author, it does not even guarantee that. So it seems to me that such a requirement solely puts an unnecessary hurdle on users of GPLd software, and should as such be eliminated. Furthermore, if we follow this track to this logical conclusion, we could also distribute binary software under a much simpler license than the GPL, and leave complex license requirements to software developers who know what they mean and have the ressource necessary to deal with them. A situation which would be full of win, in my opinion.

What would be my vision of a better license ?

In the still hypothetical event where I would take my gripes with the GPL to their logical conclusion and release a competing license that addresses them, here’s what such a “Neolander Public License” (NPL, not a final name) would be about, in simple terms :

  • The NPL specifically applies to software source code. It may set a number of requirements on the licensing of binaries generated from said source code (e.g. to address the issue of reverse engineering, or require that credit be given to original developers where it’s due), but the bulk of said binary licensing terms are largely left at the software author’s option. A “Binary NPL” may be provided for the sake of offering a complete software licensing package to developers with simple needs, but it remains a separate license.
  • Developers are free to do use source code that is released under the NPL for pretty much any kind of private use, a few legal restrictions notwithstanding. But if they are to publicly release softwares based on modified NPL-licensed source code, then they also have to publicly distribute the modified source code under the terms of the NPL, and to add to each altered source file a copyright notice specifying that they have modified it, and when they have done so.
  • Legal protection against threats to the open-source software community, such as the DMCA, software patents, and locked bootloaders may also be taken into account by this license, after the severity of these threats has been taken into consideration to ensure that the benefits do not outweigh the licence bloat-up cost.

Of course, a real software license would require lots of clarifications and extra legalese in order to be legally binding, but I think that this pretty much sums up the spirit of the thing and that a reasonably short software license following those guidelines could be easily derived from the GPL and other existing open-source software licenses.

So, what would you think about that ? Do you think, like me, that it would be a worthwhile improvement over the GPL ? Or would it be unnecessary effort duplication in your opinion ? I would like to know your views on those matters before undertaking the effort of translating these wishful thoughts into legalese…

3 thoughts on “The NPL concept

  1. James M Long May 11, 2012 / 6:36 am

    I enjoyed reading your prospective on the GPL and an alternative to its complexity. I would like to see your thoughts on the Binary NPL and how it compares to the software version of the license. The only thing that concerns me is the third section ( Legal Protection ), this could greatly expand the size and complexity of the license and that may be counter to the overall spirit of what you have written so far.
    I think it would be a vast improvement over the GPL, which in my eye is unenforceable as it stands now and is way too complex for the issues that hand in our modern world of interconnected software and services.
    I conclusion, I would like to see more details into the license, including its Binary NPL companion. Great article, keep up the work, your ideas on software are always something I look forward to reading… and maybe one day I will be using one or more of the products derived from the ideas you have posted on this site.

  2. Hadrien May 13, 2012 / 10:31 pm

    I enjoyed reading your prospective on the GPL and an alternative to its complexity. I would like to see your thoughts on the Binary NPL and how it compares to the software version of the license.

    Well, since concepts such as copyleft only make sense for source releases, a Binary NPL could be something much simpler, solely focusing on the fair redistribution of binaries. To avoid legal loopholes, it would have to include the requirement that any form of human-readable source code derived from a binary be distributed under the terms of the Source-NPL, but this is it.

    So in the end, BinNPL could state that software can be freely used and redistributed under the requirements that

    1. Credit be given to the original software authors.
    2. Any form of human-readable source code that may be extracted from binary distributions be used and licensed under the terms of the NPL.
    3. Usual freeware warranty disclaimer stuff is respected.

    The only thing that concerns me is the third section ( Legal Protection ), this could greatly expand the size and complexity of the license and that may be counter to the overall spirit of what you have written so far.

    Indeed. I wish there was a concise way to state in legalese that source code must be contributed back in a state where it is usable by everyone, and that by the act of releasing source code under the NPL, developers implicitly give up on any legal provision that would prevent this from happening. But otherwise, extreme care must be taken as for what gets included, in order to avoid uncontrolled license bloat-up.

    PS : Also, note that the “NPL” name is not necessarily final. I just needed a way to put a name on this thing while I work on it. The final result could use something else than my internet nick as its basis, such as the name of this project (TOSPL ? :))

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s