1. 9
  1.  

  2. 5

    Well, the line of thinking follows pretty clearly from the title, at least:

    Why you should use a BSD style license for your Open Source Project

    And of course, this guide is written by one of the more well-known BSD distributions: FreeBSD. I’d hardly expect them to start advocating for the GPL in lieu of a BSD-style license. But I do expect a proper understanding of the GPL and the greater schism between the “Open Source” and “Free Software” camps. I’m sadly not surprised to see that nowhere in this document is there a discussion of user freedom –the actual purpose and motivation behind the FSF and their collection of strong, copyleft licenses.

    I emphasize actual because the document dedicates a section to the origin of the GPL that, at best, misunderstands the GPL’s purpose:

    The GPL was designed to be the antithesis of the standard proprietary license.

    The GPL was intended to keep software from becoming proprietary.

    Even in the conclusion of this document, the purpose is missed:

    In contrast to the GPL, which is designed to prevent the proprietary commercialization of Open Source code

    The GPL was not designed or intended to eliminate proprietary software (per se) or else prevent the (proprietary) commercialization of otherwise Free Software. Those are simply consequences of an ethical framework that holds that users of software must have the Four Freedoms:

    • Freedom 0: The freedom to run the program as you wish, for any purpose.
    • Freedom 1: The freedom to study how the program works, and change it so it does your computing as you wish.
    • Freedom 2: The freedom to redistribute copies so you can help your neighbor.
    • Freedom 3: The freedom to distribute copies of your modified versions to others.

    Within such a framework, proprietary software –and (proprietary) commercialization of otherwise Free Software– is necessarily unethical by virtue of the fact that it violates at least one of the four freedoms of its users (often all four are violated). But “proprietary-ness” doesn’t constitute the entire set of such unethical behaviours. So too is behaviour commonly taken under the Open Source banner. Sometimes in the name of “greater adoption” of a standard, and sometimes for “better” software performance, and sometimes for “reduced cost/friction” for businesses… one or more of these four freedoms are violated. And it is the institution of this ethical framework that constitutes the purpose of the GPL: to ensure that users of software have the four freedoms.

    Now I’m really tempted to write my own document titled:

    “Why you should use a GPL-style license for your Free Software Project”

    1. 3

      Ah, inflammatory topic!

      How about the freedom to reuse code in another project?

      The FSF clearly thinks this is important, and so do I: One important way to modify a program is by merging in available free subroutines and modules.

      They also used to write this: If the program’s license says that you cannot merge in an existing module, [..], then the license is too restrictive to qualify as free.

      And I agree. Unfortunately some time after the GPLv3 was released, they had to change[1] the text to say suitably-licensed existing module so that they can still pretend that GPLv2 and GPLv3 are free despite the former saying that you cannot merge in GPLv3-licensed code. “Suitably-licensed” is a good way to fool people into thinking the problem is caused by something else than the very restrictions in these licenses that make them nonfree.

      What about the freedom to distribute copies in binary form for my neighbor in need? “Unfortunately” a lot of people do it in the most convenient way, e.g. by handing a direct link to a compiled binary. Without accompanying it with a written offer (valid for three years) for the source code. So, uh, by helping their neighbor, they violate the license. And the GPLv2 death clause kicks in, revoking all rights these people were given…

      That is why it is now illegal for me to redistribute copies of Linux. That’s right, I used to share lots of software for people who couldn’t compile it themselves, or who had busted their system somehow. I thought it was free software and that helping and sharing is good.

      So has the GPL fulfilled its purpose and managed to ensure I have the four freedoms (which I agree I should have) by ensuring I cannot freely mix the code in another “free” project, and by ensuring I no longer have any rights to Linux and a potentially large body of other GPLv2 licensed software?

      [1] http://web.cvs.savannah.gnu.org/viewvc/www/philosophy/free-sw.html?root=www&r1=1.73&r2=1.74

      If you want to restrict people and companies, you’re free to do so. If you want to make free software, please use a free license.

      1. 2

        Ah, inflammatory topic!

        Perhaps. I don’t see any real objection to what I’ve spoken of thus far though. But I’ll address the GPLv2 vs GPLv3 disagreements –which is ultimately just another “Open Source” vs “Free Software” disagreement– anyway, specifically in how they relate to the user’s Four Freedoms.

        How about the freedom to reuse code in another project?

        That’s not one of the Four Freedoms. Code reuse isn’t the only manner in which one can modify a program. And I’m not seeing the frustration with the FSF’s rewording here:

        One important way to modify a program is by merging in available free subroutines and modules. If the program’s license says that you cannot merge in a suitably licensed existing module — for instance, if it requires you to be the copyright holder of any code you add — then the license is too restrictive to qualify as free.

        https://www.gnu.org/philosophy/free-sw.html

        The “suitably licensed” was implicit prior to its inclusion. The GPL isn’t too restrictive to qualify as free because it doesn’t let you “merge in an existing module,” say, from some proprietary piece of software. It was already implied that the licenses had to be suitable.

        Though of course, GPLv2-only proponents aren’t upset about pulling proprietary code into their codebases, or else having to hold the copyright on the external code they want to pull in. They’re specifically upset that they cannot pull GPLv3 code into their GPLv2-only codebases, and either will not or cannot upgrade to the GPLv3 to remedy this situation.

        “Suitably-licensed” is a good way to fool people into thinking the problem is caused by something else than the very restrictions in these licenses that make them nonfree.

        Being unable to pull GPLv3 code into a GPLv2-only project –or unable to pull GPLv2-only code into a GPLv3 project– doesn’t make either project nonfree (or “non-copyleft”). You can of course continue to pull code from other compatible licenses into each project. The distinct projects can still coexist within the same system. The FSF actually covers the entire incompatibility issue in a single paragraph:

        When we say that GPLv2 and GPLv3 are incompatible, it means there is no legal way to combine code under GPLv2 with code under GPLv3 in a single program. This is because both GPLv2 and GPLv3 are copyleft licenses: each of them says, “If you include code under this license in a larger program, the larger program must be under this license too.” There is no way to make them compatible. We could add a GPLv2-compatibility clause to GPLv3, but it wouldn’t do the job, because GPLv2 would need a similar clause.

        https://www.gnu.org/licenses/rms-why-gplv3.html

        In other words, it’s basic set theory. The GPLv3 is the latest extension of the spirit of the GPL. It is a superset of the features of GPLv2 and new improvements that address new threats to the user’s Four Freedoms. Consequently, you can’t introduce bi-directional “compatibility clauses” because such a setup would imply the sets are identical when they are not.

        But of course, you’re actually on the right track here. There is something that smells off about the GPLv2. The GPLv2 is, ostensibly, a free software license. But it is a deprecated free software license that has flaws that leave users vulnerable to having their Four Freedoms violated. Patent treachery, tivoization, and DRM anticircumvention laws (e.g., DMCA) are all major threats to the Four Freedoms that the GPLv2 does not address or protect its users from.

        In this sense, the GPLv2 absolutely does not:

        [fulfill] its purpose and [manage] to ensure I have the four freedoms…

        The GPLv3, however, does. And consequently, if protection of the user’s Four Freedoms is your goal, then it is nonsensical to insist that we stick with the GPLv2 when the GPLv3 does a better job of fulfilling our goal/purpose. It is nonsensical to suggest that we permit GPLv3 code –written under that license specifically to avoid these new threats to the user’s Four Freedoms– to be incorporated into a GPLv2-only codebase that strips away the very protections we originally chose the GPLv3 license for in the first place.

        The entire hullabaloo from a handful of prominent people/projects about how the GPLv2 was:

        • terminal node of a directed graph of license convertability
        • universal receiver

        http://landley.net/talks/celf-2013.txt

        and that the GPLv3 “broke” that reality:

        • GPLv3 broke “the” GPL into incompatible forks that can’t share code.

        http://landley.net/talks/celf-2013.txt

        • GPL was copyleft. No longer.
        • Used to unite. No longer does.

        http://www.landley.net/toybox/oldlicense.html

        seems to ignore that that still is the reality. There still is a “terminal node of a directed graph of license convertibility” that “unites” the various licenses: the GPLv3:

        ![FSF GPLv3 Licensing Compatibility Graph](https://www.gnu.org/licenses/quick-guide-gplv3-compatibility.png)

        Any GPLv2 project that explicitly condemns or otherwise doesn’t at least support the idea of moving to the GPLv3 –even if there are too many contributors to ever be able to pull it off successfully– isn’t really a Free Software project in the sense that their goal is to protect the user’s Four Freedoms. It’s an Open Source project that wants to require all developers to keep their contributions “open,” something that the “simplified” MIT, BSD-style, and other permissive licenses can’t enforce. It’s not a surprise then that they’d love the GPLv2 but dislike the GPLv3.

        Because this:

        If you want to make free software…

        isn’t the purpose of sticking explicitly to GPLv2 in lieu of the improved GPLv3.

        If you want to restrict people and companies… [emphasis added]

        This is.


        What about the freedom to distribute copies in binary form for my neighbor in need? “Unfortunately” a lot of people do it in the most convenient way, e.g. by handing a direct link to a compiled binary. Without accompanying it with a written offer (valid for three years) for the source code. So, uh, by helping their neighbor, they violate the license.

        That is why it is now illegal for me to redistribute copies of Linux.

        Huh? Is this just a complaint that having to provide source code if requested is too onerous and as result you’re just not going to distribute? That’s fine, but I don’t see how that means your neighbor can’t be helped at all. He just can’t be helped by you.

        1. 2

          Being unable to pull GPLv3 code into a GPLv2-only project –or unable to pull GPLv2-only code into a GPLv3 project– doesn’t make either project nonfree

          It takes a lot of twisting on the meaning of “free” to claim that some code is free despite the fact that its license forbids its use in another “free” project. Free means yes you may combine it, and if what you combine it with is free, then the combination is free. If it is illegal to combine the code and distribute the combination, then one or both of the licenses must be nonfree for forbidding that. I don’t care whether Dr. Stallman thinks I should have that freedom or not. But I believe the words about being allowed to merge in existing free modules were talking about this very specific freedom, and the FSF very clearly considers it an important one.

          If I played along and accepted that it is ok to forbid merging in proprietary code then I’d have to conclude that either 1) GPLv3 is nonfree because you cannot merge it in with “free” GPLv2, or 2) GPLv2 is nonfree because it has restrictions – analogous to ones that require you to be the copyright holder of all code you add – that disallow merging GPLv3 code. The third option is that they’re actually both nonfree.

          From your reply it looks like you think GPLv2 is nonfree as you say that sticking to GPLv2 only is about restricting people… it is ironic how this same discussion with other GPL proponents always leads to a different outcome regarding as to what they think is free. It’s so hard to define freedom (once you start twisting words), as the FSF has shown.

          Huh? Is this just a complaint that having to provide source code if requested is too onerous and as result you’re just not going to distribute?

          No, it is a complaint that having to provide a written offer for the source code and making sure you can provide the corresponding source for that exact binary for three years is something a lot of people do not realize they must do (unless they never distribute a binary without also bundling the source). And if you did not provide that written offer for the source, then you already violated the license, whether anybody requests the source or not. What happens when you violate the license? Have you not seen the death clause? After violation, you have no rights to it whatsoever. It’s automatic, and it has been used as a basis for litigation.

          Due to the death clause, I no longer have the right to redistribute Linux; because I have shared it with people who needed it, not following the exact terms set by the license.

          And yes it is an onerous requirement. There’s no way in hell I’m going to make a bombproof archive of all GPLv2 licensed code for years after distributing a binary. I can’t even make a bombproof archive of my own personal files… So it’s better for me to not distribute such binaries at all.

          Let this be my final post in this thread. I shouldn’t have started the discussion at all, because discussions where people twist and redefine words to their liking is pointless. I’m very sorry.

          1. 2

            Let this be my final post in this thread. I shouldn’t have started the discussion at all, because discussions where people twist and redefine words to their liking is pointless. I’m very sorry.

            I’m grateful you did start the discussion, because it’s a discussion so many never even begin to have or bother with. Even if you’re not interested in further discussion, I’d say we are all better for whatever discussion was still had. That being said, I wouldn’t mind a more charitable addressing of any arguments made.


            When discussing a term like “freedom,” there isn’t a constant, static, dictionary definition. Freedom doesn’t have a “definition” in the sense that “Rational Number” has a definition. It’s colored with context and history and circularly intertwined with other abstract concepts. We must define what we believe freedom to mean. It’s no more “cheating” for me to define what I believe “freedom” means than it is for you to define what you think it means. It’s a necessary basis from which a dialog can be had. I’ve defined Free Software as software that respects the user’s Four Freedoms, and Free Software Licenses as licenses that, at least in principle, respect those freedoms.

            I don’t care whether Dr. Stallman thinks I should have that freedom or not. But I believe the words about being allowed to merge in existing free modules were talking about this very specific freedom, and the FSF very clearly considers it an important one.

            I think there’s a miscommunication here between whether a license is free or nonfree, and whether a license is weak/lax/permissive or strong/enforcing/copyleft, at least insofar as the Free Software movement has historically defined and introduced these concepts to the greater world. The MIT license is a “free” license according to the FSF, but it is not a strong, or enforcing, or copyleft license. Any malicious middleman could make some minimal changes, recompile, and distribute the binaries without ever having to actually respect his/her/its users' freedom. It’s all up to the distributor.

            If you hold that a user must have the Four Freedoms as an ethical imperative, then you can’t also hold that a distributor has the freedom to deny users their Freedom. Quite the opposite. Distributors are compelled to respect the freedoms of the users. Consequently, while a weak, or lax, or permissive license is a free license in principle –as is the lack of any license, such as the Public Domain– it doesn’t make a lot of sense to use a permissive license or the Public Domain if we hold that users must have their Four Freedoms.

            This dilemma is where copyleft licensing –and the entire concept of using the copyright system as an enforcement mechanism for this ethical framework– was born. The FSF realized that existing licenses were not sufficient to ensure user freedom and created a strong, enforcing, copyleft license that compelled anyone wishing to use works licensed under it to adhere to the principles of Free Software in kind. The ability to “merge in existing free modules” is done in service of these principles –and is practically enabled by virtue of the permissive nature of many licenses that let the GPL take their own code under the GPL’s wing. It is not the principle itself. Allowing a permissively licensed project to merge GPL code under the permissive license works against the ethical framework of user freedom that the FSF and the GPL are advocating for; it permits the creation of nonfree software from the pieces of originally-free code. On the other hand, permitting the merging of “free,” but permissively licensed code, into a copyleft license, is ensuring that users of that free software are guaranteed their freedoms and is thus encouraged.

            It takes a lot of twisting on the meaning of “free” to claim that some code is free despite the fact that its license forbids its use in another “free” project.

            Free means yes you may combine it, and if what you combine it with is free, then the combination is free. If it is illegal to combine the code and distribute the combination, then one or both of the licenses must be nonfree for forbidding that.

            If I played along and accepted that it is ok to forbid merging in proprietary code then I’d have to conclude that either 1) GPLv3 is nonfree because you cannot merge it in with “free” GPLv2, or 2) GPLv2 is nonfree because it has restrictions – analogous to ones that require you to be the copyright holder of all code you add – that disallow merging GPLv3 code. The third option is that they’re actually both nonfree.

            [all emphasis added]

            If I’m understanding you correctly, then the ability to merge freely is the principle of freedom, not a tool in service of some other concept of freedom. Any sort of strong/enforcing/copyleft licensing is thus “nonfree” in your eyes because it is infringing on the developer’s ability to mix code from different licenses as they see fit. I think this is more of an advocation of a “development model” than it is an advocation of Freedom. It seems this approach is more concerned with developer convenience than user freedoms. Which is fine, but it is not “Free Software” as the FSF has defined and defended it for decades. It hems far more closely to the philosophy of “open source” software.


            And yes it is an onerous requirement.

            I’m going to have to disagree here. Including the source with your distribution, or else including a notice in the binary distribution about being contacted for the source of the binary, is not an onerous requirement. Software build toolchains make this a perfectly reasonable request to comply with. Trivial? Not always. But hardly a burden so terrible that nobody would ever undertake it.

            And if you did not provide that written offer for the source, then you already violated the license, whether anybody requests the source or not. What happens when you violate the license? Have you not seen the death clause?

            I have heard of it. The liberty-or-death clause did have some unintended consequences. And the GPLv3 has addressed many of these consequences, making the handling of license violations easier.

      2. 1

        Those are indeed four fine freedoms. If the GPL was as succinct as your comment I would still be considering it for new projects. As it is I just want to use a license that protects me from being sued, and is short & simple enough that I can be sure I understand it. I have used the BSD license in the past, but the ambiguity around its three forms is making me think the MIT license is a better choice.

      3. 5

        I wish this included a comparison with the MIT license, and why or why not the 2-clause BSD license would be preferable. It is also a bit confusing that there are so many variations of the BSD license, which are referenced somehwat similarly:

        • older 4-clause BSD license
        • 3-clause “new” BSD license
        • 2-clause “Simplified” BSD license

        I tend to prefer the ISC or MIT licenses, because they are (a) clear, (b) when you say “MIT License” or “ISC License”, people know which one you are talking about without confusion.

        1. 1

          For anyone who can elucidate: What is the difference between the MIT license and the BSD licence?