For example, is it copyright infringement if I write a class called Random with the exact same purpose and method signatures as Microsoft's .Net System.Random class? Does it make a difference what language it's written in? In this case I want to write a Random class for use in ActionScript, which lacks a built-in seeded PRNG class.

If anyone has good links or reference suggestions for understanding what aspects of software are protected that's great too. And yes I know this isn't the place for "real" legal advice. If anyone goes to court pointing to a public message board as precendence--shame on them.

  • 3
    Pretty sure method signatures, interfaces, variable names, etc. are not protected by any sort of copyright or license.
    – Adam Lear
    Commented Sep 30, 2011 at 2:25

4 Answers 4


I believe looking at the relationship between Mono and Dotnet answers this question. The Mono team can make use of the method definitions or public interface but they have to reimplement the internals. However the Android v Oracle case brings up a few other points that make this obvious distinction a little blurrier. In the AvO case most of the points being taken to court are patents related the VM, the library interfaces have not been a point of contention. The only code that has been highlighted are examples where it looks like to some extend that the internals were copied.

  • 7
    +1 For excellent point about Mono vs .Net. I know that in a related concept, one cannot copyright the rules of a game. Tetris clones are legal as long as they're not called Tetris and don't look too much like Tetris' officially licensed products.
    – user37735
    Commented Sep 30, 2011 at 2:53
  • I thought the main relevant difference between .NET and Java is that (most of) .NET is an ECMA standard.
    – Foole
    Commented Sep 30, 2011 at 10:45
  • @Foole: Both JavaScript and ActionScript are based on the formal ECMAScript specification (ECMA-262, -290, -327, and -357)
    – user37735
    Commented Sep 30, 2011 at 10:54

There was a similar question about database schemes: Copying a competitor's database schema? I answered there that copying the whole schema would probably be a copyright infringement, depending on the scale of the copying, appreciated by a judge.

Even if your question is similar, I will answer quite the opposite: you can copy method signatures. Why?

In fact, method signatures come from common sense.

  • Firstly, if we take an extreme example, Microsoft cannot copyright the name Random and sue everyone who will use the word Random in any application.

  • Secondly, what are you trying to do exactly? Reimplementing .NET Framework? Why? There is no need to reinvent the wheel. If you know how to make it better, more intuitive, etc., chances are you will come with better names of classes and methods, a better organization, etc. If you try to copy the structure of .NET Framework to port it to another language, then you're not a direct competitor of Microsoft, so they have no serious reasons to sue you (this being said, they will sue you if you copy the source code itself). Actually, they will even benefit from you: copying such structure to other frameworks will not only show the success of .NET Framework, but will also make it easier for .NET developers to work with other languages, and the developers from other languages to learn .NET.

  • Thirdly, they have more serious things to do than to sue everyone who will copy the names of the methods and classes of .NET Framework.

Now, if your intent is to copy the whole .NET Framework and to make a product which will be used by lots of developers, consult a lawyer before taking risks.

An example:

I was totally unhappy with the shaming 259 characters limitation in file paths in .NET Framework and the inability to use code transactions on file level. So I implemented my own File class with the methods which would work as expected for any path, not just the tiny short ones, and implement transactions. In the first version, I decided to clone the names of methods in File and Directory classes. Would Microsoft sue me for doing that? I doubt it.

In all cases, in the second version I came with a new syntax, new File(string fileName), which I find much more intuitive for me. Cloning names of methods is sometimes useful, but you have to have a good reason to do it.

  • if your intent is to copy the whole .NET Framework ... Whew, definitely not! I really just want a PRNG that I can seed for use in Flash games. I like the methods in the .Net Random class and was going to write a quick wrapper with the same signatures when this question occurred to me. It would suck to lose one's home due to an architect's lawsuit over the door bell design...to make an awkward analogy.
    – user37735
    Commented Sep 30, 2011 at 2:51
  • System.Random contains 8 methods (5 methods and 3 overloads, one method being protected). I think you're totally fine to clone those names, and one will have a hard time to prove that you really copied maliciously those names from Microsoft. Commented Sep 30, 2011 at 2:56

Copyright protection protects the "artistic expression" of a work, not the technical form (to quote wikipedia).

Copyright protection does not protect facts.

So the question becomes, is an API or interface a "fact" or an artistic expression? For simple APIs that are just a list of ways to get random numbers and the different kinds of random numbers, the API is probably more like a fact. But, I could see there being a very sophisticated interface (you know, the ones you stare at for a minute, and then say "Ahh! That's impressive.") could be considered an "artistic expression" worthy of protection.

Here's a recent article about Oracle and Google fighting over API copyright about this very issue being debated in the (US) courts.

I am not a lawyer, and this post should not be construed as legal advice. I can't even write disclaimers very well.


You can take the purely functional aspects, but you cannot take the expressive aspects. The class name, method names, and signatures are purely functional. You need them to inter-operate. Parameter names and header macros could be considered expressive. For example, in its Windows antitrust case, Microsoft argued that nothing prevented a competitor from replicating Windows APIs and creating their own platform on which Windows applications would run.

  • Good point regarding Windows API. Enter WINE.
    – user37735
    Commented Sep 30, 2011 at 11:13
  • On platforms like Java or .NET which include Reflection (or other similar means of finding out what things are called), I would think parameter names could also be considered functional aspects.
    – supercat
    Commented Nov 5, 2016 at 22:40

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.