Hacker News new | past | comments | ask | show | jobs | submit login

I looked it up. Agpl is meant to close the loophole whereby, you know Google can use GPL tools while they index the web but I can't demand a copy of their private repos source code, since I just get to use the result (over the web). Agpl closes this loophole.

I think gpl is enough for web apps. I don't think I should have the right to demand all of gmail's or google search's server-side code if they use but don't distribute gpl software as part of making it.

But all companies need to steer really clear of agpl code. Even editing an image using an agpl image editor could taint the image, even though you're not exporting any code.

I would absolutely demand that anyone working for me not use any agpl software. I think it would taint even the copywrite on a logo.

Maybe I would be tainted by publishing a document they wrote in an agpl text editor, even if they license it to me.

Just my impression after 5 minutes of research. If someone has more detailed legal position please do correct whatever I got wrong.




>But all companies need to steer really clear of agpl code. Even editing an image using an agpl image editor could taint the image, even though you're not exporting any code.

This is an outrageous claim. Citation needed.


Dude, I literally didn't know what agpl is. I found:

>Just my impression after 5 minutes of research. If someone has more detailed legal position please do correct whatever I got wrong.

after 5 minutes of Googling. downvoting my personal research results after 5 minutes of Googling won't get anyone to answer with the corrected version. I had never heard of agpl until I googled it and summarized what I saw.

It's a summary. if you put up a web app where you modify open source software as part of your stack, you have to publish those changes if people ask for them. Even if you are not distributing those changes. (This is my impression.)

I look forward to a correction from an expert - it's why I posted what I found. (Yes, what I found was outrageous.)


> after 5 minutes of Googling. downvoting my personal research results after 5 minutes of Googling won't get anyone to answer with the corrected version. I had never heard of agpl until I googled it and summarized what I saw.

Honestly we should be downvoting comments like these more. The AGPLv3 isn't new and the original text isn't that long. We don't need incorrect third hand summaries of the license text with additional wild speculation and unfounded advice. Everyone writes comments here like they are an authority on every topic, but it's a good reminder that many authoritative-sounding comments aren't any better than gossip.

Basically everyone I've talked to has an incorrect understanding of the AGPL and it's not because the original text is ambiguous (although there are parts that are ambiguous). It's because people read and write bad summaries and until the common knowledge is completely wrong.

Here is a good summary: the AGPLv3 is essentially the GPLv3 with the addition of section 13:

https://www.gnu.org/licenses/agpl-3.0.en.html

> 13. Remote Network Interaction; Use with the GNU General Public License.

> 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. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.

> Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.


Suppose imagemagick has this license.

If I modify this popular commandline program to do my deep learning based manipulation on my server, do I have to publish my changes if asked?

Suppose Go has this license. If I don't distribute Go but modify it to serve some kind of requests in 2 ns instead of built in Go's 1200 ms for that operation, do I have to share my version even if I am only using it in-house, if it serves some traffic to people (its "output") and they request my code?

If any of the backend of Google's search engine, Google, which crawls the whole web, includes tooling that this license and which they've modified internally, can I request a copy if I see its crawl results as a user?

Please answer these questions.


TL;DR no, yes, probably no

Go is a compiler+runtime. AFAIK any copyleft compiler worth using explicitly makes exceptions for its output and runtime, but the FSF says generally that the output of a GPL program is not also GPL[0]. If the runtime is AGPL (without such exception) and you link it into your program, your program is now considered a modified version of the AGPL runtime (e.g. it works exactly like the GPL in that linking is considered modifying). If your service interacts with users over a network, you have to offer the source of your modified program. Since you linked the runtime, you didn't even have to modify the Go source code to make an improvement (if there were an LAGPL, the linking could be OK unless you made the modification).

The other two cases are more ambiguous since they do deal with the ambiguous part of the license. The license says "interacting with it remotely through a computer network". However, it's not clear how much indirection is allowed, so you have to use some judgement. The FSF gives guidance [1]

> If a program is not expressly designed to interact with a user through a network, but is being run in an environment where it happens to do so, then it does not fall into this category.

However, I would be careful not to create a combined work that does interact with a user over a network in an attempt to circumvent this. E.g. a network proxy that was intimately tied to a non-networked program. See [2]

> By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

Unless you consider the imagemagick command line arguments "complex internal data structures", it's probably difficult to run afoul of this.

For the Google search engine case, it depends on what degree the tooling interacts with users over a network. E.g. if it's part of an batch process to calculate rankings, it's not interacting with users over a network. If it's a backend that renders part of the results page for user requests, then probably yes. If it's crawl infrastructure that downloads pages on the web, probably no since that network interaction probably isn't considered to be with a user[3].

0: https://www.gnu.org/licenses/gpl-faq.html#WhatCaseIsOutputGP...

1: https://www.gnu.org/licenses/gpl-faq.html#AGPLv3InteractingR...

2: https://www.gnu.org/licenses/gpl-faq.html#MereAggregation

3: https://www.gnu.org/licenses/gpl-faq.html#AGPLv3ServerAsUser


Thanks for your detailed reply, I read it carefully. Let's stay on imagemagick, except we pretend it has an AGPL license (that's not it's actual license, but this is the example I want to stick to.)

So under these conditions: if you have a server where you upload a picture of yourself, and it shows how you will look in 20 years, and the server does this by making actual modifications to imagemagick, then you don't think I have to publish my changes to imagemagick? I mean if I dig into the AGPL source code and really modify the whole program to do what I want/need. I can keep those modifications private, in your opinion? While even selling the output?


If you keep your modified imagemagick a separate program from the server that interacts with users (and don't e.g. exchange complex internal datastructures over IPC between imagemagick and the server) then it seems fine. If you add network interactivity directly to imagemagick then no.

I wouldn't worry too much about this case in practice because there are very few programs that choose the AGPL and don't have network interactivity.


>It's a summary. if you put up a web app where you modify open source software as part of your stack, you have to publish those changes if people ask for them

Only specifically your changes to AGPL code, but otherwise correct.

This is reasonably well described on GNU's own page[0] on the AGPL.

[0]: https://www.gnu.org/licenses/agpl-3.0.en.html


Well I shouldn't have to publish them, if I'm not distributing that software.

Your private forks are private, even if you produce something using them. You can't taint that production or force someone to publish changes they don't want to publish and aren't distributing.

You are saying if a textbook publisher modifies open source layout software then uses it to set a textbook, they can't retain those internal modifications if someone asks to see them. I think they should be able to keep them private.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: