8

I am developing a software that is licensed AGPLv3. It's a simple tool that takes a user-provided string and generates an image based on it.

What license is the generated image under? Can I choose the license, or does it inherently have some license simply because it is derived from user input?

I'd like to require that generated images are attributed to my software, e.g. CC-BY 4.0. Can I do that?

snazzybouche
  • 183
  • 3
  • What's in the image? Is it derived solely from the properties of the provided string? Or does the string code for selecting particular elements from a larger array? Or is it built from components selected from some repository according to the exact content of the string? Does your code copy selected portions of its own source code into the image according to the exact properties of the string? Or something else? – MadHatter Jul 10 '20 at 05:32
  • @MadHatter It's a tool that makes an SVG. For each letter, a shape is drawn. Each shape is then combined to create a unified image. I suppose it would be a similar situation to if my tool wrote the user's string in a font that I'd made and then took a screenshot. I doubt the boilerplate in the SVG constitutes "own source code". – snazzybouche Jul 10 '20 at 05:38

2 Answers2

14

The way I'd be inclined to handle this is as if it were a program which ships with a corpus of clip-art, then selects and arranges elements of that corpus according to user-provided instructions, expressed via an input string.

Firstly, it is well-established here that the licence on a piece of software does not generally affect the licence status of the software's output. So in answer to your first question, the licence status of the generated image is, most likely, a function of the licence on the letter shapes.

We have several questions around here already (eg this one, and this one) which advance the idea that the code and the other digital assets in a piece of shipping software do not have to be under the same licence. If you distribute your code under AGPLv3 and the letter shapes under (say) CC BY 4.0, I think you will achieve the desired effect: people offering your code to others, including as a network service, will have to provide full AGPLv3 source, whereas anyone using the output images need only credit you.

For maximum compliance, it may help if your program makes it clear when it produces the output that, as a consequence of the use of inputs supplied by you, the output is under CC BY. Also, when split-licensing like this, it is very helpful not to mix the two bodies of differently-licensed content. If the images can be loaded from an external file, rather than being incorporated into the program, it helps avoid misunderstandings about which licence covers any particular element of the distributed whole.

MadHatter
  • 48,547
  • 4
  • 122
  • 166
  • Thanks for your advice. The output is much more geometry than art, though - I like the clipart comparison, but I'm unsure that a simple string like "a r r 0 1 1 2r 0" (part of an SVG path - this draws a semicircle) can be licensed at all (though I'm sure that your advice would apply to more complex paths that form more distinct images). If I kept all these strings in a file with a CC header, and my programme reads that file and compiles the strings together, would that be sufficient? – snazzybouche Jul 10 '20 at 19:24
  • @snazzybouche that sounds reasonable to me. – MadHatter Jul 10 '20 at 19:43
  • Your wisdom is sage. I'll do that, and if I somehow get sued down the line then so be it. – snazzybouche Jul 10 '20 at 19:59
  • 2
    Note that in the US and other places, the law does not recognize copyright on simple expressions that are more utilitarian than creative expression. For example, fonts are actually not copyrightable. Thus, it is possible that a successful argument could be made that the shapes you distribute with your app are not eligible for copyright, and therefore it doesn't matter how you attempt to license or restrict them because you don't have the legal grounds to to so. IANAL; seek professional advice. – josh3736 Jul 10 '20 at 23:15
  • 1
    @josh3736 fair point, and I think the OP admits as such in hir comment above. Nevertheless, even the US accepts that coypright can extend to fonts which are defined by the machine instructions followed to create them ("In 1992, the US Copyright Office determined that digital outline fonts had elements that could be protected"), which these are. The advice to seek professional legal input, whilst good, applies to all answers on this site. – MadHatter Jul 11 '20 at 05:49
  • @josh3736 Excellent comparison - I'm inclined to agree; my shapes are certainly far more utilitarian than even the simplest of fonts. While I'm not a US resident, even UK legislation appears to apply specifically to fonts, which my shapes are not. It looks like I won't be able to mandate attribution, but I suppose that's no huge loss. – snazzybouche Jul 11 '20 at 06:39
  • @MadHatter There's an important distinction: while the law generally does afford protection to the the computer code (in this case, the source SVG itself) and thus you can apply a license to the SVG, that's where it ends. Copyright does not apply to the shape as represented by that SVG, and therefore you cannot apply any restrictions to the output of the tool. – josh3736 Jul 15 '20 at 01:12
  • @josh3736 do you have a citation for that? In my experience, derivative works are generally protected. – MadHatter Jul 15 '20 at 05:26
  • @MadHatter that was my original point: the shape, as a utilitarian object, is not eligible for copyright protection, so definitionally, works that include the shape are not derivative works. Consider a font: producing a document using the Arial font does not make your document a derivative work of Monotype's IP because copyright simply does not apply to the font design (even though it does apply to the TTF file). Likewise, Photoshop has copyright-protected computer code to generate circles for the circle tool, but using it in your image does not make it become a derivative work of Adobe's. – josh3736 Jul 16 '20 at 01:00
  • @josh3736 re your last point, the image doesn't become a derivative work because the copyright on programs doesn't affect their output. Re the rest of that comment: if you use an AGPL program to combine and edit several pieces of CC BY-SA clipart, the resulting image is CC BY-SA; this is not controversial. So clearly at some point the inputs are of sufficient complexity to qualify for copyright protection, and at that point can have a licence which transfers to derivative works, including the output in this case. Note also that copyright subsists in font designs in many jurisdictions. – MadHatter Jul 16 '20 at 05:23
1

I'd like to require that generated images are attributed to my software, e.g. CC-BY 4.0. Can I do that?

It would do no good. Even if you could, nothing would stop me from removing that restriction from your licensing, distribution, installer, or whatever and redistributing it as the AGPLv3 allows. You can't both put something under the AGPLv3 and also impose additional restrictions on it.

David Schwartz
  • 600
  • 2
  • 10
  • 1
    I don't think the OP was asking how to put the generated images under the requirements of both AGPL and CC BY, not least because that would be pointless: AGPL requires attribution already. – MadHatter Jul 10 '20 at 19:41
  • 1
    MadHatter's comment is correct – snazzybouche Jul 10 '20 at 20:00
  • 1
    @MadHatter I'm not answering whether he could put them under both. I'm answering whether he could encumber them at all, and the answer is that even if he could, anyone else could remove that encumbrance because the AGPLv3 allows them to. Any method he might use to cause his software to encumber its output could be removed by anyone else under the terms of the AGPLv3 that apply to the software. – David Schwartz Jul 10 '20 at 21:57
  • @DavidSchwartz what makes you think that? The licence of a piece of software doesn't generally affect its output - the FSF, authors of the AGPL, agree. The licence on the outputs (generally) depends solely on the licence of the inputs. The licence on the software certainly affects all the things to which it applies, but it no more affects what you may do with its outputs than it affects what you may do with the OS on the computer on which you run it. – MadHatter Jul 11 '20 at 05:30
  • You may use a piece of AGPL software to write a proprietary program (see link), and the use of AGPL tools doesn't allow the recipient of that proprietary program to declare your code subject to AGPL (and therefore, as you say, free of any further license obligations). No more can they in this case. – MadHatter Jul 11 '20 at 05:31
  • @MadHatter I'm just saying that anything the OP could do to his program to cause it to encumber its output could be removed by anyone who receives a copy of his program under the AGPL. You yourself suggested one way he could encumber the output and it has precisely this same problem -- anyone else can simply remove the encumbering part and still use 100% of the program to produce unencumbered output. – David Schwartz Jul 11 '20 at 19:07
  • @DavidSchwartz the OP doesn't know what the licence status of hir outputs is, and says as much in para 2. Sie doesn't want to encumber them with AGPL, and says as much in para 3. The outputs won't automatically be under AGPL merely because the program that created them is, so fortunately sie doesn't have to. So if you argument is simply that if the outputs were for some reason under AGPL, then no additional constraints could be applied, then I agree with you - but that doesn't seem to me to have much to do with this question. – MadHatter Jul 11 '20 at 19:59
  • That's not quite what I'm saying. What I'm saying is that whatever the OP might do to affect how the output is or isn't encumbered could be undone by anyone else since the AGPL allows them to change anything about the program that they like (except the AGPL license itself). The encumbrance of the output is going to be determined by copyright law and the AGPL -- both things the OP can't change. – David Schwartz Jul 12 '20 at 00:16
  • @DavidSchwartz I can only repeat that in this case the AGPL doesn't apply to the output, only to the code, so notwithstanding anything the AGPL may have to say about additional encumbrances on the code, it has nothing to say about them on the output. – MadHatter Jul 12 '20 at 19:39
  • @MadHatter I don't agree. For example, the AGPL says that even if he finds some way to get the code to encumber its output, anyone who wants to can remove it. You yourself suggested a way he could try to encumber the output which won't work because anyone who wants to can remove the encumbrance and keep as much of the code as they like. – David Schwartz Jul 12 '20 at 19:53
  • @DavidSchwartz let me say it once again. (1) I completely agree with your interpretation of the AGPL. (2) I don't see any reason why the AGPL would apply to the output in the first place. Please, hold off with re-justifying and re-stating the first point, and address the second. – MadHatter Jul 13 '20 at 05:31
  • @MadHatter I don't understand why you're addressing that to me. I've never said nor implied that the AGPL applied to the output. I'm saying if the OP tried to do something to the source or the license or anything to encumber the output in any way then anyone else could remove it because the AGPL allows them to do so . There's nothing the OP can do to the code or the license. – David Schwartz Jul 13 '20 at 16:41
  • @DavidSchwartz and I don't understand why you keep maintaining that the AGPL can have any effect on the output at all. If the inputs are public domain, so are the outputs, licence on the code notwithstanding. If the inputs are proprietary, the outputs are proprietary also, licence on the code notwithstanding. The OP can licence the inputs how sie chooses, and the choice of the AGPL for the code has no effect on this. I don't understand the mechanism by which you think the AGPL on the code can somehow strip a licence condition from the outputs which was placed there by one on the inputs. – MadHatter Jul 13 '20 at 17:23
  • @MadHatter It's not complicated. Say he does what you suggest and uses encumbered inputs and he adds a cryptographic hash check to the code so that it can't be used without that encumbered input. The AGPL allows anyone to remove the hash check and now the output doesn't use the encumbered input and so isn't encumbered anymore. Because his code is licensed under the AGPL, any encumberance he places in the code can be removed by anyone who wants to remove it. – David Schwartz Jul 13 '20 at 17:52
  • @DavidSchwartz any technical encumbrance, yes; not any legal encumbrance. I don't know where you got the idea that I was proposing any kind of technical measure; my answer is pretty clear that I'm proposing one license for the code and another for the geometry input file. The outputs being a derivative of the inputs, user will have to honour the input license conditions when disposing of the outputs. Certainly the user can use a different geometry file, thus bypassing those restrictions: but user could have done that whatever licence was on the code; the AGPL issue is still irrelevant. – MadHatter Jul 13 '20 at 18:03
  • @MadHatter But your scheme won't work. Someone can just use different inputs. And any technical means he uses to prevent this can be removed. He wanted to encumber his software's output. He can't do that. – David Schwartz Jul 13 '20 at 18:05