Copyright and EULAs

Prelude

I had intended this blog to be programming based, not copyright rant based, so I’m going to keep this entry short.  Rest assured, I will post something programming orientated soon, I just need the posts to percolate through my brain.

“That EULA is invalid, I’m not breaking the law”

This is a sentence I’ve heard many times now.  It’s often used to justify pirating a particular piece of software.  This entry is going to be based around showing why this is such a bogus argument.

What is Copyright

I’m going to discuss copyright in the western world here. There are several countries that I’m sure deviate from what I’m going to say in many interesting ways. It’s also important to note here that I am not a lawyer, and I may well be talking out of my ass, but that’s not going to stop me ranting :P.

Copyright is a right granted to the person who produces a work (and sometimes also to the subject). It allows them to decide how, and where that work is copied. They may chose to not allow anyone to ever copy the work, they may chose to give it away freely, or they may chose any in between.

They may chose their in between stage by issuing licenses to people. The license stipulates exactly who can copy a work, when, how, how often etc. I remind you, that the person giving the license owns the copyright on the work, and can chose to hand it out in any way shape or form they like – most countries will ban illegal contracts though, so there are some restrictions.

Illegal Contracts, and Invalid licenses

When a contract stipulates illegal terms, it may be ruled by a court that the contract is invalid. This is the bandwagon that I am referring to above. People will commonly claim “this license would be found invalid in a court, so I can copy freely”. But wait! Remember, the copyright holder still owns all the distribution rights. Your license to copy the work being invalid does not automatically make the work public domain. No, instead, all it means is that you now don’t have any claim what so ever to copy the work! Without that piece of paper saying “you may copy this work”, you may not copy it.

Conclusion

Don’t try to argue that your EULA is invalid! It’s counter productive, all you’re doing is reinforcing the fact that you have no right to copy the item. If you don’t like the terms of the EULA, approach whoever owns the copyright, and ask them for a different license.

Why the GPL is not free

Introduction

The Free Software Foundation [FSF1] touts the GPL[GNU1] as an all singing, all dancing defender of your freedoms. We are told that the GPL is at the heart of defending four freedoms:

  1. The freedom to run the program, for any purpose (freedom 0).
  2. The freedom to study how the program works, and adapt it to your needs (freedom 1). Access to the source code is a precondition for this.
  3. The freedom to redistribute copies so you can help your neighbor (freedom 2).
  4. The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits (freedom 3). Access to the source code is a precondition for this.

[GNU2]

I assert though that the GPL does not give us freedom, merely different restrictions.  I even assert that it does not give us all of the freedoms listed above.  In this post, I will argue that the GPL is inherently flawed when it comes to freeing software.

What did I write?

Allow me to take a detour before we begin.  I would like to investigate a related topic that is at the core of my argument, and that is the question of exactly what code you wrote.  Let us imagine a typical scenario – you are the author of a free, open source library.  The purpose of your library does not particularly matter, so lets say it encrypts widgets.  You pour your heart and soul into your library, and it becomes stable and fully featured.  This diagram represents the project as it stands:

You are proud of your project

You are proud of your project

So lets now suppose that a third party takes your code, and builds upon it.  We might represent this as such:

A large addition to your project

A small addition to your project

A large, and a small addition to your project

What’s important to realise here is that the amount of code you have written has not changed.  Even if the addition that the 3rd party writes simply wraps your library with a pretty GUI, the amount of code you have written has neither grown, nor shrunk.

What you license

Okay, so now let’s ask the question.  What relevance did that have?  Well, it helped clarify exactly what you are licensing when you attach the GPL to your code.  You are licensing your code, and only your code.  And yet, the GPL makes a restriction on the license for the derivative work.  Noting here, that the derivative work is wholy someone else’s work.

The most common argument I hear pushing the GPL is that with a weaker license (say, BSD[BSD1]), a third party can take your code, extend it, and close it.  So let’s think about what that means.  In order to close your code, they would have to have taken it, removed all open sources for it, and then rereleased it in a closed form.  But that doesn’t make any sense.  You’re still distributing your source code under a free and open source license, so how have they closed it?  They haven’t – your code has remained open source.  So then, what have they closed?  Well the answer is, their code, and only their code is closed source, and that’s fine – it’s their right to license their code in any way they like.

So the conclusion then, is that a company can come along, and take libWidgetCrypt and produce a thin wrapper around it, and start making an enormous profit by selling the result at $10,000.  Yes, that’s possible, but it’s also a rather unlikely scenario.  If all they’ve done is write a thin wrapper, then you, or someone else in the open source community is perfectly capable of making such a thin wrapper in no time at all.  Then all you need do is undercut them by $10,000, and a good chunk of freedom.

The more likely scenario though, is that a company may come along and take libWidgetCrypt and produce a large amount of other code that just happens to use your library at its core.  Then said company will sell their code, and their extensions for a large sum of money, and they are perfectly entitled to do so.  It is after all, their code.

Believe it or not, this scenario is even one which is beneficial to you.  Said company, is likely to find bugs in libWidgetCrypt, and fix them.  From my experience of such things happening, they more often than not, contribute their changes back to you when they make such fixes to your library, even though they’re not required to!  Yes it happens that they patch it and run with the patch, but again – they wrote the patch, they’re entitled to do that!

Where the GPL fails

I’ve now gone into detail a lot on exactly what you are licensing when you apply a GPL license to your code, but I haven’t looked at what I claimed I would show at the start of the blog.  I haven’t told you why the GPL is not a free license.  To do that, I’m going to concentrate on the last freedom that it claims to offer – “The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits (freedom 3).”  Suppose that I am a company, and I am building a product to release.  I would like to use your library in my program, I would even like to improve your library, and release the improvements to the public so that the whole community benefits.  Unfortunately, at the end of the day, I need to ship a product, so I’d like to keep the core of my project closed source.  Unfortunately, the GPL outlaws this kind of interaction.

So, we have a good citizen, a company that wants to release their patches to your library back to the community, and yet, the GPL is banning them from doing so!  It is not giving them freedom at all!  Instead, the GPL is a different set of restrictions.

It may be that you personally find the set of restrictions that the GPL offers more morally palatable than traditional closed source licenses, but it is not a free license.  It does not grant freedom, it grants different restrictions.

Conclusions

The GPL is not a free license, in that it restricts freedoms to only people it deems to be morally acceptable.  Often, there are people who do not fall inside this morally acceptable box, yet do really have good intentions.  Thus, the GPL is too restrictive for many projects.  Instead, it’s often a good idea to use a truly FOSS license, like for example the BSD license.  Doing so, will not make you vulnerable to companies magically making your code closed source, as you will continue to distribute it.  It may be that they will close a small addition to your code and attempt to sell it for vast amounts of money.  However, in that situation, you can just release the same minor change, and give it away totally freely too.

References:

[BSD1] http://www.opensource.org/licenses/bsd-license.php
[FSF1] http://www.fsf.org
[GNU1] http://www.gnu.org/copyleft/gpl.html
[GNU2] http://www.gnu.org/philosophy/free-sw.html