[Top][All Lists]

[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

From: Andrew Yu
Subject: How does the System Library Exception work, when the GPL-covered work is a Major Component?
Date: Wed, 1 Jun 2022 20:47:10 +0200

Below was an email to licensing AT fsf DOT org, which may be of interest
for discussion.

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
header files?

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
"further restriction".

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 <>

(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...
<tpefreedom> ok
<Andrew> tpefreedom: I'l ltell you when the repo has actual useful stuff
<tpefreedom> thx
<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 
the license
<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> s/7p/7/
<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 
gpl itself
<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 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 changes are that 
I'll either be answering you, or helping the person answering you
<yrk> s/changes/chances/
<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 
you need
<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 
GPL though
<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> Abstract:
<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...
<Andrew> true...

Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]