4 ms·
> Any derivative works of AGPL-licensed software must also use the AGPL. TBH, I'm interpreting this statement just like Google is: > Google states that if, fo
by lxe 6y ago
> Any derivative works of AGPL-licensed software must also use the AGPL.
TBH, I'm interpreting this statement just like Google is:
> Google states that if, for example, Google Maps used PostGIS as its data store, and PostGIS used the AGPL, Google would be required to release the Google Maps code.
What's the definition of 'derivative work' here?
- woofie11 6y agoEben Moglen talks about this at length (author of the license). The rough lines are drawn as per how closely the works couple and interdepend on each other. For example, if I build an extension which works with Chrome and Firefox, over a well-defined API, that's an independent work. AGPL/GPL/LGPL does not apply. If I have two pieces of code which mutually rely on each other and form a common system, and for example call back-and-forth, or have APIs specific to each other, that generally does form a derivative work. There's a lot of literature out there about static versus dynamic versus microservice abstraction. That's mostly nonsense. Lawyers don't care about that. You can't get around the AGPL (or even the original GPL) that way, by isolating the GPLed code into a corner over a network service. (disclaimer: not legal advice, get a laywer if you want legal advice).
- p0llard 6y ago> For example, if I build an extension which works with Chrome and Firefox, over a well-defined API, that's an independent work. AGPL/GPL/LGPL does not apply. > If I have two pieces of code which mutually rely on each other and form a common system, and for example call back-and-forth, or have APIs specific to each other, that generally does form a derivative work. So why does the LGPL/Linking Exception exist at all? Software which links against libc doesn't have a mutual dependency; libc is quite happy to run crt0 as long as there's a main symbol somewhere, and yet apparently linking against libc would be enough to constitute a derivative work were it not for the exceptions in the LGPL.
- dathinab 6y agoWrt. GPLv2 what counts as derived work is a mess. LGPL mainly exists because statically linking a library into a binary (especially with link time optimizations enabled) will somewhat modify the binary code of the linked library in the way it is placed in which some lawyers use to argue that static linking is always a derived work. So LGPL let's you rest in peace if you need static linking. (I also have read arguments that even dynamic linking is derived work or that it's totally independent of the linking method but on how the linked code is used. All from lawyers, through not all from US lawyers. Also that was quite a while ago, some curt might have clarified such aspects.)
- mr_toad 6y agoI think that RMS was fairly clear that he thought that linked code was a derived work as far as the GPL was concerned, and that’s why the LGPL was created.
- PeterisP 6y agoA license and its drafters can't decide or change what is considered derived work - that's a core concept of copyright law where any nuances could be dependent on the jurisdiction but not on any particular licence. What LGPL can do is to reassure people by providing specific permission to use the code in some resulting work, no matter if it turns out that it actually is derived work (in which case the licence would grant you the rights you need) or not, in which case you don't need the permission, but it doesn't hurt to have it.
- belorn 6y ago> So why does the LGPL/Linking Exception exist at all? Because RMS wanted a long time ago to have a bright line in the sand that differentiated between a single derivative work and two works that simply communicate with each other. As the story goes he initially thought that linking was two works communicating with each other, but after consulting with a lawyer, the lawyer presented the following scenario. A person goes in front of a judge and say: this piece of software which can not start without my work, (if statically linked) can't be compiled, can't do anything useful by itself, is not an independent work. What will the judge say? RMS then agreed with that scenario and decided that this served as a good line for enforcing the GPL, and for projects like the standard library and similar tools an exception was needed.
- dathinab 6y agoBut saying Goole Maps derives from a database extension which stores cordinates is kinda unrealistic. It's like saying a public transportation company derives from a specific model of trains they use. Sure the storage system enables Google Maps to work but any storage system with similar functionality would.
- apetresc 6y agoA derivative work of PostGIS would be a fork or patches to PostGIS (i.e, a set database extensions for geographic/spatial queries). A mapping application that used PostGIS is not a derivative work of PostGIS, in the same way that a C program linked against glibc is not a derivative work of glibc. At least, that's my layperson's understanding of it.
- saagarjha 6y agoNote that there is a specific exception for that case: https://en.wikipedia.org/wiki/GPL_linking_exception https://en.wikipedia.org/wiki/GPL_linking_exception
- p0llard 6y ago> in the same way that a C program linked against glibc is not a derivative work of glibc I believe this is only as a result of the linking exception; I don't know if this has ever been tested, but my understanding was that linking (either statically or dynamically) against a library was generally considered enough to be a derivative work.
- dathinab 6y agoMy last heads up a fiew years ago was: Legally people can't decide which form of linkage count as deriving and if the linkage form even matter, but static linking with LTO is most times seen as causing a derivative to be produced.
- rbanffy 6y agoA program using PostGIS via TCP is no more a derivative work of PostGIS than a program storing data in its underlying database is derived from PostgreSQL. I can't imagine the tortuous logic one would need to arrive at a different conclusion.
- p0llard 6y ago> PostGIS via TCP From a legal perspective I'm unaware of any ruling which establishes a difference between components communicating via TCP and components communicating through function calls at the ABI level (e.g. linked libraries); the latter is apparently enough to constitute a derivative work (see the LGPL/Linking Exception). There are obvious technical differences, but it's not clear that they should be treated any differently from a legal perspective.
- taldo 6y agoIt's hard to draw a line. Considering that google3 is a massive monorepo, where linking a library into any binary (or library) is just a matter of a single line in the BUILD file, a lawyer could argue that such binary is a derivative work (or, it could be a lot of work to argue that it isn't). Also considering the internal-only patches to OSS libraries, it'd be at least a pain, and quite possibly a wide avenue for trade secrets to leak (not to mention that most of those are so specific to Google's highly specialized production stack that are useless to anyone outside).
- Ajedi32 6y agoFor what it's worth, the license doesn't use the term "Derivative Work". Rather, it explicitly prohibits bundling AGPL software with other software that you aren't able to license under AGPL: > You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: > [...] > c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. This is a requirement which is common to many GPL-like licenses, and one which some developers object to (the later requirements for use over the network notwithstanding). That said, I don't believe the above terms would apply to the hypothetical Google Maps example above, as the license's requirements for making the software controllable over a network seem to be significantly less restrictive: > Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. In that situation, the question of what constitutes a "derivative work" might come into play. Disclaimer: I'm not a lawyer and this isn't legal advise, just my own interpretation based on my reading of the license.
- anticensor 6y agoGPL would be perfect if it had "and, you are not allowed to exercise any other permissions granted to for this work except for ones granted by this licence, even if you have separately received it or guaranteed by any higher authority, nor is the copyright holder allowed to grant such additional permissions to other such users." instead of "but it does not invalidate such permission if you have separately received it.".