16

I've got some code which produces some output files, this project is open source under GPLv3. I've also got some people reaching out to me and asking if they can use the output files (they don't care about the source code that generated them).

I'm happy for them to use the output, as long as there is proper attribution clearly visible wherever they use it, such that their users can easily find their way to the open source project if they want to.

How do I require that commercial consumers provide proper attribution to the project if they make use of the output of the project?


Edit 1: Here's the project: https://github.com/beyarkay/eskom-calendar/.

It's pretty specific to South Africa, but basically it converts regularly published tweets by the state-owned electricity provider into internet calendars. The tweets announce when certain areas will be disconnected from the electricity grid, so having this data in your calendar is useful.

Edit 2: I want there to be proper attribution, since I am wary of commercial projects simply putting the work behind a subscription feed or on a website with a million adverts, and them doing so without actually contributing anything to the project or improving the output in any meaningful way. This is why I want to require attribution.

4
  • Please edit this to explain in more detail why you think you deserve attribution in what they create with your code? Apr 14 at 22:40
  • Put the calendar files on your website and don't give anyone the program.
    – user253751
    Apr 17 at 14:24
  • Meta question: I phrased my question poorly and it's receive good answers, although not quite for the question I actually had in mind. Do I edit this question or open a new question? (The users never touch the source code, they only consume the output. So I'm wanting to know if I can apply a license on something (which happens to be the output of a GPL piece of code) and enforce attribution)
    – beyarkay
    Apr 18 at 10:23
  • 2
    Edits to a question should only clarify the question if it is unclear or needs more information. If an edit would change the question in its essence, then it's better to ask a new question, especially if there are already elaborate answers. You can also reference this question and their answers in a new question. Apr 20 at 5:09

5 Answers 5

25

In general, the output of a program is not a derivative work of the program, and therefore the license of the program itself does not apply to the output.

This means that you cannot, via an open source license or any other copyright-based means, require any kind of attribution in the output.

18
  • 14
    Which bit of "you cannot, via an open source license or any other copyright-based means, require any kind of attribution in the output" is not clear to you? Apr 15 at 11:38
  • 3
    @beyarkay There are 2 things at play here: 1) Copyright. Only humans own copyright. So your program cannot use copyright law to protect its output. Whatever your program produces is in the public domain from a copyright standpoint 2) Licensing: i.e. the terms in which you distribute the software to your users. This can include provisions such as "you must cite the output as X,Y", or "you cannot publish the output without our approval". But then you would be forfeiting the open source part and you should ask on an other site.
    – Bakuriu
    Apr 15 at 13:03
  • 4
    "Whatever your program produces is in the public domain from a copyright standpoint" Disagree with this - whatever the program outputs is probably a derivative work of its input so whatever copyright on the input still applies (see OpenAI, ChatGPT etc) Apr 15 at 13:05
  • 6
    It should also be noted that this is software-dependent. Some software produces output that is solely a derivative of its input. Some software includes assets or other things that are copied into its output, and the copyright on those assets can and does transfer to the output. The FSF's example is GNU Bison, but loads of video games do exactly the same thing. Finally, some software makes copies of assets that were never subject to copyright in the first place, because they fall below the threshold of originality, and in that case, the assets can be ignored for copyright purposes.
    – Kevin
    Apr 15 at 19:50
  • 2
    @PhilipKendall sorry if I was being thick. I thought you meant that I cannot (via any means) apply any legal document to the source code and have it apply some sort of effect to the output. Based off of this understanding, I was asking if I could then apply some sort of legal document to the output. That is the aspect that was not clear to me.
    – beyarkay
    Apr 16 at 8:50
9

I want there to be proper attribution, since I am wary of commercial projects simply putting the work behind a subscription feed or on a website with a million adverts, and them doing so without actually contributing anything to the project or improving the output in any meaningful way.

It sounds like you're after the GNU AGPLv3 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,

This wouldn't prohibit every abusive use, but in combination with a TOS on your website, it would stymie most of them.

7
  • 7
    This does not seem to match the question - OP does not imply that the people using his program are in any way modifying it (he says they are not interested in the code). They seem to be simple users.
    – AnoE
    Apr 17 at 7:22
  • 1
    @AnoE The obvious way to adapt the code to a spammy advert website is to alter lines 64–80 of main.rs. That can't be done without sharing the modified source code, under AGPL. The other obvious way is to parse the output from a hosted version; a ToS on the hosted version's website could prohibit that without attribution. As I said, this doesn't get all instances of commercial abuse, but the OP isn't concerned about simple users.
    – wizzwizz4
    Apr 17 at 11:49
  • 1
    If the desired attribution is added to the default output, the AGPL would work even better. Either the software is used as-is and the attribution is present, or the software is modified to remove the attribution which triggers the AGPL's requirement to "prominently offer" the source.
    – bta
    Apr 17 at 21:59
  • @bta It's not a violation of AGPL to post-process the output. A user can pipe through sed without modifying the source code and triggering AGPL. Freedom 0 says the user is free to run the code for any purpose. Apr 17 at 22:23
  • @ChrisBouchard However, it is a strategy that further curbs the low-hanging abuses: people who want to use the data, and don't care enough to add a post-processing stage, will preserve attribution.
    – wizzwizz4
    Apr 17 at 22:25
7

Free Software

The problem is that you are running into one of the four essential freedoms of free software. These are laid out by the GNU project on their website:

A program is free software if the program's users have the four essential freedoms:

  • The freedom to run the program as you wish, for any purpose (freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help others (freedom 2).
  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

What is Free Software? (Emphasis mine)

They go on to explain

The freedom to run the program means the freedom for any kind of person or organization to use it on any kind of computer system, for any kind of overall job and purpose, without being required to communicate about it with the developer or any other specific entity. In this freedom, it is the user's purpose that matters, not the developer's purpose; you as a user are free to run the program for your purposes, and if you distribute it to someone else, she is then free to run it for her purposes, but you are not entitled to impose your purposes on her.

— Ibid. (Italics theirs, but bold mind.)

Your desire to have the output of your program attributed is your purpose — that is, the developer's purpose. Your users' desire to freely reproduce the output of the program is their purpose. And as this has only to do with how the program is run, and has nothing to do with the program source code, it is covered by freedom 0. Thus, if you wish for your software to be free software by GNU's definition, you must not restrict in any way how your users run your software.

It's worth noting that this is purely philosophical — these words have no weight of law and are not a license. This is just an essay laying out GNU's idea of what it means for software to be “free.” It's also presumably the Free Software Foundation's opinion, because the FSF's page on free software links to the GNU page quoted above.

That said, this is the definition of free software that the authors of the GPL and other free software licenses had in mind when writing their licenses. GNU maintains a non-exhaustive list of licenses that it considers to be consistent with its definition of free software.

Open Source Software

Similar to GNU, the Open Source Initiative has a definition of “open source software.” It is similar but not identical to GNU's definition of free software. Criteria 5 and 6 are the most direct correspondence to GNU's freedom 0.

5. No Discrimination Against Persons or Groups

The license must not discriminate against any person or group of persons.

6. No Discrimination Against Fields of Endeavor

The license must not restrict anyone from making use of the program in a specific field of endeavor. For example, it may not restrict the program from being used in a business, or from being used for genetic research.

The Open Source Definition

This is not identical to GNU's freedom 0 — OSI's criteria are more limited and specific. It's not exactly clear to me if what you're suggesting clashes with these criteria, but I think potentially not, as long as your license required everyone to give attribution for output. (There is still the challenge of enforcing that in a license, but I'll talk about that later.)

Like with GNU, this is just philosophy and not a license in itself, but also like GNU, OSI maintains a list of approved licenses that it considers to be consistent with its definition of open source software.

Licensing

You can certainly look through the lists of licenses maintained by GNU and OSI to try to find a license that does what you want. I haven't looked, but I kind of doubt you'll find one. My own impression is that your goal is explicitly contrary to GNU's definition of free software, and implicitly contrary to the spirit of OSI's definition of open source software — but I'm definitely not a lawyer or expert on licensing!

You can also look around for a non-free, non-open-source software license to use, but you'll be on shakier ground there. Software licenses are themselves creative works and are protected by copyright. Free and open source software licenses permit (and usually require) you to distribute them. Other licenses are going to be case-by-case.

If you can't find an existing license you can use, you'll have to write your own. As described above, it won't be considered a free software license, and even if it meets the criteria of an open source license, it won't be an OSI approved open source license unless you go through their review process.

I'm not really knowledgeable to discuss the intricacies of how you would go about that, or the differences between copyright-based licenses and contract-based licenses, or non-US copyright law. I do feel safe in saying it would be non-trivial. You should probably consult a lawyer, as you'll essentially be drafting your own proprietary software license — if you get it wrong, it will be unenforceable.

Potential License Complications

Your goal may be particularly tricky because, as others have pointed out, your copyright over the program likely doesn't extend to the output that users produce using the program. It's my understanding that most software licenses use copyright as the basis to enforce their terms, which would make it difficult for such a license to have terms restricting use of the program's output.

There's also the intricacy of to whom the output should be attributed, assuming your license allows redistribution of the source code as with free and open source software. Would downstream contributors be able to add additional attribution requirements? Alternate attribution requirements?

This is why I recommend that, if you decide to pursue this, you do it with the help of a lawyer. Your goal is to restrict how businesses can use your software, and those businesses will have lawyers. If you use a DIY license, they will find the holes if it's at all worth it to them.

2
  • A non-free license can be used for this, because it can put conditions on the right to use the software, not just to copy it. A proprietary license could include a clause that terminates the right to use the software when the user publishes the results without an attribution notice (or authorizes a 3rd party to do so).
    – Philipp
    Apr 17 at 14:15
  • @Philipp It definitely can — but it's my understanding that such an agreement might be a contract and not simply a license under copyright. If it were, there would have to be consideration, meeting of the minds, and all those things that make a contract. I am not a lawyer and don't fully understand all the details, which is why my main recommendation for anything proprietary is get a lawyer. Apr 17 at 14:43
4

You may be able to refactor your code to extract anything that is purely data. As such when you distribute the application you now distribute a binary and a data file.

The source and the binary would still be covered by the GPL.

I believe that if the application uses the data file to generate the output, the output would be a derived work of the data file, hence you could apply a different license to the data file which may (sort of **) achieves what you want.

** - If the user provides their own data file, clearly they no longer have to adhere to the license of your data file.

Not a lawyer - I don't know if there are any caveats such as amount of data used to be considered a derived work / fair use exception etc - please talk to a Lawyer.

PS, If this is a public OSS project could you provide a link so we have a better understanding of what you are trying to achieve/protect?

1
  • Thanks for your answer! here's the project: github.com/beyarkay/eskom-calendar although it is quite South Africa specific. Basically I convert regularly published tweets by the government-owned electricity provider into calendar files (and also a CSV file that's more machine friendly)
    – beyarkay
    Apr 15 at 10:48
3

As Chris Bouchard has laid out in great detail, Open Source generally specifically makes it possible for users to use the program freely and without attribution.

You're running into the problem faced by commercial applications with a test, demo, student, hobbyist license. For example, the CAD program Fusion360 is extremely popular with 3D printing hobbyist, and very likely a healthy chunk of people use it frequently and exclusively to create models. The free (as in beer, not freedom) version of this software contains plenty of restrictions, both technically (i.e., with many functions disabled) as well as in legalese (e.g., output must not be used in commercial settings).

The author (AutoDesk, in this case) can do that because it is not an open license - it is a regular commercial, closed, license; they are adapting the license occasionally to fit their needs. For example, the feature set in the free license was reduced somewhat a few years ago because they found out that plenty of small businesses were using it instead of getting the cheapest paid version intended for such uses.

So, TLDR: Open Source has no provisions for this, you'd have to close it and make the functions reduced enough that a licensee cannot abuse it (in your definition of that word, whatever it may be) and probably introduce some licensing scheme based on regularly expiring license documents/codes that users have to renew regularly, which would give you a chance to change your rules or stop giving out free licenses.

As you've already open-sourced your software, it is too late for that (and it doesn't look like you're really interested in it, anyway, of course)...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.