31

I'm very confused by what I'm finding on this site. On one hand, it appears as if no programmer is even capable of producing original code if they have ever viewed a source code for a program which does the same thing or similar.

How is it possible for any programmer to produce original source code if they ever view the source code of any program which produces similar results? How is it that every program ever written isn't a derivative of some pre-existing program, unless no programmer ever looks at or views source code which produces a similar result? How is it that not every program available isn't a derivative of some other more basic program?

Do programmers literally never look at any source code they didn't write from scratch? I find that idea impossible, not just hard or unlikely but outright impossible.

I'm very confused, but I would like to understand. It is literally impossible that every programmer alive is simply disbarred from viewing source code if they want to be able to produce original code that isn't derivative.

How can I reconcile this with the fact that the software industry exists?

(Edit from OP) Thanks for the answers everyone. Between these, another question I asked, and reading around this site I think I'm a lot less confused. Somewhere I read that only some aspects of coding are copyrightable, not all code. Also, I would like to clarify that I am speaking from the perspective of someone about to begin the journey of learning programming from scratch. I don't even know a language yet, beyond very basic HTML. I just want to do it well, and correctly, so I am in the research and gameplan building phase. Also very new to this community, so I do apologize if I'm not using it correctly or not using the site etiquette or practices correctly.

2
  • Comments have been moved to chat; please do not continue the discussion here. Before posting a comment below this one, please review the purposes of comments. Comments that do not request clarification or suggest improvements usually belong as an answer, on Open Source Meta, or in Open Source Chat. Comments continuing discussion may be removed.
    – MadHatter
    Commented Oct 29 at 21:21
  • If you're thinking of adding yet another answer, please note that the OP has accepted a (highly-upvoted) answer already, indicating that (s)he is satisfied that the question has been answered. It is possible that an unreferenced, unsupported statement of your personal beliefs on the subject may not be enough to convince the OP to accept your answer over the one (s)he's already chosen.
    – MadHatter
    Commented Oct 29 at 21:25

11 Answers 11

48

If you make a copyrighted work, copyright law affords you the exclusive right to prepare derivative works of that work.

It is true that every program is derivative of some set of programs that came before it, in much the same way that every sentence you've ever said is derivative of the entire set of language you've ever experienced. A copyright infringement case considers whether a work is sufficiently similar to some other, specific work to have violated the other author's exclusive privilege of preparing derivatives of that work.

This is not a clearcut standard, and indeed there have been several famous cases and principles dictating what does and doesn't rise to the standard of infringing similarity.

  • For example, Google v Oracle went through many rounds of cases, up to the U.S. Supreme Court, to decide whether the copying of function signatures constituted copyright infringement.

  • Broadly, the principle of scène à faire holds that "necessary" components of a work that are, e.g., obligatory to a particular genre, do not infringe works that previously happened to employ those components. As you might expect, what is "necessary" is a murky judgement that is left for courts to decide.

  • Copyright only applies to creative expression, not ideas. The merger doctrine is the principle that a sufficiently basic idea might have a limited number of possible expressions, so the simple idea and its unavoidable expression merge into pure-idea unprotectability, outside the purview of copyright.

As for avoiding reading source code, you've likely read something like, "you can avoid committing copyright infringement of a work by not looking at that work's source code," which is true: copyright infringement is determined (in the U.S. at least) by the twin factors of similarity and access. You cannot infringe on a work you've never seen, so abstaining from viewing it (and proving so in court) is sufficient to nullify a claim of infringement.

However, this doesn't mean avoiding a work is the only way to avoid infringement, but it is the most absolute. If you have looked at a work, and the copyright holder of that work accuses you of infringement, then you are back to proving that your work is sufficiently dissimilar to not form a derivative under copyright law.

2
  • 1
    Same issues come up in the music industry as well. Commented Oct 28 at 14:05
  • 5
    +1 for specifically this sentence: It is true that every program is derivative of some set of programs that came before it, in much the same way that every sentence you've ever said is derivative of the entire set of language you've ever experienced. Like @MikeLowery mentioned, this argument extends to music as well. Every song is derivative of the entire set of musical expression that the artist has experienced. Or even every song is derivative of the range of musical notes that can be expressed :)
    – DJMcMayhem
    Commented Oct 28 at 18:17
9

I assume you’ve been told “don’t even look at that!” by an employer. This can be good advice, but usually the fear is software patents, not copyright. Unlike copyright, patents can cover the mere idea behind an algorithm, product segment, or design technique. They protect ideas where simply inventing the concept is supposed to be the novel & hard part, not necessarily the implementation; and obviously it’s easier to get the gist of said concept by skimming code, than it would be to copy it at the level of specificity that copyright infringement requires.

7
  • 8
    Not knowing that something is patented is not a defense against violating the patent. So this only works if it's coupled with someone else (who actually knows the patent) then checks whether you by chance did build something which would be covered. Commented Oct 27 at 23:25
  • 5
    @PaŭloEbermann you're right, but in some jurisdictions knowingly violating a patent is more harshly punished than unknowingly doing so. So an established practice of not reading patents is a good defence against a charge of intentional infringement.
    – MadHatter
    Commented Oct 28 at 7:31
  • 1
    @MadHatter ... but then you have no possible way of avoiding violating the patent (since you don't know what it covers or whether any given implementation will violate or evade it), so it's not obviously safer even in a jurisdiction like that you describe!
    – Mark Amery
    Commented Oct 28 at 10:16
  • 4
    @MarkAmery: That's why you only (should) do this in a company where there's a legal department which separately verifies patent infringement. They see patents, but do not contribute to the implementation.
    – MSalters
    Commented Oct 28 at 10:25
  • I'm going to point out that at least in the US, a patent is not intended to protect an idea, but an invention. An idea isn't enough to obtain a patent, you need to actually express that idea with a solution to achieve a patentable invention. Unfortunately, patent trolls, sloppy approvals, and underfunded overworked officials have made possible huge numbers of low quality and often invalid patents which can be used in ways never intended by the Founders, so it's common for people today to think patents are just ideas. That was never the intention.
    – barbecue
    Commented Oct 29 at 22:04
8

Yes and no. I began my career with commodore c64. At that time I was able to learn "if then else". And read the books to see what features that hardware has (for example there is no multiplication in the way you think about it). I had to solve the hardware limitations myself. Sometime there was already a known solution for a known challenge but programs were smaller and simple. I used to develop things like graphics. Only to learn that others did it differently and my code drawing line on the screen was way slower that the one from graphic library. I did my first operating system. At that point I was already swift in assembler and pascal. And my journey went onto the electronics (analog and digital). I started to learn more about "what other devs did". I learned about design patterns. I am learning since then.

Notice that I started with my own development not knowing "similar source". I was developing with some hardware opcodes to execute hardware operations... Only to learn that CISC offers this out of the box. Was my starting point a reproduction of what I have seen or not?

Nowadays I learn about the things. How someone created them. How to interact with them. If I don't like the implementation then I have the ability to do it my way (usually this is a bad idea as others did a better and faster line drawing as well as other things). I can also improve existing things. Or use fancy thing from other source I have seen. That is the power of open source. Then others can also use my patterns. Have I created something new or created something derived?

As an architect I often simply join pre-prepared blocks together. But I also plan how to connect them. I plan what to sacrifice to get some gains. And I improve things in iterations.

I started with some crappy books. Then I met other people. Then I found better books. Then I started using library. Then Internet gave the power to access many data sources. Nowadays "AI" gives me the power to process data from multiple sources in much faster way to do what I wand and how I want. And to improve it with the work of others. Is it my own work or derived? Is it Ai's work or is it merely a tool?

Currently many developers are simply repeating what they were thought. They do not adjust. And that cannot solve new challenges that were not met before. They shall be replaced with cheap AI. But there are the creators. Inventors. People, who can adjust without loosing their basic rules, their morality and some other guides. Maybe at some point AI would be able to do this. I only hope that it would have some validation in place to stick with its basic rules.

Finally the merritum: when there is a new challenge then you need to adjust. You need to create a new solution. You can create something never seen before if you are lucky. You can try known solutions - maybe something existing would work? Or you can follow some rules of problem solving. Either way you would create something not done before with less or more in common with existing and known solutions. Since you assume that your work is derived, you might be among the "repeaters". But since you ask questions, you have the potential to find something new. Good luck

1
  • What ana amazing answer. Thank you for your time and consideration, I do appreciate it. I'm neither actually, as I've yet to learn a language. I'm currently researching and building a game plan towards learning to code what I wish somebody else would but nobody has so far~ Prolly never will. Would it be possible, if you are willing, to have a look at my other question/s?
    – simspawn
    Commented Oct 27 at 20:59
1

The claim that you make in your headline is just plain wrong. Looking at similar source code does absolutely not make my code a derivative work.

To create a copy, I need to make an absolute 100% copy. To create a derivative work I need to create my work by making a copy of an original work, and then modifying that copy for my purposes. No copy made means no derivative work made.

There is another question whether you can prove that your work isn't derivative. If you can claim that you never even saw the original work, that's excellent evidence that you didn't copy it (because you couldn't have) and therefore didn't create a derivative work (you couldn't have, even if you wanted to). On the other hand, if nobody watched you creating a derivative work, so no direct evidence, then someone could try to prove that your work is so similar to another one, that cannot have been coincidence, it must have been a derivative work. Beyond reasonable doubt.

2
  • 6
    I'm not sure I'd agree. Hollywood take a very dim view of fanfic which uses their characters even though it's not made by your taking a copy of an existing piece of work and modifying it for your purposes. If you decide to produce a film about a boy wizard called Garry Trotter who goes to a school called Bogwarts, and it's a commercial success, you may well find the licensing arm of Warner Bros. knocking on your door. Yes, to do what you describe will very likely make an infringing work; but you can do it in other ways, too.
    – MadHatter
    Commented Oct 27 at 17:00
  • 1
    It's not a claim, it's literally a question~ literally asking, cause I'm confused.
    – simspawn
    Commented Oct 27 at 21:23
1

This is a great question.

It depends on what you're building, and how innovative it is.

It's hard to be completely free from prior art.

Yet, there's a first version of everything. First web server, first web browser, first router, first web-page, etc. Before the Internet we used books with minimal samples, etc. "Open source" was less common in those days and with no Internet where would you store it anyway?

I give those "old" examples to assert that there are people working on cutting edge, innovative things right now. Things most of us can't imagine yet. And the code for those things is likely less derivative, if at all.

2
  • 2
    Merely in passing, I note that the first web server was CERN httpd (released under MIT) and the first (graphical) web browser was WorldWideWeb (released into the public domain) (source). Router I'll give you, though the IMP pretty much preceded the whole concept of software licensing. So I'm not sure "open source was less common in those days"; arguably, software hoarding was less common in those days.
    – MadHatter
    Commented Oct 27 at 20:59
  • As it relates to licensing, yes! But as it relates to availability (and therefore likelihood of others seeing the code), that was low. In any case, the point is that truly new and different things tend to be non-derivative.
    – Bill Quinn
    Commented Oct 27 at 21:21
-1

Legos act as a good physical stand in for software here.

Your argument is like saying nothing you make with Legos is original. Just because they are sold in kits doesn't stop you from making something completely different and unique.

If there were documentation showing every way imaginable you could combine Legos, sure you could argue everything is derivative. But that documentation doesn't exist.

-1

Simple answer is, we don't go around reinventing the wheel, it's done, now build upon it. If you come across a problem and you think you can solve it, check if the solution already exists or not. If yes, move on, solve something else. If not go ahead show what you can do and then you will be the original creator of that solution.

-2

It's one of those things where it's all derivative but none of it is. Read what you need, use what you need, write what you need. So long as you're not copying code you don't have licence to, there is no problem but a few people getting butthurt.

-2

It's not so much original work as logical work which align with the case and appropriate system theories and design patterns.

If you think about science, we do not invent it, we discover it, we discover the fields, the laws and structures of reality; well it's the same, it's just another field, it's normal to have high similarities if you want the best design. You do not invent a square wheel if the logical choice is a round one.

Copyright is just an illusion where you think that you are the first to reach a best way to achieve something. On one hand it might be true you are the first but on the other you didn't invent it, you just "found first" one way to do things and possibly one that will be supplanted soon.

With proper knowledge you don't need to copy anything particular but you rather re-use the appropriate logics combined together for you proper use case. 🚀🌐

Almost never the use case is identical.

1
  • As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Oct 29 at 7:34
-2

My advice; dont worry about it. Dont worry about it for your personal projects, because nobody cares. And dont worry about it professionally; if some of your collegues do, theyll let you know.

At the end of the day, in the extremely rare cases that code actually does become contested, decisions will come down to super arbitrary, subjective, and arcane legal mumbo jumbo, and any time pondering it now will end up a complete waste of time in the future.

1
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Oct 30 at 4:16
-3

How does every writer write original stories when they rely on the underpinning language, are they not unique?

Are they not looking into linguistics and creating their own deviations from english?

Imagine that as a question.

We write in programming languages that can be read, compiled and interpreted by mediums (browsers, OS’s, etc) and can be viewed by the end user.

So there needs to be continuity, within that space there are plenty of choices of frameworks and helpers and bundlers and runtimes that are all optional. Programming languages are a canvas and tools to get your ideas to the consumer

1
  • As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Oct 29 at 7:35

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