1. 1
  1.  

  2. 4

    What’s your real goal here? The GPL and BSDL make different tradeoffs. The BSDL makes it easy to write Free and non-Free software based on top of it (it is compatible with pretty much any license). The GPL makes it hard to write either, but easier to write Free software (it is incompatible with some Free Software licenses and all non-Free licenses). This makes sense given the goals of their respective communities. The FSF regards non-Free software as evil and so wants to avoid helping non-Free ecosystems at any cost. The BSD community regards Free software as beneficial but doesn’t mind if increasing the amount of Free software has the side effect of increasing the amount of non-Free.

    The original question here is a lot more complex though, because it asks about use. Free Software licenses are distribution licenses, they are explicitly not EULAs. No Free Software license will prevent corporate use. The question is conflating four things:

    • Using a piece of software.
    • Modifying a piece of software.
    • Distributing the original software.
    • Distributing modified versions of the software.
    • Building products that incorporate (modified or unmodified versions of) the software.

    An FSF or OSDI approved license will allow all of these, so the goal is to allow all of them but have corporate policies that discourage some of them. If the goal is to prevent the first one, that’s tricky because most corporate policies are fine with internal use of anything under an OSDI-approved license.

    Restricting the second may be possible, though it’s hard to see how. Google, for example, was very happy to modify Linux for their data centres. The GPL didn’t require them to distribute the changes and so they didn’t. You may be able to find a license that is OSDI approved that requires distributing modifications, though it’s hard to imagine that it would be legally enforceable (if I download your code, open it in my text editor, change one line, and don’t immediately publish the diff then I’m in violation).

    Once we get to the third one, we’re starting to seem more feasible. The patent clauses in GPLv3 make a lot of companies nervous. If you distribute a GPLv3 program then you are granting a license to everyone to any of your patents that are contained within it. If a company is distributing a GPLv3 program and doesn’t do a careful patent audit then someone can add code to that project that violates their patents and when the company distributes the result then they have not granted everyone a license to the patent. So GPLv3 works here to put off a lot of companies.

    The same applies to the fourth goal. This depends a bit on whether the company wants to keep their changes private. BSDL lets them keep their changes entirely private, LGPL lets them keep changes that are not part of the original package private, GPL doesn’t let them keep anything private. Most companies that use BSDL packages end up acting as if they’re using something LGPL’d because it’s cheaper to work with upstream to minimise your changes and there’s rarely a sufficiently large change that you’re giving away a competitive advantage. I’ve worked with a few large companies that have slowly undergone this realisation.

    The fifth is probably what the question was meant to be about. The motivation for this is really that no one should make money from your work. To me, this is the same mindset that counts the cost of piracy as equivalent to the full value of the copied media. If your code didn’t exist, would the company not make money (or make noticeably less money)? If you prevent the company from using your code, how do you benefit? I know of a load of companies that are making money from software that I’ve MIT licensed. Some have taken it and given nothing back. Some have paid me to add new features. Some have contributed useful bug fixes and new features. Some have donated a significant chunk of money to a charity of my choice. In the worst case, I have lost nothing. In the best case, I have gained a lot. The fact that they have made money doesn’t take anything away from me and it means that that have more money to spend improving projects that I was doing for fun.

    The real problem with the question is that it assumes that companies and people have fundamentally different motivations. Both want to use software to make their lives easier. Both will (if able) contribute improvements that make their lives easier. Both will, given sufficient spare time, want to use software in ways that the original authors did not imagine. An experienced developer can come along, fork your project, and persuade everyone to contribute to his or her fork and not yours, without any corporate involvement. A corporation can come along and throw so many engineers at a project that your vision is lost.

    1. 1

      What’s your real goal here?

      An FSF or OSDI approved license will allow all of these, so the goal is to allow all of them but have corporate policies that discourage some of them.

      You correctly read my post. The goal is to enumerate those licenses which are well-known, as a matter of folklore and experience, to designate Free Software which corporations tend to avoid. None of the information that I linked in my answer is new information, but it is cited and sourced so that folks cannot deny the bulk of the thesis for lack of evidence. As a bonus, my answer also explicitly lists licenses like AGPLv3, GPL, CPAL, EUPL, WTFPL, and the Unlicense, so that folks are not misled into believing that these repellent licenses are exclusively published and used by FSF and GNU.

      The fifth is probably what the question was meant to be about. The motivation for this is really that no one should make money from your work.

      No, the question was meant as stated, and you correctly deciphered it in your opening paragraphs. I am not interested in limiting monetary rights for code work. Indeed, I think that it is a folly, on the level of a category error, to sell software: Information is a free good and code is purely information. Rather, I am interested in ways to use the legalistic nature of corporations as a weapon against them.

      If your code didn’t exist, would the company not make money (or make noticeably less money)?

      Yes. I mentioned in my answer the effect that the GPL has had on the smartphone duopoly; both Apple and Google have had to reinvent serious amounts of userland code in order to avoid using GPL-licensed code. At scale, if the public commons is larger than any one corporation’s pool of coders, then this could prevent corporations from entering into public spaces which are broadly populated by people.

      Similarly, we know that online video platforms are heavily dependent on ffmpeg, and as you yourself point out, Linux is integral to the modern public cloud. If these chunks of code had not been built, then would Google or Youtube have ever gotten off the ground? Similarly, without PHP and MySQL, Facebook would not have existed in its current form, or perhaps at all. So, yes, not just counterfactually but in actual reality as well.

      If you prevent the company from using your code, how do you benefit?

      I am not a utilitarian, but the obvious answer is that decreased corporatism could lead to a healthier, less expensive life for the average person.

      The real problem with the question is that it assumes that companies and people have fundamentally different motivations.

      A corporation is a piece of paper with some signatures on it, and can be dismissed or altered like a golem. Its employees are beholden to obey its charter. In this way, a corporation approximates humanity. Nonetheless, corporations are inherently inhuman, which is why courts have the concept of piercing the corporate veil.

      I am fascinated by the fact that so many folks have completely misread what I asked. Folks seem to be greatly hung up on the idea that Free Software is at all anti-corporate, despite the origins of Free Software as an anti-corporate movement.

      1. 2

        The goal is to enumerate those licenses which are well-known, as a matter of folklore and experience, to designate Free Software which corporations tend to avoid.

        But what kind of avoidance are you asking for? As I tried to point out, companies don’t avoid licenses for software in general, they avoid licenses for use in specific contexts. Few, if any, companies object to using even something like AGPLv3 internally. They object to distributing AGPLv3 code, shipping products where the user interacts with AGPLv3 code in such a way that it would trigger the distribution requirements, or modifying AGPLv3 code.

        The last of these objections is the most important. A license such as AGPL doesn’t prevent companies from using your software it only prevents them from improving your software. They can build abstractions around it so that they can comply with the letter of the license, if not the spirit, but in doing so they will avoid directly modifying your code.

        If you goal is to allow corporations to benefit from the code, but not allow them to contribute to it, then there are several solutions, but I don’t understand why you’d want to do that.

        1. 1

          This sort of generalizing and weasel-wording framing is precisely why I thought that it would be good to include evidence in my initial answer to my original question. Without such evidence, it is very easy to embrace the feeling that companies are nuanced and considered in their operations, and that they are not run by humans who take shortcuts and simplifications.

          Every one of my corporate employers, ever, has had a blanket ban on using any AGPL code whatsoever within their systems, for any purpose. Unfortunately, they do not publish these bans. We do have the opportunity to read Google’s AGPL policy, which ostensibly is mirrored from their internal documentation. To quote:

          WARNING: Code licensed under the GNU Affero General Public License (AGPL) MUST NOT be used at Google.

          Even if you think you aren’t linking to anything important, it still presents a huge risk to Google because of how integrated much of our code is. The risks heavily outweigh the benefits.

          Because Google’s core products are services that users interact with over a remote network interface (Search, Gmail, Maps, YouTube), the consequences of an engineer accidentally depending on AGPL for one of these services are so great that we maintain an aggressively-broad ban on all AGPL software to doubly-ensure that AGPL could never be incorporated in these services in any manner.

          Do not install AGPL-licensed programs on your workstation, Google-issued laptop, or Google-issued phone without explicit authorization from the Open Source Programs Office.

          Their engineers may not even use AGPL tools on workstations! This is precisely the “recoiling” behavior that I wanted to capture in my original question. If corporations were capable of feeling fear, then this is what their fear would taste like. I wanted to not just document this phenomenon, but find more instances of where it has happened.

          If you goal is to allow corporations to benefit from the code, but not allow them to contribute to it, then there are several solutions, but I don’t understand why you’d want to do that.

          No, my goal is still as originally stated. I don’t understand why you’d want this strawman goal either. My goal is to ensure that, if some code happens to become popular and useful to people in the future, that no corporation will be able to interoperate with it except at arm’s length, through slow and painful reverse-engineering, and without community support. Let corporations have the experience of writing homebrew tools for once.

    2. 1

      Slightly OT: How about CC BY-NC-SA-4[0] for non-commercial, but open source code? I imagine this could also cover/apply to artwork included with said project.

      https://creativecommons.org/licenses/by-nc-sa/4.0

      1. 1

        The Creative Commons licenses are good and useful, but the “NC” non-commercial restriction explicitly makes this license, and most of its relatives, unsuitable for designating Free Software. My goal in exploring the original question is to look beyond the obvious ways to make a license non-commercial, and instead look at licenses that are only effectively non-commercial, while still designating Free Software like typical FLOSS licenses.