What are my moral and legal obligations if I want to port an open source project (software library, BSD-licensed) from one language to another? I also anticipate making some changes to suit my application better, so it feels more like a branch to me.

I'm just not sure what the obligations are: I am technically writing from scratch, but it would begin as a fairly literal port so I am using the source material as more than just a reference.

  • Since BSD does not really restrict you, why not treat it as a fork?
    – rvs
    Feb 18, 2016 at 16:29
  • I perceive there are several ways to do a fork. I will ultimately be hosting the branch/fork/port myself: so in that spirit: what should I do to give proper credit to the original author and not violate trust or law? Feb 18, 2016 at 17:12

1 Answer 1


If the original is BSD licensed, you can (almost) do whatever you want.

As a courteous person, you will cite the original project as the basis for your version.

As a practical person, you want to be able to track upstream changes (and even better, have third parties help out doing so), add/reference any translation tools used (e.g. I'm aware of FORTRAN to C translators, TeX uses a translator for a (subset/dialect) or Pascal to C, there must be others), or state your hand-translation strategy. Clearly mark where you deviate from upstream, to guide later refreshes. Note that when I mention "third party", more often than not that will be you in a few months time, completely oblivious to what you were doing today...

Take a step back, and carefully consider if it isn't better for everybody involved to integrate your changes upstream (if they don't want it, perhaps they have their very good reason to reject them...), or keep your own branch with minimal changes (or some sort of plugin/addon?). Perhaps the best solution is adding a shim that allows using upstream in your language?

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.