Time and again the FSF has pulled this trickery that essentially amounts to an argument that the GPL covers an API, and that the API is by extension copyrightable. The Objective-C front end for GCC was another, nearly contemporary example.
They can’t have it both ways. Either it’s a GPL violation to require the user to link to a GPL library, because the library’s API is copyrighted and covered by the GPL, but also Oracle gets to sue anyone who reimplements the Java standard library; or APIs are not copyrightable and a non-GPL program can use a GPL library’s API, requiring the user to link to the actual copyrighted, GPL’d implementation – perhaps under the assumption someone will one day create a non-GPL’d implementation of the same API.
See also the Linux-syscall-note, only really needed because Linus had to stop the FSF pulling this argument on any program ever compiled for Linux.
I’m not a lawyer, but it seems reasonable to me to consider the Objective-C frontend scheme subterfuge, because as far as I understand it from rms’ message here, it was supposed to be included as a single “program” to the user, i.e. the compiler, so breaking it up into a proprietary frontend and libre backend, then distributing both separately, where the intention is clearly to link one with the other into one program, the gcc backend is clearly part of the program, but simply being distributed separately.
The CLISP case is different. He proposed distributing a replacement for libreadline. I’m not sure how one can infer “that the one part clearly shows the intention for incorporation of the other part”. Packaging libnoreadline.a with lisp.a while separately distributing libreadline.a as an alternative to libnoreadline.a doesn’t demonstrate that lisp.a and libreadline.a are one program.
He could just as easily stop distributing libreadline.a, even separately and simply link to its GNU site as an alternative, hell, he could decide not to even link to it or mention it at all. His program would still work. Because it’s a completely separate program, with part of it being a reimplementation of libreadline.a.
Agreed. I believe that the fact that CLISP was originally developed for Atari ST with no readline in sight would have been pretty important to the judge. RMS failed to recognize the difference in the situation, in my opinion. It would have been a different case if they have built it using readline to shape the user experience, then decided to stub it out and act as if it’s up to the user, wink wink. Which they didn’t.
The Objective-C front end for GCC was another, nearly contemporary example.
If you read far enough down the original linked thread, RMS discusses this:
I say this based on discussions I had with our lawyer long ago. The
issue first arose when NeXT proposed to distribute a modified GCC in
two parts and let the user link them. Jobs asked me whether this was
lawful. It seemed to me at the time that it was, following reasoning
like what you are using; but since the result was very undesirable for
free software, I said I would have to ask the lawyer.
What the lawyer said surprised me; he said that judges would consider
such schemes to be “subterfuges” and would be very harsh toward
them. He said a judge would ask whether it is “really” one program,
rather than how it is labeled.
So I went back to Jobs and said we believed his plan was not allowed
by the GPL.
The direct result of this is that we now have an Objective C front
end. They had wanted to distribute the Objective C parser as a
separate proprietary package to link with the GCC back end, but since
I didn’t agree this was allowed, they made it free.
I’m not a lawyer, but assuming RMS is accurately relaying the FSF’s lawyer’s opinion, it seems to be at odds with yours.
When a lawyer makes a statement to their client, or to the public on behalf of their client, on what the law in a particular situation is, they cannot actually know what a court will eventually rule. This means only that the FSF’s lawyers, having the FSF’s interests in mind, believed it would be possible for them to argue that the ObjC frontend had to be GPL because it would be subversion of the licence’s intention to accept NeXT’s argument.
But if the FSF wanted to stay in the land of copyright (which they were, until much more recently, very keen on doing), they have only one option: they would have to have argued that the ObjC front end is a derivative work of the main GCC distribution. (The GPLv2 is explicit that a ‘“work based on the Program” means either the Program or any derivative work under copyright law’.) This is very difficult for exactly the same reason a program compiled for Linux – even a complex assembly language program written only for Linux, invoking Linux system calls directly with their magic syscall numbers – is not a derivative work of Linux.
If the FSF were more willing to accept that the GPL is a contract with wider-ranging obligations on its parties than a mere licensing of copyright under certain conditions, the ‘subterfuge’ argument might have held more water. That might have been a way it could have worked in court. But in the 1990s, in US law, that wasn’t how they were trying to sell it, as far as I know.
(Disclaimer: I have not seen the relevant version of the GCC ObjC front end; it’s possible it could have been found to be a derivative work. Given that rms went to this roundabout argument about subterfuge, I think even he must have found that a doubtful argument.)
(Disclaimer: I have not seen the relevant version of the GCC ObjC front end; it’s possible it could have been found to be a derivative work. Given that rms went to this roundabout argument about subterfuge, I think even he must have found that a doubtful argument.)
IANAL but my understanding of the relevant argument, as it pops up in other contexts, is that:
The ObjC frontend is linked against the GCC backend and they run in the same process while the Linux kernel runs as a separate process. (i.e. One has no IPC boundary and the other does)
There is no alternative implementation exposing the GCC APIs that it could be linked against instead, while Linux tries to implement POSIX. (i.e. One cannot function without the GPLed code while the other can.)
Those are the two standards I’ve seen used to draw lines like “It’s OK for Ark or File-Roller to link against libarchive, but the source to UnRAR must be built as a separate binary and exec‘d” or “It’s illegal to redistribute precompiled nVidia binary drivers, but you can run GOG.com games on Linux” when talking about derivative works.
RMS’s argument makes no sense there.
In the context of the e-mail, it’d be similar to how a compiled ffmpeg binary may or may not be required to be GPL depending on whether you build it with the GPLed bits enabled.
If CLISP functions without readline and the APIs are intercompatible enough to be interchangeable at link time, then I don’t see how builds which don’t link against readline could be argued to be derived works.
Yes, I read that part, it’s the part I was responding to. I’m saying I agree with the lawyer’s opinion on Objective-C, but I don’t think his reasoning would apply to CLISP. RMS is taking the lawyer’s opinion on the Objective-C situation and applying it to the CLISP situation, which I think is a misapplication.
I thought this was a response to my comment at first, despite obviously not receiving a notification.
I’ve mistakenly done that before too, and almost done it more than once; the rendering of an immediate sibling is similar enough to the rendering of a reply in my browser that I find it a little hard to distinguish the two.
These sorts of discussions make me increasingly convinced of the value of the EUPL as a kind of non-viral project-wide copyleft license. If you distribute an EUPL-based project, even with modifications, then you must distribute that code plus modifications under that license - there’s no way to turn it proprietary again as with MIT or something similar. However, there’s no requirements on code that interacts with your project, uses its API, links to it, uses its syscalls, or extends it à la the Emacs example someone linked to in the comments.
This legal trickery of forcing other projects to adopt your license is clever, but it feels like the FSF’s approach is far too zealous, and the waters have been muddied too much around what effects the GPL actually has.
Had a conversation today on the fediverse about another RMS email claiming any emacs package would have to be licensed to be compatible with GPLv3, a position I’m still not convinced with (and neither with the situation of clisp and libreadline, though the latter makes a tiny bit more sense)
This is a problem I cannot ignore. If you can get away with this then
any company can get away with it. The result would be to negate for
practical purposes the GPL’s requirement that improvements be free.
And that would deprive GNU software of a major source of improvements.
RMS (seemingly) wrote a crap license, loophole.a and all, and he tries to pin the deficiency on … the messenger? Does he not realize this would be his fault? Bruno’s just trying to point this out
Except in reality each works better in a different setting. Strong copyleft is clearly better suited to keeping applications useful to less technical users from getting closed up and permissive licensing makes projects nobody would buy (like readline or crypto) more attractive to contribute to.
And ideally all code would eventually lapse into public domain. In at most 15 years or so.
Well, at least if you value commons over private property. If you don’t, then you’d obviously see this differently. But I personally believe that having strong commons leads to higher standard of living for most people and me specifically.
For me, my personal reasons for releasing code under non-copyleft free licenses, it’s neither about the commons nor private property.
It’s about wanting my giving to not be diluted by asking for something similar in return. (If I were giving necessities to the destitute, I’d try, if possible, to give first to the most in need, and for those equally in need, to the one who deserves it more unless I could afford to help both, but here, I’m talking about stuff that nobody needs, so I don’t feel a pressure to reward gooder people with priority service.)
I don’t call it generosity because what I do is done with my scraps, economically speaking. I simply release stuff I do for myself. If I thought one of them could change my life financially were I to sell it — i.e. not if I was already successful enough to not (need to) work anymore — I would do that instead.
That said, if I later realised I could sell it after releasing it for free w/o yet being that successful and it caused someone else to be successful, I wouldn’t resent anyone or regret my decision.
If someone takes advantage of my giving, I don’t see that as a problem. In fact, one might say that’s the point or even definition of giving: to benefit others. (True generosity is when it comes at your expense in a way that you feel the impact to some degree.)
I know copyleft people will argue that the thing you’re asking in return is to still benefit others, not yourself — or at least not only yourself, which is kinda different — but to me, it doesn’t matter. For my purposes, the reasons I give in the first place, I want it to be completely unencumbered.
It’s not ideological — I have no opinion on which is morally superior — nor some consequentialist calculation of what’ll serve the commons best (which may or may not be more moral for doing so), it’s simply for myself; if I give something away, I want to, ideally, truly give it away.
If a business used internal forks of libre software to run their services better than the competition in a way they didn’t deliver software to their customers and so had no need to give the source code away (even if it were copyleft), that act of giving had a negative impact on the business who was left behind by being less technologically capable or just not having heard of the software.
I don’t think people would suggest the idea of a clause whereby the first business should have told their competitors about this technological advancement as part of the license terms so that they can compete on a level playing field.
That’s how I feel about someone taking my MIT-licensed code to sell a modified binary-only fork of my software. The fact that some people benefited more than others isn’t my problem after a certain point. As long as they’re not doing anything morally impermissible in my worldview, or harming others (even unintentionally) in a way that wouldn’t be possible without my software which is trying to benefit others, I don’t feel the need to worry about those second-order or third-order effects.
Without me releasing my software, they wouldn’t have sold a fork with the code in that world either, they wouldn’t have sold a fork even without the code, so in that sense, my giving isn’t making things worse, it’s only making things better for some people more than others, but that’s the case with any act of giving.
Sure, that’s what CC0 is for. I don’t ask kids I teach writing software to solemnly swear they will only ever release it under OSI-approved license either.
I am still happy about Immich being copyleft, though. Because that protects me (the beneficent) from development that might endanger my photo archival operation. It’s not just a nice gift. It’s a gift and a promise.
I think both ways of giving are noble, but they feel different to me.
They don’t normally fork. They normally try to convert some percentage of the open project user base via various schemes and the charitable people move on.
Eventually running heavily outdated version would not be practical. Right now, I am fairly confident I can get maybe 5-10 years out of it before having to move on because they seem fairly resolved.
I will be sending some money their way as soon as I actually move our library during holiday to increase the odds of the project actually surviving.
Same as I do with Godot (MIT), Blender (GPL) and KiCad (GPL).
Are you talking about embrace, extend, extinguish? And/or other schemes?
Anyway, regardless of any schemes, there’s always the risk that enough people move away from a software that you prefer to use, whether for its license or otherwise, to trigger its demise.
I understand that a non-copyleft libre license makes it easy for opportunists to build commercial competitors with higher marketing and/or sales budgets, for example, but it’s just not something I worry about.
I don’t know, maybe I should; do you have any historical examples of, for example, MIT- or BSD-licensed software being forked into a closed-source product which the initial users mass migrated to, or got its own audience that grew bigger than the original? In either case, did the original open source project’s contributors move on?
Ah, yeah, I hadn’t considered the owners closing it.
I was not aware of the ownCloud case. What were the others you were thinking of? Were they cases where the libre version didn’t get forked by the community?
Even if they are forked, it can still mean migration. MySQL to Maria, Redis to Valkey, Gitea to Forgejo. Heck I still remember having to tell people to stop using OpenOffice and install LibreOffice years after the fork.
I take communities splintering, migrations, and other annoyances as the baseline cost of the ability to fork, and forks will always happen for a variety of reasons. I don’t particularly expend a lot of energy worrying about avoiding it,
but then, I don’t know how much of an extra problem it is in practice when it comes to copyleft vs. non-copyleft licenses (at least, for other people), so I can understand the desire to do so.
Time and again the FSF has pulled this trickery that essentially amounts to an argument that the GPL covers an API, and that the API is by extension copyrightable. The Objective-C front end for GCC was another, nearly contemporary example.
They can’t have it both ways. Either it’s a GPL violation to require the user to link to a GPL library, because the library’s API is copyrighted and covered by the GPL, but also Oracle gets to sue anyone who reimplements the Java standard library; or APIs are not copyrightable and a non-GPL program can use a GPL library’s API, requiring the user to link to the actual copyrighted, GPL’d implementation – perhaps under the assumption someone will one day create a non-GPL’d implementation of the same API.
See also the Linux-syscall-note, only really needed because Linus had to stop the FSF pulling this argument on any program ever compiled for Linux.
I’m not a lawyer, but it seems reasonable to me to consider the Objective-C frontend scheme subterfuge, because as far as I understand it from rms’ message here, it was supposed to be included as a single “program” to the user, i.e. the compiler, so breaking it up into a proprietary frontend and libre backend, then distributing both separately, where the intention is clearly to link one with the other into one program, the gcc backend is clearly part of the program, but simply being distributed separately.
The CLISP case is different. He proposed distributing a replacement for libreadline. I’m not sure how one can infer “that the one part clearly shows the intention for incorporation of the other part”. Packaging
libnoreadline.awithlisp.awhile separately distributinglibreadline.aas an alternative tolibnoreadline.adoesn’t demonstrate thatlisp.aandlibreadline.aare one program.He could just as easily stop distributing
libreadline.a, even separately and simply link to its GNU site as an alternative, hell, he could decide not to even link to it or mention it at all. His program would still work. Because it’s a completely separate program, with part of it being a reimplementation oflibreadline.a.Agreed. I believe that the fact that CLISP was originally developed for Atari ST with no readline in sight would have been pretty important to the judge. RMS failed to recognize the difference in the situation, in my opinion. It would have been a different case if they have built it using readline to shape the user experience, then decided to stub it out and act as if it’s up to the user, wink wink. Which they didn’t.
If you read far enough down the original linked thread, RMS discusses this:
I’m not a lawyer, but assuming RMS is accurately relaying the FSF’s lawyer’s opinion, it seems to be at odds with yours.
When a lawyer makes a statement to their client, or to the public on behalf of their client, on what the law in a particular situation is, they cannot actually know what a court will eventually rule. This means only that the FSF’s lawyers, having the FSF’s interests in mind, believed it would be possible for them to argue that the ObjC frontend had to be GPL because it would be subversion of the licence’s intention to accept NeXT’s argument.
But if the FSF wanted to stay in the land of copyright (which they were, until much more recently, very keen on doing), they have only one option: they would have to have argued that the ObjC front end is a derivative work of the main GCC distribution. (The GPLv2 is explicit that a ‘“work based on the Program” means either the Program or any derivative work under copyright law’.) This is very difficult for exactly the same reason a program compiled for Linux – even a complex assembly language program written only for Linux, invoking Linux system calls directly with their magic syscall numbers – is not a derivative work of Linux.
If the FSF were more willing to accept that the GPL is a contract with wider-ranging obligations on its parties than a mere licensing of copyright under certain conditions, the ‘subterfuge’ argument might have held more water. That might have been a way it could have worked in court. But in the 1990s, in US law, that wasn’t how they were trying to sell it, as far as I know.
(Disclaimer: I have not seen the relevant version of the GCC ObjC front end; it’s possible it could have been found to be a derivative work. Given that rms went to this roundabout argument about subterfuge, I think even he must have found that a doubtful argument.)
IANAL but my understanding of the relevant argument, as it pops up in other contexts, is that:
Those are the two standards I’ve seen used to draw lines like “It’s OK for Ark or File-Roller to link against libarchive, but the source to UnRAR must be built as a separate binary and
exec‘d” or “It’s illegal to redistribute precompiled nVidia binary drivers, but you can run GOG.com games on Linux” when talking about derivative works.RMS’s argument makes no sense there.
In the context of the e-mail, it’d be similar to how a compiled ffmpeg binary may or may not be required to be GPL depending on whether you build it with the GPLed bits enabled.
If CLISP functions without readline and the APIs are intercompatible enough to be interchangeable at link time, then I don’t see how builds which don’t link against readline could be argued to be derived works.
Yes, I read that part, it’s the part I was responding to. I’m saying I agree with the lawyer’s opinion on Objective-C, but I don’t think his reasoning would apply to CLISP. RMS is taking the lawyer’s opinion on the Objective-C situation and applying it to the CLISP situation, which I think is a misapplication.I thought this was a response to my comment at first, despite obviously not receiving a notification.
I’ve mistakenly done that before too, and almost done it more than once; the rendering of an immediate sibling is similar enough to the rendering of a reply in my browser that I find it a little hard to distinguish the two.
These sorts of discussions make me increasingly convinced of the value of the EUPL as a kind of non-viral project-wide copyleft license. If you distribute an EUPL-based project, even with modifications, then you must distribute that code plus modifications under that license - there’s no way to turn it proprietary again as with MIT or something similar. However, there’s no requirements on code that interacts with your project, uses its API, links to it, uses its syscalls, or extends it à la the Emacs example someone linked to in the comments.
This legal trickery of forcing other projects to adopt your license is clever, but it feels like the FSF’s approach is far too zealous, and the waters have been muddied too much around what effects the GPL actually has.
For all his flaws, I’m glad we’ve had RMS advocating for free software all of these years.
Had a conversation today on the fediverse about another RMS email claiming any emacs package would have to be licensed to be compatible with GPLv3, a position I’m still not convinced with (and neither with the situation of clisp and libreadline, though the latter makes a tiny bit more sense)
https://piaille.fr/@baleine/113522687957930553
That’s badass, like a Morpheus quote.
It’s also completely nonsensical. He wants copyright to be an infinitely powerful lever, but it isn’t.
Really? That struck me as incredibly childish.
RMS (seemingly) wrote a crap license,
loophole.aand all, and he tries to pin the deficiency on … the messenger? Does he not realize this would be his fault? Bruno’s just trying to point this outGPL is the blue pill, 0BSD/ISC is the red pill.
Except in reality each works better in a different setting. Strong copyleft is clearly better suited to keeping applications useful to less technical users from getting closed up and permissive licensing makes projects nobody would buy (like readline or crypto) more attractive to contribute to.
And ideally all code would eventually lapse into public domain. In at most 15 years or so.
Well, at least if you value commons over private property. If you don’t, then you’d obviously see this differently. But I personally believe that having strong commons leads to higher standard of living for most people and me specifically.
For me, my personal reasons for releasing code under non-copyleft free licenses, it’s neither about the commons nor private property.
It’s about wanting my giving to not be diluted by asking for something similar in return. (If I were giving necessities to the destitute, I’d try, if possible, to give first to the most in need, and for those equally in need, to the one who deserves it more unless I could afford to help both, but here, I’m talking about stuff that nobody needs, so I don’t feel a pressure to reward gooder people with priority service.)
I don’t call it generosity because what I do is done with my scraps, economically speaking. I simply release stuff I do for myself. If I thought one of them could change my life financially were I to sell it — i.e. not if I was already successful enough to not (need to) work anymore — I would do that instead.
That said, if I later realised I could sell it after releasing it for free w/o yet being that successful and it caused someone else to be successful, I wouldn’t resent anyone or regret my decision.
If someone takes advantage of my giving, I don’t see that as a problem. In fact, one might say that’s the point or even definition of giving: to benefit others. (True generosity is when it comes at your expense in a way that you feel the impact to some degree.)
I know copyleft people will argue that the thing you’re asking in return is to still benefit others, not yourself — or at least not only yourself, which is kinda different — but to me, it doesn’t matter. For my purposes, the reasons I give in the first place, I want it to be completely unencumbered.
It’s not ideological — I have no opinion on which is morally superior — nor some consequentialist calculation of what’ll serve the commons best (which may or may not be more moral for doing so), it’s simply for myself; if I give something away, I want to, ideally, truly give it away.
If a business used internal forks of libre software to run their services better than the competition in a way they didn’t deliver software to their customers and so had no need to give the source code away (even if it were copyleft), that act of giving had a negative impact on the business who was left behind by being less technologically capable or just not having heard of the software.
I don’t think people would suggest the idea of a clause whereby the first business should have told their competitors about this technological advancement as part of the license terms so that they can compete on a level playing field.
That’s how I feel about someone taking my MIT-licensed code to sell a modified binary-only fork of my software. The fact that some people benefited more than others isn’t my problem after a certain point. As long as they’re not doing anything morally impermissible in my worldview, or harming others (even unintentionally) in a way that wouldn’t be possible without my software which is trying to benefit others, I don’t feel the need to worry about those second-order or third-order effects.
Without me releasing my software, they wouldn’t have sold a fork with the code in that world either, they wouldn’t have sold a fork even without the code, so in that sense, my giving isn’t making things worse, it’s only making things better for some people more than others, but that’s the case with any act of giving.
Sure, that’s what CC0 is for. I don’t ask kids I teach writing software to solemnly swear they will only ever release it under OSI-approved license either.
I am still happy about Immich being copyleft, though. Because that protects me (the beneficent) from development that might endanger my photo archival operation. It’s not just a nice gift. It’s a gift and a promise.
I think both ways of giving are noble, but they feel different to me.
I tend to stick with MIT as a default for my code. Maybe one day, I’ll give it more thought and make a more informed decision.
For sure, I’d say even equally noble, but what do you mean by protecting you from development that might endanger your photo archival operation?
As a user of Immich, why would someone forking it and creating a non-libre version of it harm your use of the original software?
They don’t normally fork. They normally try to convert some percentage of the open project user base via various schemes and the charitable people move on.
Eventually running heavily outdated version would not be practical. Right now, I am fairly confident I can get maybe 5-10 years out of it before having to move on because they seem fairly resolved.
I will be sending some money their way as soon as I actually move our library during holiday to increase the odds of the project actually surviving.
Same as I do with Godot (MIT), Blender (GPL) and KiCad (GPL).
Are you talking about embrace, extend, extinguish? And/or other schemes?
Anyway, regardless of any schemes, there’s always the risk that enough people move away from a software that you prefer to use, whether for its license or otherwise, to trigger its demise.
I understand that a non-copyleft libre license makes it easy for opportunists to build commercial competitors with higher marketing and/or sales budgets, for example, but it’s just not something I worry about.
I don’t know, maybe I should; do you have any historical examples of, for example, MIT- or BSD-licensed software being forked into a closed-source product which the initial users mass migrated to, or got its own audience that grew bigger than the original? In either case, did the original open source project’s contributors move on?
I think it’s mostly a case of original authors taking the project closed or retiring and new maintainers then taking it closed.
Although in the ownCloud case Karlitchek forked and kept NextCloud open, for instance.
I considered copyleft without CLA to mean “open and we promise to keep it that way” and permissive or CLA “open for now”.
Ah, yeah, I hadn’t considered the owners closing it.
I was not aware of the ownCloud case. What were the others you were thinking of? Were they cases where the libre version didn’t get forked by the community?
Even if they are forked, it can still mean migration. MySQL to Maria, Redis to Valkey, Gitea to Forgejo. Heck I still remember having to tell people to stop using OpenOffice and install LibreOffice years after the fork.
Fair enough.
I take communities splintering, migrations, and other annoyances as the baseline cost of the ability to fork, and forks will always happen for a variety of reasons. I don’t particularly expend a lot of energy worrying about avoiding it,
but then, I don’t know how much of an extra problem it is in practice when it comes to copyleft vs. non-copyleft licenses (at least, for other people), so I can understand the desire to do so.
I would’ve sided with the robots and the Matrix, for what it’s worth.