Perspectives about use of varying opensource license types: permissive, file-based copyleft, patent clauses, GPL

There have been debates about which licenses or license types are best for preserving opensource freedom. I believe file-based weak copyleft licenses are exceptional. The purpose would be keeping code separate, while allowing use in some form. Dynamic linking is enough for most purposes, which use of the code is the most important objective of opensource.

File-based and permissive license ecosystem
There has been opposition to CDDL, because it had a different philosophy about openness than GPL. It turns out that CDDL is great, because it preserves a clear separation of its code, doesn't restrict usage unless it's not allowed by the other license, and is compatible with side by side use with more other open source licenses. Apache, MPL, other CDDL based licenses and LGPL when following certain rules can be used with each other. GPL doesn't have that type of compatibility with other licenses, and there's even restrictions of use between GPL versions to certain LGPL versions. For GPL versions to remain compatible, the patent license must match, or one version must be lenient on the patent license, because that part is viral beyond its own directory too.

Rationale for requiring those who add to programs to give back to opensource
Some tend to think Stallman's ideas are bad. We all don't fully understand GPL and how far its license boundaries go into other programs. GPL was intended to preserve openness. ISC changed to using MPL2.0 from the ISCL license because organizations would use their code and not give back. Receiving and not giving back was also a premise for Stallman forming GPL, because he wrote programs, which were used and added on to, then he couldn't use derivatives of programs he authored.

My misunderstandings
I used to see LGPL as a one way street into being converted into GPL, but so can any permissive license. As long as the code of the original permissive or LGPL license is preserved, all is good. One situation which we can see as became unfavorable, is the window manager FVWM, where one version is under a permissive license, and the derivative, which is version 3, is under GPL. It's a one way street, but at least we're allowed to still use FVWM3 under those opensource terms. There's many similar alternative and lighter window-managers and compositors, which use permissive licenses, and an infinite way for window managers or compositors to come into existence that, this isn't a loss. One way of protecting a permissively licensed programs' boundaries, while allowing its use, is incorporating it into weak copyleft licenses, that are incompatible with being absorbed into GPL or any other license.

I used to think of GPL as more viral than it was. In a way, it's viral to programs directly connected to it. A lot of source code under GPL is multi-licensed, by the author or because permissive code was absorbed into it, so the code can alternatively keep those terms, so long as its not connected to a GPL program. I also used to think, GPL would revoke a permissive license, but only, if and while that snapshot is connected to GPL. If GPL code would depend on an LGPL or permissive library, I used to think, that GPL would force that and other programs which depend on that permissive library into GPL, which it doesn't. So, because GPL isn't as viral as I thought it was, it's not too bad for lots of programs, especially graphical and capstone programs. GPL is good for endpoint programs, especially graphical ones, like Xpaint, Gimp and multimedia players/applications with GUI's, but not dependencies which are meant for widespread use across multiple programs.

Where the idea of GPL makes sense
The idea of GPL which is intended for returning improvements to programs, also makes sense for endpoint programs which are run by nonprofits and community use. While, GPL is made so companies or people must give back their improvements, the author doesn't have to do that, and can benefit financially from others improvements without having to give back all of their improvements. The author is able to use their program in a proprietary way, while the license to others is under the GPL. In fairness, that organization or program did give usage for that program in the first place. Also, another author can write a separate GPL program, which is used with that program, and keep their own controls on that, which if I'm not mistaken, the other author can't use those parts in a proprietary way. We see the problem of what happened with ownership of Audacity, but it can always be forked by the community and/or nonprofits without worrying so much about who profits. Code in complementary GPL programs can be created, which has its own likewise controls as the author, which leverages the code of the other author, while it doesn't go against the stated purpose of the GPL's own vision of free software.

The Linux kernel is GPL, but obviously, programs with incompatible and opensource licenses run on Linux. Wine runs on Linux and is also GPL, but proprietary programs obviously run on it. We knew that these ran together then, but maybe didn't see it thought out. Seeing these examples, GPL isn't as viral as the basic description would seem.


GPL needs alternative for similar purposes
If a newer version of GPL is made, which the patent clause doesn't go viral into dependencies or at into least FSF and OSI approved dependencies which have a patent clause, I believe it would be compatible with LGPL2 and LGPL3. I see a need for a or a few GPL replacements, where it can use MPL, Apache, CDDL, LGPL2+ and LGPL3 as dependencies, but where the viralness only applies to code which is dependent on or upwards of that GPL code.

I also see a reason for a replacement of LGPL with a file-based copyleft license, that is directory wide. It would be like LGPL, except, it would have simpler terms and wouldn't be incorporated into GPL.

Multi-licenses, also allow different codes to work together, though in MPL2.0, it is wordy to include this description, which otherwise programs already do this.

Previous LGPL and GPL licensed programs can and should stay, their roles would be limited in the opensource ecosystem to programs that aren't libraries or aren't needed by lots of other programs, just within a program's needs. There should be less need for competition with other opensource licenses, while those can remain on their own front end or end-cap place of the program ecosystem. Libraries and other programs which lots of different programs depend on shouldn't be closed off to GPL, while it's good that this largely isn't the case.

I used to see GPL as an issue, when thinking of how to reduce redundancies of programs which did the same thing, but had too many dependencies which dependency hell became an issue. The problem on FreeBSD isn't as bad as it used to be. OpenBSD's sndio, and certain audio programs turned into libraries (libcanberra), instead of full fledged form, made dependencies better. Now, I understand that, many libraries and dependencies of many programs are under LGPL, and I see LGPL in a better light now, as compatible for use with other programs. Another program is webcamd, which uses Linux drivers with GPL licensed code, but has BSD licensed files added to it, which that code can remain open for use with other permissive and file-based copyleft licenses.

Ecosystem of GPL, with permissive and file-based copyleft
I see a model, where permissive licensed code is kept separated as a different program, and makes use of that stripped GPL licensed code through linking. I believe that drivers should have been created (from Linux's side) as LGPL2+ at least: this includes webcamd and scanner drivers, which are GPL. GPL limits what kinds of opensource licenses programs that are used with it can be.

LGPL, CDDL and MPL allow other code to be dynamically linked to it, even proprietary code. While LGPL can't use MPL or CDDL dependencies, if I'm not mistaken, CDDL and MPL might be able to use LGPL libraries through dynamic linking, as they would be treated on the same terms as proprietary to LGPL's definition. Anything which is intended to work as a widely used library has to be LGPL, other weak copyleft licensed or permissive, provided that it's upward compatible with other open source licenses. GNU acknowledges the need for libraries which can be used across the board, if they are to be widely used. CDDL can be a glue which I believe can use LGPL below it, while it keeps GPL from being dependent on it. LGPL2+ is a glue which works with when what relies on it is kept separate, GPL, other opensource code and proprietary code.

liceco-lgpl.jpeg

diagram of permissive, file-based copyleft & GPL ecosystem, by dynamic linking use, not by inclusion into code. Parts may be wrong, or a detail may be lacking. This is to my understanding now.

Ports: organizing GPL from other licenses
FreeBSD allows the choice of license and license groups to use in /usr/ports/Mk/ of bsd.licenses.mk and bsd.licenses.db.mk.

I see a model, where code with FSF and OSI approved software with opensource licenses, that isn't GPL only, is kept organized. Then, GPL code which isn't mult-ilicensed to an other type of opensource license is sorted on top of that. This way, the dependencies which are opensource but aren't solely GPL can be sorted. Then, the capstone programs in GPL can be sorted on top of those dependencies.

Furthermore, fork model of Ports and Pkgsrc, where a main repository only has FSF and OSI opensource code, which are not exclusively of any GPL. The repository or sub-repository that depends on it, would be GPL2 and GPL3, without other opensource licenses, which would make it qualify for being in the main repository. In other words, if it had a permissive or weak copyleft license (including LGPL), it would go into the main repository, and GPL code without those other licenses would go into the sub-repository. For code which doesn't fall under either category, there would be another miscellaneous repository. The organization of those programs and the licenses they use would help people see and improve dependencies.

licmain-sub.jpeg

Diagram of model as basis of use within Ports, or basis of fork of Ports or Pkgsrc. It can be thought of as the part exclusively being GPL as jailed.

For short term use, a lot can be done without that model, and with basic understanding of how LGPL code can be used with other opensource licenses in the ecosystem.

LGPL association with bloat
In the past, I associated LGPL with bloat, seeing as how Cairo added a lot of excessive programs for simply enabling an SVG dependency. Another problem is how Pulseaudio, Avahi and Pipewire are intended to ingrain themselves within everything, including the network. I sort of get the idea, but it's pointless when OpenBSD's along with use by other BSD's alternative programs which do the basic sound or Zeroconf capabilities aren't full of that. JACK is also said to be good for professional audio. It's also pointless, when everyone complains about PulseAudio and Pipewire, and when its creator blames Ubuntu for implementing it incorrectly. It's because the program isn't as great as its creator thinks it is. A lot of code under LGPL is still implemented in a Linuxism way, for example, programs which compiling them calls for RedHat build tools which aren't native to FreeBSD. So, a benefit that those are LGPL licensed programs is, it gives the opportunity for forking, trimming, and using a layer to be linked to BSD programs. Because of the shortage of BSD share, it would make sense for loose opensource BSD standards so BSD's, other Unix-like OS's (OpenIndianna, Haiku, Minix) and opensource software makers can work together sharing the load, needing less contributors. Example of type of open standards and explanation Thread opensource-communication-frameworks-xmpp-sip-amqp-mqtt-cap-iax.79474

On the other hand, LGPL2+ has usage compatibility including through dynamic linking with GPL, other opensource licenses and proprietary code. This is what makes it and permissive license which don't have patent clauses most compatible, including with versions of GPL.
 
Anything ".*GPL.*" is by definition a can of worms. Enforced 'freedom' is no freedom at all.

Except to the extent that FreeBSD developers, core and Foundation have to wrestle with GPL concepts to maintain true freedom in BSD-licenced software, truly enabling of sharing rather than hoarding or 'policing' of it, these discussions belong on Linux fora, where they've long been de rigeur.

Here they only muddy our nice clear water, as far as I can tell.
 
Anything ".*GPL.*" is by definition a can of worms. Enforced 'freedom' is no freedom at all.
I agree with this.
But I do think a lot of thoughts around licenses lack context.
What do I mean?
Are you writing software and using another piece of software (as a library or linked, etc), are you merely an end user of a piece of software or are you intending to distribute said software (even unmodified)?

As a simple end user, I think the license used doesn't affect you much (except for standard commercial/Windows ELUAs) as long as you pay attention to any "personal" or "commercial" use.

If you are writing software, then writing against other software you need to pay attention to their license (GPL vs LGPL).

If you are modifying a piece of software (say fixing a bug in Linux kernel) then you are often bound by existing license, so your modifications you lose control over.

But that's all just my opinion, I'm both a user and modifier of software, been on both sides of everything.
 
Anything ".*GPL.*" is by definition a can of worms. Enforced 'freedom' is no freedom at all.
This was my conception and is what I'm trying to get around. It's not exactly a can of worms that I thought it to be, but it does restrict other opensource licenses and use with them. File-based or weak copyleft licenses, enforce giving back, but this is limited to the actual parts within the files written by the author themselves. Freedom is kept, by allowing its use with other code, so long as it's outside of its boundaries. If GPL is enforced freedom, it has permission to absorb MIT code into it. I don't know if it's possible to have a BSD-like permissive license, that's compatible with GPL, which is also file-based copyleft, it would be like the Apache license that's permissive, with a compatible patent clause.

I've long seen GPL as a paradox, which sounds good when described, but a paradox in practice. I see permissive licenses as playing a role in that paradox, that they grant freedom for GPL to do that, or potentially a role of other entities to do stuff that's more unfavorable.

The idea of the main or grouped part of a main repository was to organize GPL, apart from permissive and file based licenses, which work together well. My computer crashed as I was working on that, and I wanted to get that diagram up sooner, which more easily explains a concept. That diagram concept was intended for a way to unmuddy waters for the BSD world. Avoiding an issue isn't going to fix it.

I believe that the more that file-based licenses and programs that use them proliferate, that GPL's use will be less relevant to common dependencies. GPL should be limited to use as endcap, or programs which other programs don't rely on, except limited to that program itself, most often, front ends.

I see a reason for something like GPL, but the simplest replacement will be one where the viralness (especially for the patent clause) only extends upwards to code which depends on it, and not downward to any of its dependencies. As for the Linux kernel, it doesn't make sense to have GPL, so perhaps something between GPL and a directory wide file-based copyleft license would be better. In the case of the Linux kernel, the viralness should only extend downward to dependencies. I understand the stated premise of GPL's purpose, but couldn't understand it in practice for some time.

I believe file-based copyleft licenses protect code boundaries the best, and don't restrict use with other opensource licenses which allow them. It wouldn't hurt to multi-license permissive code under file-based licenses, with the exception of compatibility with GPL.

I'm looking at a way that LGPL which has a big influence because of common dependencies can be used satisfactorily with other opensource programs, which are common of the BSD world. With this, LGPL as a license can be embraced, even if the style of the way programs are engineered isn't. LGPL can be worked around a lot, while GPL has too many restrictions on that.


Anything further of what potentially supersedes GPL, I know needs to be proposed to OSI or FSF and discussed in depth on Linux forums. I get that. For here, I want to figure out the ecosystem and model by working around GPL and where GPL fits better in with the BSD and file-based copyleft ecosystems. Now that these ideas are written out, they can be referenced in other venues. I was trying to find a good place for this, and I thought I'd start here, then carry on elsewhere.

It's ironic that there are more incompatibilities with licenses within the GPL sphere, than other licenses are with each other in the open source ecosystem.
 
Anything ".*GPL.*" is by definition a can of worms. Enforced 'freedom' is no freedom at all.
This. It's an oxymoron, so blatantly obvious, still the GNU guys don't get it. ?

We have a policy at work not to use any *GPL*-licensed software or library for our own development. BSD*, MIT and a few other licenses are perfectly fine. Most of our software is never given to others, just operated on our own servers, so in many cases, using *GPL* stuff should be fine (except AGPL of course), but then, better be safe than sorry. One issue with these licenses is their complexity, just avoiding them completely is a lot cheaper than paying an army of lawyers.
 
Anything ".*GPL.*" is by definition a can of worms. Enforced 'freedom' is no freedom at all.

Except to the extent that FreeBSD developers, core and Foundation have to wrestle with GPL concepts to maintain true freedom in BSD-licenced software, truly enabling of sharing rather than hoarding or 'policing' of it, these discussions belong on Linux fora, where they've long been de rigeur.

Here they only muddy our nice clear water, as far as I can tell.
Well, there are significant GPLv2 chunks needed to make drm-kmod work. This is kind of crucial for modern laptops.
 
Well, there are significant GPLv2 chunks needed to make drm-kmod work. This is kind of crucial for modern laptops.
As far as I know, this is not the case any more. The drivers themselves are not *GPL*-licensed, and all parts of linuxkpi required are rewritten by now. That's also why it's a candidate for being included in base again (as was the case quite a while ago).
 
As far as I know, this is not the case any more. The drivers themselves are not *GPL*-licensed, and all parts of linuxkpi required are rewritten by now. That's also why it's a candidate for being included in base again (as was the case quite a while ago).
You are correct! Does not seem like there's much here any more:

But I think that goes towards my point of "end user or developer/modifying code".
I was responding to smithi otherwise excellent post with my opinion that we do still need to care about the GPL, and that therefore this thread is not off-topic.
 
If you are modifying a piece of software (say fixing a bug in Linux kernel) then you are often bound by existing license, so your modifications you lose control over.
Only if you distribute the modifications. If you only use them yourself, you do not lose control over them. I can modify GPL'ed software, or use pieces of GPL'ed software in my own projects, and as long as I never ship the result to anyone else, I don't have to share the source code or modifications with anyone.

This is one of the insidious side effects of the GPL: It makes it less likely that people (or corporations, including those corporations that employ hundreds of thousands of software engineers) share software. It also adds high costs of IP enforcement and lawyering.
 
Well, there are significant GPLv2 chunks needed to make drm-kmod work. This is kind of crucial for modern laptops.

While I was writing that, I was aware of GPLv2 being an LCoW (lesser can of worms) than GPLv3, and I recall but was not involved in discussions amongst developers and Core about dealing with the repercussions, finer distinctions about LGPL etc ...

Not to mention Linus' keeping Linux kernel itself at v2 with no v3 option, according to my very limited understanding.

So no, it's not off-topic per se, but could well be shaping up to be a heavy-duty time-suck for dubious benefit, IMNSHO. I've other projects needing my limited time and energy.

Cheers, Ian
 
As for the Linux kernel, it has an artificial boundary at User-space API (UAPI). This exception makes the GPL's terms for the kernel stop here, and not apply to other programs which run the kernel. Without this exception, the GPL's terms would make it more viral past this point. https://www.kernel.org/doc/html/latest/process/license-rules.html

For comparison, GCC is under GPL3, with a runtime library exception.

How the boundaries of GPL on the Linux kernel limit it, so it can work with other software is great. The only issues, are hardware drivers, however, it would be the same issue if they were proprietary and it's that we see the opensource code and are more often reminded of the programs. At least the hardware drivers are opensource, and people can gradually replace it with substitute code to make those parts not exclusively GPL. Thinking about how FreeBSD works, most drivers work on the kernel level. Minix comes to mind as a potential Linux kernel replacement, where it's permissively licensed. This is so the boundary can be to allow the drivers to be separate from the GPL. It can be adapted to have file-based copyleft licenses for drivers, and/or other parts. In comparison, FreeBSD has the most drivers of any permissively or file-based copyleft kernel or OS.

Most system libraries either use the GNU Lesser GPL, or use the GNU GPL plus an exception permitting linking the library with anything. These libraries can be used in nonfree programs;

Wine and other components of it are under LGPL, which allows proprietary (often windows software) to run on it. I was mistaken about its license earlier. I'm not sure about other emulators or compatibility layers in Ports, which have GPL and not other licenses which don't allow linking. Perhaps it's obvious, that the terms don't extend, or they have an exception like the Linux kernel does.


GPL2 and GPL3 are incompatible with each other [https://www.gnu.org/licenses/gpl-faq.html#AllCompatibility]. As long as the viralness doesn't pass certain boundaries, and doesn't stop the use of other opensource licenses on the same system, and those programs are contained their section of the ecosphere. For GPL2 and GPL3 code to coexist, they would need to be kept separate, have clear boundaries and/or use multiple licenses. Derivative code under LGPL2 can be relicensed into GPL2, not GPL3. Derivative code under LGPL3 can be relicensed into GPL3, not GPL2. LGPL doesn't allow other relicensing, unless the author allows it.

I wonder if it's possible to have a license which its code can't be absorbed into GPL (either series, preferably both), while it can be used by GPL. Instead of permissive licensed software being absorbed it into GPL, why can't it go into LGPL instead? Furthermore, it should stay as LGPL, and not be absorbed into GPL. If possible, that type of replacement needs to be made for LGPL, permissively licensed code can be absorbed into that, so should its boundaries need more protection according to some people's opinions.

I read that some opensource licenses are incompatible with GPL, which looks like, rather it's not liked and discouraged, because it can't be readily absorbed by the GPL, than actually being runtime dynamically linked incompatible. I'm not sure of this part, because some arguments come from a camp of discouraging a type of use, while it may be allowed. There's some debates about the incompatibility or compatibility of CDDL with GPL: of claims people asked for CDDL to be incompatible; of claims that the GPL side discourages CDDL and doesn't go into detail; and Canonical's inclusion of CDDL licensed ZFS into a GPL distribution. Regarding GPL and CDDL, I'm primarily interested if GPL can use CDDL code (because CDDL makes a suitable compatible layer for other software) through any form of dynamic linking, as their code bases rightfully can't be mixed.

https://web.archive.org/web/2009100...is.org/os/about/faq/licensing_faq/#CDDL-combo is helpful regarding CDDL. Found Thread gplv2-versus-cddlv1.55294 which shows about CDDL1 and GPL2, and possible infringement of the CDDL license committed by Canonical with its Ubuntu Linux distribution by inclusion of ZFS. If I'm not mistaken, the only way the Linux kernel could include ZFS, is if it has a link exception, which that program doesn't have to come under GPL's terms. The Linux kernel only has a link exception through its User Space API (UAPI). Not sure, how Canonical justifies using CDDL, and didn't look up where it is in Ubuntu or if it really has link exceptions.

https://www.apache.org/licenses/GPL-compatibility.html is helpful for showing how Apache can work with GPL, and give some insight into what else could work with GPL.
 
Back
Top