Monday, September 16, 2013

Kirk McKusick, Software Licensing, Software Freedom, Freedom, and More Freedom

One of the keynote speakers at Ohio Linux Fest 2013 (this past weekend) was Kirk McKusick[1][2][3], best known for his long and deep involvement with BSD.  I have long been intrigued by the relationship between the Linux family and BSD family, partly because I simply can't figure it out.  Only recently, as I've come to think more about licensing, have I started to get it.  Users like or dislike this or that, but I realize now that the licensing issues at play are truly substantial.

There are dozens of Free Software licenses software developers can choose from but they fall into two basic types.  The one most associated with Linux is the copyleft type.  This family of license allows people to use the software for any purpose and in any way.  It makes the source code available to anyone.  The distinguishing feature of copyleft licenses is that they require new versions of the software, as well as additions and changes to the software, to be distributed in the same way and with no additional restrictions.  Such licenses include the GNU GPLv2 and GPLv3.

The licenses most closely associated
with BSD distributions are known as permissive Free Software licenses.  In fact, the term "BSD style license" is sometimes used to mean "permissive software license."  A permissive license allows people to use the software for any purpose and in any way.  It makes the source code available to anyone. New versions, additions and changes need not be distributed in the same way although they may be.  These licenses put such minimal restrictions on users, developers and people who might want to distribute the software that you could almost say that there are none.  In fact, I recently made that mistake.

I spoke with McKusick a couple of times this weekend at OLF 2013.  Once we were talking about licensing and I said something about the FreeBSD license having no restrictions to speak of and he corrected me.  The four paragraphs of the FreeBSD license communicate a couple of important conditions.  If you redistribute the software you can't remove the copyright statement that specifies the license.  Likewise, you can't remove the list of conditions.

That sounds pretty minimal, and it is, but it is also very important.  Although such licenses are referred to as "permissive" these two conditions do resist deception.  If you hang out with Libertarians you may hear the phrase "force and fraud" or "no force, no fraud."  The idea is that in a Libertarian utopia there would be two laws.  1) You may not force your neighbor to do anything 2) nor deceive them thus.

I'm reluctant to use the word, libertarian (or Libertarian), in this context both because it is widely misunderstood and because of its actual history with the philosophical ideas and personalities surrounding Free Software.  Reluctant or not, I'm not sure I can really say what I want to say without it.  Avoiding such words may even be part of the problem.  Maybe we shouldn't try to discuss Free Software without discussing freedom, which is what libertarianism, and anarchism[4], are about.

The classic criticism of permissive licensing by advocates of copyleft is that permissive licenses allow, and maybe even encourage, people to do the wrong thing.  I can take FreeBSD, modify it to run on some novel piece of hardware, sell them together, and never share my additions and changes with anybody.  So long as the copyright and condition statements are in tact on everything from FreeBSD I include with my product I have played by the rules and violated no license.

If I did the same thing with GPLv3 licensed software I would be in violation of the license.  Copyleft says that I am obligated to give back.  Permissive licensing asks me nicely to give back when and how I see fit.    Put another way, if I write software and license it under GPLv3 I require those who would make a new product with that software to share.  If I use a permissive license I only ask that they correctly represent honestly where it came from and under what (minimal) conditions.

It's easy to see how the "freedom" difference between the two licensing schemes could be a source of conflict.  It parallels one of the classic questions about the role of government, where you replace "government" with "software license."  On one side you call on government to get people to do the right thing, release their code.  On the other you encourage it but there is no formal mechanism to make it happen.

In the first case are we freer because we have a mechanism pushing people to free their code, or in the second case, where everyone is free to choose freedom, or not?

In McKusick's keynote address at OLF 2013 he said that the BSD way of doing things works.  He says that over the decades code has been released back into the system at the same rate in the BSD world as in Linux, even though there is no enforcement mechanism.  People, and companies, do it because it works better to be an active, contributing part of the community than to take from the community and guard what you create separately.

I'm honestly surprised.  I believe him, but I am surprised.  It is a pretty picture, though.  FreeBSD (the BSD McKusick primarily works with these days, and that he was primarily speaking about) lets companies do as they please with the FreeBSD code and they give back to the community at the same rate as companies using Linux.

Is this success peculiar to the FreeBSD community or does this say something larger about the people roaming Planet Earth?  I hope it says something about us.  I think it says something pretty dramatic about software freedom.  I'm not ready to take sides in the copyleft/permissive debate, but at the very least this means permissive licenses should not be dismissed as toothless in the pursuit of freedom.  Clearly they have their place.


[4] While we're being misunderstood, why not go all the way?

No comments: