3

What would happen if I need to recreate code for a software function I did previously?

The catch is that even when I'm writing it from scratch I cannot make it very different from how it was where I originally did it because I know the design very well and so the new code would be very similar to original code.

Although there will be slight differences, the code would likely end up looking similar to original because its just the most efficient way to write that feature.

Otherwise I'd have to purposefully induce imperfections and scramble the names to illegibility just to avoid any possible copyright infringements.

19
  • An extreme example is the movie "Paycheck" (2003) based upon a Philip K. Dick short story.
    – ohwilleke
    Oct 24, 2019 at 19:09
  • 2
    "Scrambling" the names would not do anything anyway; if you compare the two versions (one with one set of names and one with the others), most likely anyone would consider one version to be a derivative work from the other. Simply renaming variable names does not produce a new original creative work. The safest way would be to use a so-called "clean room approach" where you give the design, specifications, test cases, etc. (i.e. non code parts) to someone else without access to the original code and have her write a new version based upon those designs.
    – Brandin
    Oct 25, 2019 at 6:35
  • 1
    @Allahjane to clarify, you wrote the software before, but you don't own the copyright? For example because your employer owns the copyright instead?
    – wimh
    Oct 25, 2019 at 16:15
  • 1
    @Allahjane Using a 'technique' is not copyrightable. You can freely use any 'techniques', programming practices, algorithms, etc. that you learned. The only problem you might run into is copyrights (very unlikely if all you are using is a 'technique') or patents (possible if your specific 'technique' is something that is patented, but probably unlikely as well).
    – Brandin
    Oct 26, 2019 at 8:57
  • 2
    @Allahjane Knowledge is not copyrighted, only the specific expression of it. For example a book about woodworking is copyrighted. But once you read that book and learn how to do woodworking, anything you make with that knowledge is generally your own. It's pretty much the same with computer code; as long as you don't actually copy code or derive code (such as "copying and simply renaming variables") from your earlier works which you did for hire, you don't have a problem with copyright.
    – Brandin
    Oct 26, 2019 at 13:04

2 Answers 2

3

So you're trying to avoid a claim for copyright infringement.

As you know, the linchpin to copyright infringement is copying. If you don't copy the previous code that you refer to, you're not copying, and there can be no copyright infringement. That is a question of fact. If you don't have access to the previous source code, you can't copy it.

As you say the code is relatively simple, you could develop the code in a clean room (ie no previously developed code is accessible to you), and document the process as you do it.

That would probably reduce the prospects of someone coming to you later and succeeding in a claim for copyright infringement.

3
  • I'm simply trying to avoid copyright infringement without having my knowledge locked away behind a copyright such that I'd be forced to redo the same type of work with purposely obfuscated code or with inferior code
    – Allahjane
    Oct 26, 2019 at 18:11
  • I don't think clean room programming is economically feasible except in very rare cases.
    – Sam
    Oct 10, 2021 at 20:06
  • Using third party version control hosting like github could help prove code growth, am I right? As you cannot forge history that way.
    – PeterM
    Sep 6 at 11:55
2

(I'm not a lawyer. DO NOT rely on the content below as legal advice. Please consult an attorney for your serious business.)

Since you said

Although there will be slight differences, the code would likely end up looking similar to original because it's just the most efficient way to write that feature.

I will abstractly, without exploring into your factual circumstances, discuss the question of whether, in implementing a specific feature, it infringes copyright to use copyrighted software code that is the most efficient way to implement that feature. The discussion focuses on US copyright law.

(tl;dr; go to the bold paragraph at the bottom.)

Expression-Idea Dichotomy

Copyright only protects expression of ideas, but not the ideas themselves. For example, copying the content of a cookbook may result in copyright infringement, but simply cooking by following the procedure (idea) outlined in the cookbook generally does not infringe copyright. Simply speaking, by offering the authors limited-time protection over their expression, copyright is an engine that encourages people to generate expression. The ideas embodied in these expression, as implemented in the real world, benefits the society as a whole. Therefore, the purpose of copyright law, in some sense, is to encourage the implementation of ideas embodied in copyrighted expression.

Merger of Expression and Idea

But expression and ideas sometimes merge. When this happens, the idea (which has merged with its expression) is no longer protected by copyright law. For example, in Baker v. Selden, 101 U.S. 99 (1879), Selden described a book-keeping system in his book, which includes certain blank forms. To use the book-keeping system in Selden's book, copying these blank forms is inevitable. The Court holded that there was no copyright infringement and explained:

... But this object would be frustrated if the knowledge could not be used without incurring the guilt of piracy of the book. And where the art it teaches cannot be used without employing the methods and diagrams used to illustrate the book, or such as are similar to them, such methods and diagrams are to be considered as necessary incidents to the art, and given therewith to the public; not given for the purpose of publication in other works explanatory of the art, but for the purpose of practical application...

Merger of Expression and Idea in Software Code

When there is only one or very few ways to (efficiently) implement a certain idea in computer programming, such as an algorithm, the expression (the software code) and the idea (e.g., the algorithm), may have merged. The court in Computer Associates International, Inc. v. Altai, Inc., 982 F.2d 693 (2d Cir. 1992) explained:

While, hypothetically, there might be a myriad of ways in which a programmer may effectuate certain functions within a program, — i.e., express the idea embodied in a given subroutine — efficiency concerns may so narrow the practical range of choice as to make only one or two forms of expression workable options. See 3 Nimmer § 13.03[F][2], at 13-63; see also Whelan, 797 F.2d at 1243 n. 43 ("It is true that for certain tasks there are only a very limited number of file structures available, and in such cases the structures might not be copyrightable. . . ."). ... It follows that in order to determine whether the merger doctrine precludes copyright protection to an aspect of a program's structure that is so oriented, a court must inquire "whether the use of this particular set of modules is necessary efficiently to implement that part of the program's process" being implemented. [] If the answer is yes, then the expression represented by the programmer's choice of a specific module or group of modules has merged with their underlying idea and is unprotected. []

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .