I build simulations and make them open-source. Depending on the context I either license them with Apache or GPL. I publish the simulation results in paper and link to the code. However sometimes some parts of the code are useful for others regardless of the overall original simulation.

Is there a way in the license to ask/recommend/enforce that people who use some of that code remember to cite the paper associated with it?

Is a friendly reminder in the readme the best I can do?

  • Comments are not for extended discussion; this conversation has been moved to chat.
    – aeismail
    Commented Oct 19, 2017 at 17:42

5 Answers 5


Before thinking of the citation of the software, think of the related situation for scientific articles. Have you have read an article with a comment "If you use the results of our research, it is mandatory to cite this paper"? Probably not, it is because it is the practice of working scientists to cite relevant material (Comment here: I do not claim that the citation process is always well used, fair, or whatever in this direction. In general, this is the way scientists are supposed to work).

Because of the relatively recent status of software as an academic artifact (in comparison to books and articles), the situation is not as good as it could be.

Several initiatives have been made to think of this issue, to propose solutions that are considered fair, and to encourage a citation practice that is as good for software or data as it is for articles.

  1. Smith et al "Software citation principles" PeerJ Computer Science 2:e86 https://doi.org/10.7717/peerj-cs.86 collects the recommendation of the FORCE 11 working group on software citation. For developers and users.
  2. "Encouraging citation of software – introducing CITATION files" is a blog post by Robin Wilson as part of the Software Sustainability Institute. It recommends to include a "CITATION" file with the relevant data to cite the software.
  3. The Journal of Open Source Software is a journal whose purpose is to publish concise articles about a software. The papers have a DOI and can be cited, which enables you to include your software in the "traditional" publishing and citation practice of scientists.

There are probably other initiatives that I don't think of right now. There seems to be consensus anyway to stick to a well known license recognized by the Open Source Initiative (OSI): https://opensource.org/licenses

To conclude, the context of your software also matters. If one of your aims is that your software is re-used by others, either standalone or in combination with other tools, this influences the choice of the license. Looking furhter, if you want your software to be distributed in larger packages or in Linux distributions, a well established license is critical.

  • 2
    Wow, I had never heard about JOSS, that's a pretty cool concept, including the open peer review process.
    – malexmave
    Commented Oct 18, 2017 at 7:58

A license requiring some form of citation is certainly possible, but there would be practical problems which, I believe, far outweigh the benefits.

To get an idea of what such problems might be, consider the original BSD license with an "advertising clause", requiring "all advertising materials mentioning features or use of [the] software" to display an acknowledgement of the original authorship. This seems innocent enough, but led to an unreasonable accumulation of acknowledgements as more and more authors added their own name or organization to the must-be-acknowledged list; and it causes the license to be incompatible with other licenses such as GNU's General Public License, which prohibits many kinds of restrictions on redistribution; because of practical problems of this kind, the clause was dropped from later versions of BSD.

So, if you are the sole author of the software, you can write your own license which sets whatever conditions you wish for redistribution (subject to the limitations of what copyright cannot forbid, e.g., "fair use"). But:

  • this will probably make it impossible to combine (or even link, in the case of libraries) parts of your software with certain major open source licenses such as GNU's GPL;

  • it might not pass as "open source" or "free software" according to certain definitions of the term (e.g., Debian's Free Software Guidelines, which are interpreted in a very conservative way and don't consider the GNU Free Documentation License to be "free" — this is a long-lasting controversy), and this can cause additional practical problems;

  • when writing such a clause, you should carefully consider what happens if someone wants to reuse parts of your code in their own software (possibly having completely different goals and being used in a context that you didn't even imagine);

  • and a legal license is only ever useful if you are seriously considering taking violators to court (or at least threatening to do so in certain cases).

For reasons such as these, I submit that a non-legally-binding request is more appropriate. Keep in mind that something non legally binding can still be morally (i.e., ethically) binding, just like citing previous works is morally required in academia even if it is not legally required. So you can phrase your request for citation in a way that makes it clear that, while it is not a legal obligation, it is still much more than a friendly reminder.


Unless you use some third-party code that is copyleft-licensed and forces you to use the same license, as the author/copyright holder, you are entirely free to choose your own licensing terms. (There are some legal limits, but they are very broad. You can't ask for someone's firstborn.) You could make your own license that has as a condition of use of your code that any paper that builds on it needs to cite you.

However, in practical terms this is unlikely to have more effect than a friendly reminder in the README. It would enable you to take the authors of the paper to court, but this would be far worse for your reputation (and your wallet) than a missing citation is ever likely to be. Custom-made licenses can also come with their own pitfalls (it takes a lawyer to draft a good one).

  • Not in the United States. Someone could simply download a copy of your software and not agree to the license. They aren't subject to any restrictions in the license. They could still use your code as, at least in the US, you don't need any license to use a work you lawfully acquired. This is why the GPL, the BSD, and the Apache license make no attempt to put restrictions on use. They can't. If his tried to, it would be ineffective. All a copyright license can do is give you new rights you didn't already have subject to conditions. It can't impose conditions on rights you already had. Commented Oct 18, 2017 at 16:58
  • Every software license I know starts with "by using this software, you agree to the following conditions". Is that an invalid clause that just tries to make you believe you are somehow bound?
    – nengel
    Commented Oct 19, 2017 at 0:40
  • @nengel: Indeed. In all jurisdictions I'm aware of, this clause is void. An agreement prior to purchase can be binding. But as David Scwartz points out, Open Source Software generally isn't purchased so such terms wouldn't work there.
    – MSalters
    Commented Oct 19, 2017 at 7:10

I would argue that a legal license is not the place to talk about citations, in the same way that copyright considerations are not the right tools to handle plagiarism of text in more normal settings. There are two sets of standards that academic publications need to follow, the legal ones and the academic ones, and we're better served by keeping them separate.

As such, the approach I would argue for is to choose a standard legal-considerations license (Apache / GPL / MIT / whatever works for you) and then make it clear that there are additional obligations (not just your wishes) from the academic arena. Thus, a sample readme section might read

This code is © C. Knight, 2017, and it is made available under the GPL license enclosed with the software.

Over and above the legal restrictions imposed by this license, if you use this software for an academic publication then you are obliged to provide proper attribution. This can be to this code directly,

or to the paper that describes it

  • C. Knight. How the ACDS software solves every problem. J. Awes. Softw. 12, 37654 (2017).

or (ideally) both.

This separates the two arenas and it makes it easier (hopefully) to deal with problems if and when they do come around. Think about it: if someone comes in and uses your code without attribution (and you somehow find out), what are you going to do?

  • Are you going to sue? Is it going to work? Or can you at least present such a credible threat of legal action that e.g. their institution caves in? (Unless the answer to any of those questions is "yes", then there's not that much point to trying to come up with fancy legal language to attempt to enforce citations.)

  • Or, more realistically: are you going to contact their journal editors, show how the paper is plagiarizing your code, and demand a retraction?

The second option is much more likely to work, and it works entirely on non-legal mechanisms, because academia does have additional standards and additional ways to enforce them. The plagiarism might not have broken the license, but you didn't need to sue them to get what you wanted.

And, while we're at this, notice one important feature of the sample readme I just gave: it makes your code easy to cite! By putting this in up-front and making it unambiguous that it needs to be cited and how it needs to be cited, you're setting clear expectations and making it easier for authors to cite you. Some features of note:

  • Provide a 'proper' publication to direct the citations. You need them, because of the economies of academia, and plenty of people are happy to ping a paper so long as you tell them which one.
  • Ideally, write a software paper that describes the software itself, in journals like the Journal of Open Research Software (or, say, if you can stomach the elsevierness, Computer Physics Communications) or whatever works in your field. If your code is user-ready then a software paper is both useful for those users, and useful for you in capitalizing the work you've done on the software into forms that the ever-slow-moving academic economy of citations can recognize more easily.
  • Put your code somewhere easy to find, and make sure it's going to stay there.
  • Give every version of your code a DOI. They're easy enough nowadays, at least via github but also directly on Zenodo or Figshare, that there's no excuse not to. And, moreover, they make it easy to locate and download exactly what version of the software was used for any given calculation, making your software more accountable.

Think of this as a stick-and-carrot routine: set up some stern language to set expectations but then prime your users to follow your wishes and make the process as seamless as possible.

  • 2
    This shows why you need a lawyer. A GPL derivative of your work would lose the citation requirement. The GPL is "viral"; derivative works must also be covered under the GPL terms. But it also specifies specifically (section 7, Additional Terms) that non-GPL restrictions like yours may be removed from derivative works.
    – MSalters
    Commented Oct 18, 2017 at 8:34
  • @MSalters Thanks for missing the point =). This is not a non-GPL restriction, simply because it is not a legal restriction at all, and handling academic citations via lawyers is like trying to crack nuts with a screwdriver - it's a useful tool, but that's not what the problem needs. You are right that the "further restrictions" (as the GPL sees them) in this answer can be removed from derivative works, but if that reuse is plagiarism it is still grounds for e.g. demanding corrections / retractions from a journal, without any mention of copyright violations.
    – E.P.
    Commented Oct 18, 2017 at 8:48
  • I don't see the plagiarism. Imagine someone creates ACDEMS (Awesome Code to Do Even More Stuff), a derivative work from your ACDS but without the citation requirement. This is not plagiarism, it's not even an (academic) publication but merely a pure GPL derived work. Now someone else uses ACDEMS and does not cite ACDS. Is that plagiarism?
    – MSalters
    Commented Oct 18, 2017 at 8:57
  • 1
    I wouldn't think so, so what you're describing is the system working as intended and something I would be wholly OK with. Perhaps you missed the conditional? If the reuse is plagiarism, then it's subject to the usual tools to deal with plagiarism (which, again, have nothing to do with the tools to deal with copyright infringement).
    – E.P.
    Commented Oct 18, 2017 at 9:00

Is there a way in the license to ask/recommend/enforce that people who use some of that code remember to cite the paper associated with it?

I am surprised to not find Creative Commons Attribution-ShareAlike (or any other Creative Commons licenses) mentioned in the otherwise excellent answers already submitted.

It does not exactly fulfill the requirement of "enforcing citations", but its premise (focus on attribution) is closer than that of most other permissive / open source licenses.
Also, it could serve as a subtle reminder by itself.

Caveat: It is generally not encouraged to apply CC licenses to software, but given the academic context and the nature of your cares, I'd call that notion at minimum debatable in your case.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .