28 comments

[ 7.8 ms ] story [ 81.5 ms ] thread
> I prefer to think of the distinction in this way: permissive licenses provide the maximum freedom for downstream developers (including the ability to use the open source code in a closed source project), whereas copyleft licenses provide the maximum freedom for downstream users.

This is a common analogy but it never sits well with me. Really, the permissive licenses allow the code to show up in places that copyleft licenses would not allow it. There are a ton of open source projects used in Microsoft Windows or iOS thanks to their permissive licensing -- and neither Microsoft nor Apple are legally obliged to give anything back.

Copyleft licenses prevent the software from being forked into a proprietary program and the changes hidden from the user. To take a random example, if Microsoft took GNU gzip and included it with Windows, and then extended it with new features, Microsoft would be obliged to provide the source code to those changes. If they took OpenBSD's implementation instead, they wouldn't be obliged in the same way (though they still _could_).

Remaining entirely in the open source world, these licenses concern redistribution of software. A user on OpenBSD does not feel they have any less freedom than a user on GNU/Linux. They don't have any less freedom, after all. Users on both systems retain the full gamut of freedom. To run for any purpose, to study the source code, to modify the source code, to redistribute the software verbatim or modified. The difference shows up when it comes to this: Do you want to be an asshole? OpenBSD permits the option -- you can distribute a fork without the source code. You cannot do that with a GPL-licensed system.

The FSF and other GPL advocates usually ride on the premise that opening up the possibility for downstreams to be assholes is bad, with few exceptions. I do respect their opinions, but I feel like the history of open source (and the *BSDs, even) show that such assholes don't get very far. They simply cannot compete with the pace of open and transparent development and die off on their own. Frankly, being an asshole is an irrational and unprofitable (socially and commercially) move, and trying to nanny the behavior away isn't all that necessary.

You're comparing users of OpenBSD to users of GNU/Linux, but why not compare both of them to users of Windows and OS X? Why is FLOSS software pitted against each other, instead of FLOSS software against proprietary and closed source software?
I'm sorry, I didn't mean to pit them against each other, just pointing out that users of either system enjoy the same freedoms regardless of the license choices. :-)

Windows, OS X, iOS, and all other proprietary systems do, in fact, restrict users and objectively have fewer freedoms than free ones.

And there is, or was, BSD code in both Windows and OSX, some of which was locked off in proprietary parts.

OSX also contains some GPLed code, all of which is available to the user under righteous free software terms (as is at least some of their permissive-licensed code).

The problem that Stallman and the FSF complain about isn't the relative freedom of the users of OpenBSD and GNU/Linux, but what happens to the freedoms of users who are further downstream.

There's not a small number of cases where people's work was coopted to create successful proprietary software. JunOS is closed-source and based on FreeBSD - the PS4's OS similarly so. When I went scrolling through an old iPod's copyright page, there's an incredible amount of MIT/BSD-licensed software in there. And so on and so forth.
> Really, the permissive licenses allow the code to show up in places that copyleft licenses would not allow it. There are a ton of open source projects used in Microsoft Windows or iOS thanks to their permissive licensing -- and neither Microsoft nor Apple are legally obliged to give anything back.

This whole sentence is backwards isn't it? A libre license does not restrict code from being used by Microsoft or Apple, it is those companies that restrict their developers from using libre licensed code. The license doesn't care who uses it. Apple used the GCC project as their primary compiler for many years, contributing objective-c to it.

Copyleft licenses are more about the freedom of users in the future, instead of now. If all software was mit/bsd licensed, there wouldn't be any need for gpl as anyone could modify and redistribute any piece of software freely. Gpl is intended to force us toward that state in the future.
> I feel like the history of open source (and the BSDs, even) show that such assholes don't get very far.

Some versions of the SONY PlayStations are based on FreeBSD. The users of said PlayStations don't have any software freedom because the entire OS is proprietary. Assholes like this do exist, and if FreeBSD (and the other BSDs) were copylefted this wouldn't have happened.

There are other examples (essentially any example of a company using BSD as the basis for their OS), but the point is pretty clear IMO.

Those who wish to learn more about copyleft after reading Ben's article may also want to look at the copyleft guide https://copyleft.org/guide for more information.

Ben is a contributor to the copyleft guide, so we'll likely merge in his article into the Guide.

Can you make money writing and selling copyleft-licensed software? The licenses always appeared to me to make that difficult. I write one, sell it, and the purchaser can now give it away for free. But I probably just don't understand it.
The same argument is true for any free software. If you sell free software, then the purchaser necessarily must have the freedom to distribute said software. So copyleft hasn't changed anything in that regard.

And there are several companies that sell free (and even copylefted) software. SUSE and RedHat are the prime examples -- the way it works is that you sell support licenses. So if they want to get L3 support for a bug they found (or want you to work on a new feature) they have to pay you. It's a fairly simple model (though more complicated than the standard proprietary model of "my binaries are holy and you must pay me for them" -- which I always found to make no sense because software isn't a real thing).

I was really asking a question, but I think I understand your answer. I can see where there is a business case for it, but also the other.

As an example from another field, my architect drew up plans for my house. I'm only allowed to use those plans for that house. I can't build another house just like it, and I can't sell the plans to somebody else.

His expertise and hard work went into making the plans. It's no more "real" than a print-out of a program. Yet it would be very hard for him to make a living if other architects could just take his plans and use them.

And the idea of selling giving the program away for free but charging to fix the errors may not be the best for all cases.

I can see the case for copyleft, but I don't think it's the only case. (Not that you said it was- in fact, I've heard some people say something like that but not too many.)

> I can't build another house just like it, and I can't sell the plans to somebody else.

That wouldn't be considered "free software" if house designs were the same as software. But they aren't -- software serves a functional purpose and is something you use constantly throughout your life. House plans are essentially used once to build your house and that's about it. Though of course you could argue that an architect could have a business model that allows for their clients to resell the plans (by selling customisations to plans or creating new plans for each customer).

> Yet it would be very hard for him to make a living if other architects could just take his plans and use them.

It would also be hard for "users" of the plans to be able to ask for another architect's opinion on the plans. Or to say "this architect is not doing as I say, I will take these plans to someone else who can help me better".

> And the idea of selling giving the program away for free but charging to fix the errors may not be the best for all cases.

You can also sell improvements or features. In fact, you can get contract work with people paying you to implement features in $freeSoftwareProject. Sure, it's not a very common model but it does exist.

> but I don't think it's the only case.

It's not the only case, but as a developer it's the case I always aim for. Licensing something under a lax license is generally a tactical move (it would be a greater benefit if this wasn't copylefted), but I personally will always opt for copyleft because then I can guarantee that the eventual users of my software will have freedom.

> His expertise and hard work went into making the plans. It's no more "real" than a print-out of a program. Yet it would be very hard for him to make a living if other architects could just take his plans and use them.

That analogy doesn't totally work with software though. There aren't (for-profit) companies that focus solely on architecture without building software.

It's more like if the architect also owned a construction firm and posted the plans for free on their website with a notice like "ConstructionCo provides these plans free of charge and AS-IS for use when building your own home. If you are looking for a team to build one of these plans, please consider contacting ConstructionCo as we have years of experience with these specific housing plans, and can offer you a warranty and home-insurance as part of a package. If you like these plans, but want modifications to the design, ConstructionCo can gladly accommodate you for a price."

Excellent. But the problem here is you don't have the 'construct the home' step in using software. You can (let's say) take the specs and 3d-print it. You only need to hire the firm for changes and bug-fixes, and, even then, if you wanted something unique you're out of luck because you have to give away your uniqueness.

Maybe a better analogy would be writing songs. If you weren't allowed to copyright songs but only performances, then those who simply wrote songs would be out of luck, because those who could perform them better but couldn't write as well would simply take their work.

Or if a writer couldn't copyright her book but only her readings of it.

Discussions of copyleft versus permissive licensing always seem to cover the same “freedom for users versus freedom for developers” clichés and the same tired slavery metaphors.

My dislike of copyleft is emphatically not because I want to enable proprietary software. I hate proprietary software, and don’t use it on my machines.

No, my biggest complaint about copyleft has always been that it prevents other free software from being able to use it. Copyleft licenses actively lead to incompatibility.

Remember when LibreDWG, an AutoCAD file parser, couldn’t be used in various free software CAD projects, because LibreDWG is GPLv3+ and FreeCAD, etc were GPLv2 only? http://libregraphicsworld.org/blog/entry/libredwg-drama-the-...

If FreeCAD had been under a permissive license, it would have been able to link against LibreDWG. If LibreDWG had been under a permissive license, FreeCAD would have been able to link against it. If they were both under a permissive license, they would have been able to be linked together and share code directly!

How about when NYC released open building and address data? A laudable move, one that helped several open source projects, the largest probably being OpenStreetMap. OpenStreetMap is under a copyleft license, and though they benefit from NYC’s data, due to the licensing NYC can’t make use of OpenStreetMap’s improvements without a convoluted parallel construction scheme: https://www.openstreetmap.org/user/lxbarth/diary/23588

A common response is that the onus is on NYC to release their data under a copyleft license so they can benefit. But there are often significant (even legislative!) barriers to doing that, especially in the United States where government entities are often required to release data to the public domain. How about changing that legislation? Well, if you had initiated such a legislative reform just a few years ago OSM would have been under the Creative Commons BY-SA—which is incompatible with OSM’s current license, the ODbL.

Remember how much grief has resulted from the unclear (or perhaps too clear) licensing status of ZFS on Linux?

Releasing software and data under the freest, most permissive license possible prevents such a thing from ever happening. I would rather allow a hundred Chinese featurephone vendors to lock down their crappy derivatives of my code than use my copyright to prevent a free software project from using my code in good faith.

I view it as a personal choice for what you find important. Personally, I would prefer that my software not be used rather than it be used in a way that takes away users' freedom. You clearly think differently and are entitled to think differently.

Maybe you might consider using the MPLv2? It's a weak copyleft license that allows sub-licensing to other copyleft licenses (and inclusion into lax licensed projects without re-licensing the original project). Unfortunately, it suffers from not being strong enough to cover a "derived work" and only effectively copylefts files. But IMO that's better than nothing.

> Personally, I would prefer that my software not be used rather than it be used in a way that takes away users' freedom.

But by releasing my library under a free license that’s incompatible with someone else’s free license, I drastically restrict the ability of people to use my software.

This isn’t an academic limitation—this has a real impact in the real world. Just ask any packager who’s had to deal with “GPLv2 only” versus “GPLv3 or later” incompatibilities. Much free software cannot use the functionality provided by my free library.

I’m not talking about the right to redistribute proprietary derivatives here. I’m talking about that most fundamental of software freedoms, freedom 0: the freedom to run the program as you wish, for any purpose.

> I drastically restrict the ability of people to use my software.

There are no restrictions on usage in any free software license. There are restrictions on distribution of modified versions in the GPL. So you're only restricting the ability of developers to use some code that you've written to make a new program. Is this suboptimal? Yes. Is it necessary? Yes. Any other method of licensing would allow for proprietary forks to be made from your software. Whether you agree that is a problem or not is besides the point -- the purpose of copyleft is to make it impossible for proprietary software developers to create proprietary versions of the software. Unfortunately in reality it happens to also disadvantage some free software developers.

There are (soft) solutions to this: always use GPLvX-or-later to future-proof your licensing choices, encourage others to do the same.

> I’m talking about that most fundamental of software freedoms, freedom 0: the freedom to run the program as you wish, for any purpose.

Users are not encumbered by any of the GPL requirements. If a user just wants to use a program (or give copies to people), they will never encounter license incompatibility. Developers are the only people who have to worry about this, and I would argue "the 'freedom' to create new software under a different license" is more of a privilege than a right. Is it important? Yes. Is it as important as (or more important than) preventing proprietary forks? I don't think so.

> There are (soft) solutions to this: always use GPLvX-or-later to future-proof your licensing choices, encourage others to do the same.

How is this a “solution” to disadvantaging free software developers? LibreDWG was licensed GPLv3-or-later and it didn’t help FreeCAD one bit. If Linux had been licensed GPLv2-or-later it would not have improved the ZFS situation at all. There are many existing codebases under many free licenses out there; new software under any GPL version often cannot be incorporated in those projects, but new permissively licensed software can.

> Users are not encumbered by any of the GPL requirements. … Developers are the only people who have to worry about this…

“Users,” as you call them, are certainly indirectly encumbered. When LibreDWG provides DWG file parsing, but is licensed in such a way that FreeCAD cannot use it, users cannot use it.

And I strongly dispute the distinction that you make. The Free Software Definition doesn’t divide people into groups of “users” and “developers, who are not users.” Someone who links software against a library is just as much a user of that library as someone who runs the code indirectly through LibreOffice. When complicated licenses proliferate and decrease compatibility, it prevents free software from being incorporated with free software. That certainly violates the spirit of freedoms 2 and 3.

> LibreDWG was licensed GPLv3-or-later and it didn’t help FreeCAD one bit.

The problem is that FreeCAD isn't licensed under GPLv2-or-later. But LibreDWG's code can be used under a GPLv4 (when it comes out) license, so at least you don't have two cases of this problem.

> it would not have improved the ZFS situation at all.

Yes, because Sun intentionally created a GPL-incompatible license and Oracle continues to perpetuate that. What's really troubling is that the Sun folks take it as a point of pride that their license is GPL-incompatible and don't consider it to have been a mistake.

> When LibreDWG provides DWG file parsing, but is licensed in such a way that FreeCAD cannot use it, users cannot use it.

If we're going to play the "theoretical software that might've been written" game, then I could argue that not copylefting your software also indirectly encumbers users because the users' friends may start using a proprietary version of a free software program that is incompatible.

> The Free Software Definition doesn’t divide people into groups of “users” and “developers, who are not users."

Developers are users. And developers have the same set of freedoms as users. However, there are certain privileges that developers can also have that don't make sense to users -- those privileges are not essential freedoms under the Free Software Definition. "The right to create a fork under another license" does not appear in the Free Software Definition, no matter how you try to twist it. Developers are allowed to link software against a library under a free license, they just have to follow the license rules. Now, if they (or other developers) have made license choices that restrict them in that department it's not the fault of the license. Is it a shame when that happens? Absolutely. But talking about how lax licenses solve all of these problems (while dismissing the downsides) is just being disingenuous. We have a perfect case study of copyleft working -- the Oracle proprietarisation of OpenSolaris. Had OpenSolaris been under a lax license, Oracle would probably still own the technical talent for Solaris (and it would have become a large proprietary software machine). That didn't happen because of copyleft.

> But there are often significant (even legislative!) barriers to doing that, especially in the United States where government entities are often required to release data to the public domain. How about changing that legislation?

If it is public domain, it may be incorporated at software licensed in any form, even whole proprietary.

Also, public data must be public domain, but software used by government doesn't.

Sorry, but I don’t understand the purpose of this reply. The point I was making was that modifications to public domain data incorporated into OpenStreetMap cannot be used to improve the original source, because the OpenStreetMap copyright adds restrictions to the data.
I believe the poster's point was:

If the government is required to release the data as public domain; then it's integrated into OpenStreetMap which is copyleft; then a correction is made to OpenStreetMap; the correction can't be merged back into the public domain data.

Thus the copyleft project, in their attempts to stop people freeloading on their work without contributing back, have freeloaded on someone else's work without contributing back.

[IANAL]

One of the features of GPL is there is low administrative overhead in regard to legal matters when accepting contributions. The legal simplicity comes out of copyleft fully utilizing strong copyright and under GPL authors do not give up any rights.

On the other hand, placing a work in the public domain requires the author to give up their rights under copyright. Public domain is not a license. It is a legal sibling, not a child, of copyright. The result is that public domain works require legal administrative overhead in order to accept contributions...for example, an organization may find it necessary to create and maintain documentation regarding how and when each outside contributor placed their work in the public domain. Some open source licenses, such as Eclipse, also require similar record keeping.

That's not to say that GPL's reliance on the same classes of strong copyright law that the entertainment industries see as useful is necessarily unproblematic.

In the software case this is a real (and quite stupid) problem, and it is specific to the GPL (and AGPL) license, in particular if projects use it against the recommendations of the FSF as "version N only".

However it's not necessary to resort to permissive licensing, as there are many copyleft licenses that avoid this problem, such as LGPL, Mozilla's MPL, or Eclipse's EPL.

"Permissive" licenses provide highest freedom to "distributors".

"Copyleft" licenses provide highest freedom to "end-users".

"distributors" normally tend to be corporations that want to benefit from "free" software, but OTOH deny the same freedom to their own users. In other words, software that uses free software internally, but it itself was a proprietary with stringent license terms.