I'm writing a Java class, part of an opensource game development framework under the Apache 2.0 license.

There is another framework, under the same license, that happens to also have a Java class that addresses the same subject as mine. I recently checked it out, and my implementation is extremely similar to that. Heck, even the local variables. The differences are minimal.

Since both classes are opensource, I guess it doesn't matter. However, since the codes are so similar, anyone may come to the conclusion that I just modified theirs a bit, and eventually quote the license:

  • You must give any other recipients of the Work or Derivative Works a copy of this License;

  • You must cause any modified files to carry prominent notices stating that You changed the files;

Since I wrote my class, there's no need to put their copyright notice in my code. However, it cannot be proven that I didn't just copy their code and modified a bit.

What is one supposed to do in this scenario?

  • I'd contact the other programmer and ask them how they feel about it. – reinierpost Dec 17 '13 at 12:03

You developed the code in isolation of the other code, the code is not a derivative work of the other. Do nothing that would claim that yours is a derivative of the other.

Writing code that does similar things will often be implemented the same way. An anecdote of this is I was working on some software to handle arbitrary precision decimals (money). The code had a long and an integer and some methods. Later I found another developer had previous implemented some code to handle decimal fractional quantities (it was a big project) - it had a long and an integer and some methods. Our internals were identical with very similar access methods. We were solving the same problem and had the same ideas about how to implement it - there are only so many ways to do it. If these were different software projects, mine still wouldn't be a derivative of his.

If you and I were both to implement an abstract factory for accessing files via a web server and we both chose to do it with annotations and had very similar base types... it doesn't make one a derivative of the other unless you were basing your code design off of mine.

Copyright covers the actual implementation. If you reworded it. Changed the variables. Modified the other to something in yours. Those are a derivative work, which would be covered by copyright law. But copyright law doesn't cover ideas - that is the domain of patent law. That you and the other both hand an idea and implemented the idea in the same way, that's just convergent coding.

Now, it wouldn't be a fun lawsuit to fight if it ever came down to it. Lawsuits are never fun to fight. But saying that yours is a derivative work can cause you more headaches down the road if you should ever decide to dual license or pursue someone else for copyright infringement of the work (because only the copyright holder can pursue the infringement, and you would be saying you're not the holder of that copyright).

  • I just noticed that their class implements a feature I didn't even think of. Now I want to implement that too, and it will probably look almost the same as theirs. I guess it would still be fine, the "inspiration" factor? – Omega Dec 17 '13 at 5:11
  • @Omega: Most likely it will be fine, but the fact that you have seen their implementation of the feature and that the two implementations are very similar can muddy the waters should it come to legal actions. – Bart van Ingen Schenau Dec 17 '13 at 7:38
  • @Omega Bart is exactly on correct with his comment. The issue is that by looking at it, you've left the clean room by looking at it. – user40980 Dec 17 '13 at 15:16

Why not contact the other project and offer to pool your resources?

Such "project merges" are reasonably common for open source projects.

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.