If you transfer all IP rights to client, can you still reuse parts of source code? I'm trying to get into freelance/contract work for computer programming. Many clients want to "own everything" and have terms like "once paid, the developer transfers all rights to the client". Does this mean I cannot reuse any parts of the source code, even small simple ones? For example if I build a program for a client, and part of the program involves converting 24 hour time into AM/PM time then can I reuse the code in another project or do I have to build it from scratch again? How could one even tell the difference? What about abstract things related to programming itself, like data structures. C++ doesn't have its own linked list so if you use on in a project and transfer all rights to the client, then does that mean you can't reuse that library in another project? Does that mean you can never use a linked list again (I'm guessing not but then does it really matter if you build the code from scratch vs copy/paste from a previous project)? I'm guessing there's some kind of threshold that has to be met for copyright to apply (it can't be too trivial or common place). I'm not trying to rip of the client, I'm legitimately confused as most understandably want to own the source code but does that mean you can't reuse common features between projects?
It does mean that you cannot reuse any parts of the source code, even small simple ones. You would have to rebuild the code from scratch. There is a significant chance that the code would be "substantially similar" to the code that you were hired to build, also that if anybody else were to write a bubble sort or 24-to-am/pm conversion routine, it would look the same, where even variable names (which should describe function) are the same or very similar. In case of an infringement lawsuit, you would have to defend yourself by showing that there are only a few ways to code a given function. Copyright protects only the "expression", not the abstract idea. A linked list is an idea, which can't be protected by copyright; same with recursion, pointers, stacks, object-oriented programming... Anything that involves copy and paste is infringement. If you re-read the copyrighted code and then try to reconstruct it, you probably crossed the infringement line. If you remember the problems and solutions and accidentally write somewhat similar code, that is probably on the safe side. From the perspective of the programmer not wanting to always reinvent the wheel, it would be most useful to make a distinction in the contract between "the essentials of the customer's program" versus "incidental utility work". The difficulty will arise in saying specifically what is essential vs. incidental. For instance, I know that if I were to hire you to develop a speech-recognition system, low-level audio-acquisition and encoding would not be essential to my purpose, whereas DSP parsing routines would be the center of my interest. The programmer would then want to retain recycling rights to all non-essential code.
It's not fair use. Fair use is when you do something that normally only the copyright holder can do. Playing a video game is the ordinary, intended use of the work. In the United States, ordinary use is not protected by copyright. 17 USC 106 sets out the rights protected by copyright. The include copying the work, producing derivative works, distributing the work, and so on. None of these are ordinary use. Someone could perhaps argue that you are creating a derivative work. I doubt that argument would work because you are not taking any protectable elements from the work. But if anyone did argue that, it would make sense to also argue that if that's so, your use would still be covered under fair use because it's transformative, does not substitute for the original work in any way, and takes very little of the work.
I wrote a letter to the Eclipse Foundation. The consultant pointed me to section 5 in their FAQ. My case falls under the term "linking". He warned that he isn't a lawyer, but offered the following short answer: The Eclipse Foundation does not consider linking with EPL content to be a derivative work and so you are not required to disclose your source code.
You need to check what license the library comes with. The fact that you want to create a public domain program doesn't give you any rights to any library. So read the BSD license and see what it tells you whether and how you can use the library. For example, if you used a GPL-licensed library, you could not put your program in the public domain legally.
That depends of the combination of licences, up to the point that there may be no solution valid for all of the components and you have to rework your project. The terms from the different licences must be evaluated to see which terms are appliable to the final product. For example, the GPL licence affects all of the source code of your project, and not only to the GPL licenced components1. So, imagine that you get one component under a licence which does not provide the source code (not even to you, even less for distribution) and a GPL licenced component. Incompatibility! Keep in mind also that usually there are several "flavours" and versions of BSD and GPL licences (with some BSD licences being compatible with GPL while others at not), so there is no general rule. That said, BSD licences are usually pretty open, so if you have a mix of (GPL-compatible) BSD licences and GPL licences, you usually can redistribute this with any licence that meets the GPL licence restriction. And, since the GPL forbids adding any additional restriction to GPL licenced code, that is pretty much it. 1That is why GPL is sometimes called a "viral" licence, because it "infects" all the code of your project.
Company B has created a derived work from company A's copyright-protected work, so yes, B has infringed on A's copyright. It might be difficult for A to prove it, however, so B might get away with it, but it's still infringement. On the other hand, if B creates software that behaves like A's through reverse engineering, that is, by examining the program's function without examining its code, then they will not have infringed the copyright in the code.
You cannot do this through any established public license that I know of, but you could write your own. The model would be any educational use or non-commercial use license, such as CC NC licenses. The main challenge is defining the excluded classes of usage. That is why you should engage an attorney to draft this for you. I don't think there is any point in adding a $5M penalty clause. You offer a separate paid license for individuals who do not want to comply with the particular terms of your license, and set the fee to whatever you want. Saying that you're gonna fine violators is a bad idea because penalty clauses are illegal. Instead, the standard approach is a liquidated damages clause, where you state what a reasonable estimate of your damages would be. In the case of software that is available for purchase, illegal copying of the software obviously results at least in the cost of the software qua lost revenue as damages. Plus shipping and handling.
As long as you own the copyright to the works, you can even publish the source code itself under two different licenses, which can be radically different. For example, MySQL is licensed under both a commercial and an open-source license. Given that you can publish a single piece of work as multiple licenses, it is your choice which one you wish to grant to the book or the code, as long as you own the copyright.