[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
How does the System Library Exception work, when the GPL-covered work is
How does the System Library Exception work, when the GPL-covered work is a Major Component?
Wed, 1 Jun 2022 20:47:10 +0200
Below was an email to licensing AT fsf DOT org, which may be of interest
Dear FSF Licensing Team,
I am drafting a computer architecture and operating system thereof with
some friends. I would like to use a copyleft license for both the
architecture design and the operating system.
As the goals of this design and the "reference" operating system thereof
are unique and unprecedented, I would like to use strong copyleft.
I currently choose version 3 of the GNU Affero General Public License
(with or-later). The reason for me to pick the AGPL instead of the
regular GPL is because I do not want to see people use my works to
prodive services that I and the wider community cannot freely host
ourselves. I am aware that this is not an inherent solve for Service as
a Software Substitute, but I believe that this prevents cases where the
service prodivder produces significant modifications monopolizing a
field of services (be it SaaSS or not, it could be communications
services both cases are possible since in this case it's a general
operating system), as people could take their code and host it
My operating system has a kernel that accepts system calls. This leads
to the first question:
Does using system calls for a specific kernel count as linkage to
the said kernel, or by other means require the calling program to be
released under the (A)GPL, if the kernel is under the (A)GPL?
Linux is released under the GNU GPL, version 2, but many nonfree
programs and non-GPL version 2 programs run on it, notably the GNU core
utilities. Is this somehow a GPL v2 violation?
If for some reason it is valid to write non-AGPL programs for an AGPL
If someone develops server software for my operating system, and the
same or a different person uses said server to provide a service
over a computer network while the server software itself is not
AGPL, would they be conveying the kernel, and thus need to provide
the source code of the kernel?
In "normal" programs under the (A)GPL, the definition of "Corresponding
Source" to my interpretation includes libraries that are not System
Libraries or generally available free tools. However, I have seen many
GPL programs distributed in binary form which does not include its
libraries when distributed as source. Is it dynamic linking that's
making a difference here? Technically, without the library existing
elsewhere on the system the program is incomplete and the program itself
does not include the library, so is that why the programs do not need to
distribute the library's source with their source, or is it simply a GPL
violation that most people disregard? And what about header files for
languages that have header files, since they're included in the Object
Code no matter how the library is linked? Is the author and/or
distributor of thr GPL program supposed to distribute at least those
The operating system would also include a standard library, which would
under my interpretation fall under System Libraries. These libraries
help the program in question to work with my kernel, which in turn is a
Major Component of my operating system. With regard to how the System
Library exception works, does the System Library exception allow linking
a non-(A)GPL program with my standard library?
If the System Library exception indeed allows linking non-(A)GPL
programs to my standard library, is it possible to "circumvent" this
exception or otherwise forbid such linkage without forking the (A)GPL
(which I generally avoid)?
Some in #fsf on the Libera Chat Internet Relay Chat network suggest
using a section 7 exception to except the System Library exception.
However, as I read from section 7,
> "Additional permissions" are terms that supplement the terms of this
> License by making exceptions from one or more of its conditions.
This seems to only allow me to grant additional *permissions*. For
example, "You may distribute this program without the usual requirement
to distribute the full text of the (A)GPL with it" or "You may link this
program ad a library to nonfree programs" (the latter being an
oversimplification of the LGPL). However, these are additional
*permissions*. I mean, normally the GPL permits distribution without
the source of System Libraries, and adding an exception on that would
mean now I'm not permitting distribution without the source of System
Libraries, which doesn't seem like an additional permission rather a
A summary of what I want:
- The operating system, including its kernel and standard library ("My
Works") are Free Software;
- The License of My Works automatically grant patent licenses, such as
section 10 of the (A)GPL; (If the projct gets bigger, something like
"you get the patent license only if you develop free software with the
technology", i.e. what I might call "patentleft" would be nice but
obviously the (A)GPL wouldn't allow that...)
- My Works are distributed with source under the The License (this part
is basically weak copyleft);
- My Works, as libraries and the kernel that accepts system calls, may
only be linked to programs under The License (strong copyleft); (As
an effect, no nonfree programs would be allowed on the system...)
- My Works, if used in any way, shape or form, over computer networks or
similar technology in which it could be part of a service, has its
source code provided by the service provider, similar to how the AGPL
(In the above list, The License refers to the license chosen that fully
or mostly satisfies the list's requirements.)
I understand that copyright law might not allow for all of that, but
what is the closest that I can get to, and how specifically does
copyright law (say the US's for example?) not permit these goals?
I am deeply confused with this situation and I ask for clarification.
Thanks and Best Wishes,
Andrew Yu <https://wew.andrewyu.org/>
(P.S.: My points on Free Hardware Designs might be interesting:
IRC logs below.
<Andrew> suppose that there's an OS under the agpl
<Andrew> if someone hosts a web server on the OS, is that conveying the OS?
<DiffieHellman> Not unless the web server is under the AGPL.
<DiffieHellman> If the web server was a direct derivative work of the OS, then
it would be covered.
<tpefreedom> Would there be a point to an AGPL'd OS?
<Andrew> tpefreedom: That's why I'm asking
<yrk> Andrew: operating systems are not, typically speaking, every under a
single umbrella license
<Andrew> The GPL's system library/etc exception makes it quite bad for
operating systems that don't want to be used proprietarylu
<tpefreedom> Seems like most of the reasons for a network os would be SaaSS.
<yrk> Andrew: instead, they tend to be a collection of a great many individual
programs, each with its own license
<Andrew> yrk: I'm licensing an operating system that I make
<Andrew> And everything in there is copyright me
<tpefreedom> Andrew, what's the OS?
<yrk> Andrew: that is why I wrote "typically". by the time OSes are functional,
they tend to be a collection of a lot of independent pieces
<Andrew> tpefreedom: currently called BruhOS (lol), will change later, still in
<Andrew> yrk: Understood
<tpefreedom> Do you have the code posted on a forge?
<Andrew> Tha\'d also mean no nonfree programs could exist for my OS which is
<yrk> Andrew: all that said, I don't see a problem with using AGPLv3 for all of
the parts of the OS. You can always add a section 7 exception which "switches
off" the network interaction clause in section 13 if you need to
<Andrew> tpefreedom: Current stage is design on pencil and paper
<yrk> Andrew: and even if you do add such an exception, section 7 permits
anyone to add it back in once they get the code
<Andrew> yrk: A stricter copyleft license is what I want...
<Andrew> tpefreedom: I'l ltell you when the repo has actual useful stuff
<Andrew> yrk: Yes, I know that, but what I want is "noone can use this
operating system to host services without giving a copy of its source"
<yrk> Andrew: the limiting factor for that is the reach of copyright law, not
<Andrew> yrk: Can you elaborate on that?
<Andrew> Section 7 does not allow me removing the system library exception
<yrk> Andrew: A/GPL (and most other freedom-respecting licenses) are based on
copyright law; that is how they get their effect and their legal power
<yrk> Andrew: yes, section 7 allows you to remove anything you want
<yrk> Andrew: that is called an exception, and you can add as many exceptions
to your work as you wish
<Andrew> I can remove limitations under section 7
<yrk> Andrew: in fact, LGPLv3 is a set of section 7 exceptions to GPLv3
<Andrew> gimma a sec
<yrk> (I'm currently writing a section-by-section analysis of GPLv3, so this is
all rather fresh in my mind)
<Andrew> Okay, I'll try to explain why I think section 7 does not allow
removing the system library exception
<Andrew> The exceptions allowed to add, as in section 7, grant additional
permissions to distributers
<Andrew> For example you can say "you can redistribute this without a full copy
of the license"
<Andrew> or "you can link this to nonfree programs" which is basically lgpl
<Andrew> But, the system libraries exception is not an exception under section
<Andrew> In fact, it's not a restriction
<yrk> none of what is in the GPL is a restriction
<yrk> all the GPL has are terms and conditions
<Andrew> It allows linking incompatible (non gpl) programs to this system
library when the covered work is a system library
<yrk> Andrew: not exactly
<Andrew> No, no; For example, "You can only redistribute if you offer source"
is a limitation to "You can just distribute"
<yrk> Andrew: the system library exception, in both GPLv2 and GPLv3, are part
of how the GPL define source code
<Andrew> It is not a restriction compared to no-license-all-rights-reserved
<yrk> Andrew: it isn't a restriction at all. please note that GPLv3 does indeed
use the word "restriction" and it doesn't mean what you mean
<yrk> Andrew: so using the word "restriction" to describe something in GPLv3,
but in a different way than GPLv3 uses it, is very confusing
<Andrew> I mean, for example, you can't put "You may not redisteibute this
progrm" as a section 7 exception
<yrk> Andrew: GPLv3 starts (after the preamble) with "TERMS AND CONDITIONS" and
<Andrew> Uh, yeah I should rephrase
<Andrew> Please gimme a minute or two
<yrk> Andrew: section 7 would define "You may not redisteibute this progrm" as
a (quote) "further restrictions". here we get the meaning of restriction that
GPLv3 defines: something that goes beyond the conditions of the GPL
<Andrew> Yeah, further restriction is what I mean, gimem a sec
<Andrew> Without the system libraries exception, if the library is (A)GPL and
is itself a part of the major component, a nonfree program cannot use the
library that's part of the major component; With the system libraries
exception, such use is allowed, is this correct?
<Andrew> If the above message is correct, in this case, "you may link a nonfree
program to this GPL system library" ils a permission granted by the GPL, and a
section 7 exception is not permitted to remove this permission granted by the
<yrk> Andrew: I can see why you are thinking in that direction, but you are
thinking about it the wrong way around
<Andrew> yrk: I really want to understand this, eager to hear why
<yrk> Andrew: I would strongly recommend writing in to email@example.com so
that we can dig into this in a detailed back and forth. I think that there is a
lot to untangle
<Andrew> yrk: Could you tell me your email? A PM would be okay, as I may want
to CC you and licensing@'s reply is of interest
<yrk> Andrew: I'm one of the people behind firstname.lastname@example.org. changes are that
I'll either be answering you, or helping the person answering you
<Andrew> Ohh, nice :D
<yrk> Andrew: I will try a stab at a short answer: 1) the system library
definition is part of GPLv3's terms and conditions. 2) section 7 "additional
permissions" allow you to "supplement the terms of this License by making
exceptions from one or more of its conditions". 3) from (1) and (2) we get that
you can make an exception to the system library defintion
<Andrew> I'll explain my concerns with this in the email
<Andrew> yrk: May I quote your IRC messages in the email?
<yrk> Andrew: instead, you are focusing on defining the system library
defintion as an "exception" or "restriction". but note! read the system library
defintion and you'll see that the GPL doesn't define it as being either of those
<yrk> Andrew: please do; that sounds fine. irc is public
<Andrew> Alright, thanks
<yrk> which is why I say that the GPL only has "terms and conditions", and
section 7 allows you to make exceptions to some of them. and that's really all
<yrk> of course email will allow lengthy back and forth (without flooding this
<yrk> another example, lgplv3 states "You may convey a covered work under
sections 3 and 4 of this License without being bound by section 3 of the GNU
GPL." You could do the same, only for the system library text.
<yrk> finally (and apologies to the channel): important to note that under
section 7, anyone can remove those exceptions before distributing your software
and therefore revert it to A/GPLv3. to avoid that, you would have to
effectively fork the GPL.
<Andrew> Ah yes, that is another concern; I generally want to avoid forking the
<Andrew> I'll explain in the email
<Andrew> Another issue, about \Test_User choosing their license
<Andrew> I'll paste the IRC logs to an url, gimme a sec
<Andrew> 16:16 <Andrew> \Test_User: *Please* use a copyleft license for your
architecture and OS
<Andrew> 16:19 <\Test_User> I mean, I don't particularily want to block them
from making proprietary versions of mine, bc that simply gives them a reason to
ensure my version is never seen in use
<Andrew> 16:28 <Andrew> \Test_User: I really don't want to see yet another good
technology be forkpatentfilled leaving free implementers always incrisk of
patent infringement for obvious improvements
<Andrew> Very similar to my case
<Andrew> Though in this case he hasn't decided to copyleft it
<\Test_User> 16:29 <\Test_User> would need a way to ensure no patents infringe
on my designs yes
<Andrew> Ah yes
<Andrew> While in my case (writing in email) it's me having concerns that the
GPL isn't strong rnough
<yrk> there are limitations to what a license based on copyright law can do.
those limitations come from the reach of copyright law, and not from the
license. you need to make sure that you know where the problem is coming from
<Andrew> Yup - writing in the email
<Andrew> yrk: One question that I'd bring to IRC for now: The Linux is GPL v2,
what allows nonfree programs to intentionally be compatible with Linux, as in
use Linux syscalls?
<yrk> Andrew: mostly enforcement; nothing much to do with the GPL. they've made
their own declaration of what they want to enforce. the copyright holder is the
only entity who can do that, so they are taking advantage of that
<Andrew> Oh, so it's technically a GPL violation for nonfree programs to do
things with Linux, right?
<Andrew> If that's true, then maybe I don't need an exception - this is
complicated, writing into the email
<yrk> a lot of the stuff to do with the kernel Linux would be enforced if it
was an FSF-held property
* Andrew wonders how copyright is enforced if the copyright is owned by an
indivudual who passed away
<Andrew> ... which differs from juristictions
<yrk> moreover, and to the chagrin of rule-minded programmers, licenses are not
code, and judges are not machines. people interpret licenses, sometimes they
get challenged, and sometimes they don't
<yrk> Andrew: copyright is a goverment-granted, exclusive property right. it
passes to survivors like any other property right
* Andrew looks things up
<yrk> for the recond, I think that copyright law is anachronistic and
ill-conceived. but it is what we have right now...
Description: PGP signature
|[Prev in Thread]
||[Next in Thread]|
- How does the System Library Exception work, when the GPL-covered work is a Major Component?,
Andrew Yu <=