15

I have implemented an RSYNC library based on the technical report by Andrew Tridgell and Paul Mackerras. The library implementation does not borrow code from the official RSYNC library and does not conform to the official API. I would like to release my library as free software on GitHub.

The RSYNC library itself is released under the GNU GPL, but as I am not using or modifying the library's source, I am not sure how to license my own library. What are my licensing options, if any? How do I attribute the technical report?

  • 1
    Have you ever looked at the official library's source code? – Nicolas Raoul Sep 15 '15 at 4:13
  • @NicolasRaoul I have not. The implementation is based entirely on the referenced technical report. – user2644 Sep 15 '15 at 4:24
  • According to the current status of the Google vs Oracle lawsuit, the "structure, sequence and organisation" of an API is a copyrighted work and therefore copying the RSYNC API is copyright infringement. Google tried to appeal the appeal but the supreme court refused a few months ago. I'm not sure if there will be further developments. – Abhi Beckert Sep 15 '15 at 22:54
  • @AbhiBeckert Good point. However, in this case, my library does not conform to the official API. The question has been edited. Thank you. – user2644 Sep 16 '15 at 0:10
  • @user2644 then in that case you should be perfectly fine. Copyright intentionally does not apply to "functionality", it only applies to "creative" things and actively encourages copying of everything else. Only patents protect functionality, and those expire orders of magnitude sooner than copyright. I dunno if there are patents applying to rsync? Probably not. – Abhi Beckert Sep 16 '15 at 0:12
19

Since you have never looked at the source code, and ONLY looked at:

then you are free to release your implementation under any license you want.

Just like SAMBA checked the API and algorithms of CIFS and released their software under the license they wanted.

Or at least, that was the common point of view until the Google vs Oracle lawsuit, where the "structure, sequence and organisation" of an API got considered a copyrighted work and therefore copying the RSYNC API would be copyright infringement. Google tried to appeal the appeal but the supreme court refused a few months ago. I'm not sure if there will be further developments, but this decision is a huge loss for interoperability and innovation so we can only hope that the judiciary will realize their mistake. (Thanks Abhi for the info)

You don't have to attribute the technical report (except if you pasted significant parts of it inside your code or documentation), but an URL is nice and safe to paste before each relevant algorithm implementation.

In case you had seen the source code, the matter would not be so clear-cut, see some real-world examples with various outcomes at https://en.wikipedia.org/wiki/Clean_room_design#Case_law.

  • 1
    "You don't have to attribute the technical report." - depends how much of it he quoted in comments inside his code, in documentation and so on. It might be mandatory, and for sure it's both safer and nicer to attribute it. Also, OP does not ask if, but how to attribute it. – Mołot Sep 15 '15 at 12:50
  • @Mołot: Thanks! Is it better now? – Nicolas Raoul Sep 15 '15 at 13:18
  • 1
    Are you implying that looking at source code at some point is enough that any software you write that does similar things is derivative work? I don't think it's relevant whether you looked at, glanced over or extensively studied some code, as long as your own code isn't obviously based on that code. – kapex Sep 15 '15 at 13:54
  • 1
    @kapep: A bit off-topic, but I added the last paragraph about that, thanks! – Nicolas Raoul Sep 15 '15 at 14:03
  • 3
    @kapep no. But it will be far easier to prove it's not if you've never seen the code. – Martijn Sep 15 '15 at 14:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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