There is a research paper with a couple of related numerical algorithms I would like to use as part of an open-source project of mine. The paper itself includes plenty of pseudo-code-snippets, but the authors have also written a full C++ implementation which is available publicly. I would like to include their work into my own library, which is written in a different programming language.

  1. If I straight-forward port their code to my language, it would of course be a derivative work so I would be stuck with their license (modified BSD). This would be a hassle because the rest of my project usese the Boost-license.
  2. I could start from their paper (i.e. pseudo-code-snippets) and implement everything from scratch in my language. But given that I have seen their C++-code, I am worried that I have been influenced sufficiently that anything I write would still be considered a derivative work, even though I wrote every line of code myself. Am I right?

What is the suggested course of action here? I am kinda confused about the line between an abstract algorithm (which is a non-copyrightable idea AFAIK) and actual code (which is under strict copyright by default). On which side of the spectrum does pseudo-code fall that can easily be converted into actual code?

The algorithm in question is the "double-double" and "quad-double" floating-point types described here (http://www.jaist.ac.jp/~s1410018/papers/qd.pdf) and implemented here (http://crd-legacy.lbl.gov/~dhbailey/mpdist/).

  • 2
    This, in theory, is an interesting question, but in practice, you are aware that BSD licenses allows relicensing, aren't you? This means that you can port their code to another language and distribute the result with another license as long as you keep attribution and a copy of the original license.
    – Zimm i48
    Commented Jun 30, 2017 at 15:06
  • @Zimmi48 To a layman like me, your comment sounds like "you can change the license as long as you keep the old license", which is a very confusing statement. So the idea is to put both licenses on the top of the source-code file? If so, which one is binding? Sorry for my ignorance
    – Simon
    Commented Jul 2, 2017 at 16:43
  • 1
    I agree it does sound strange. You must keep the original notice to comply with the requirement but you may e.g. add a sentence saying THIS IS THE ORIGINAL LICENSE OF THE CODE THIS WORK IS BASED ON. KEPT FOR INFORMATIONAL PURPOSES ONLY.
    – Zimm i48
    Commented Jul 3, 2017 at 12:34
  • @Simon, you can not change the license. The license allows you to create derivatives (changed versions, in plain English) and distribute the result under any license you choose, as long as you acknowledge the original authors. Common courtesy (and steering clear of any hassles) dictates keeping the license.
    – vonbrand
    Commented Feb 21, 2020 at 23:17

1 Answer 1


If you port the modified-BSD-licensed code and release that, you would need to follow the modified BSD license. This does not mean you have to license your code under the modified BSD license. According to tldrlegal, you must:

  • Include copyright
  • Include license

That's all. For more details check out: How to licence a project which includes MIT, BSD, Modified BSD, and New BSD libraries

Of course, there are licenses where you do have to license derivative works under the same license; such licenses are often called copyleft licenses. Modified BSD license is an example of a permissive license.

Your Answer

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

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