Why do the GNU Core Utils have a copyright? - open-source

I am very familiar with the notion of "Free Software" especially with the stance of Copyleft that is laid out by Richard Stallman.
However, I find it very confusing that there are copyright statements at the beginning of all of the GNU coreutils?
/* cat -- concatenate files and print on the standard output.
Copyright (C) 1988-2022 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. */
This is an excerpt from the cat.c file from the GNU coreutils official repository.
Why would there need to be a Copyright?
It could be my interpretation of Copyright is incomplete. From what I understand, things are Copyrighted to prevent others from copying them, and to protect intellectual property. But the GPL clearly allows all of the above, so whats the point? Surely if the software is truly "Free Software" in Stallman's terms, it would be unnecessary to copyright the software?

From https://choosealicense.com/no-permission/
When you make a creative work (which includes code), the work is under exclusive copyright by default. Unless you include a license that specifies otherwise, nobody else can copy, distribute, or modify your work without being at risk of take-downs, shake-downs, or litigation. Once the work has other contributors (each a copyright holder), “nobody” starts including you.
Most licenses also have statements about liability and warranty (ie. you can't sue me because my program doesn't work.)

Related

Can anybody give me a example of how to licensing a software that use components from other software? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I wrote a software that used some pieces code from other software under a little modification. I'm confused by those copy right term and license term. Where should I put those copyright or license statement?
Here is the detail, there are three project called A, B and C.
A use LGPL license.
B use no license but put some copyright statement in a file called LICENSE.
C use neither license nor copyright statement. It only write a line indicating author.
I took pieces of code from those projects and modified them (I only took some functions actually). So what should I do?
I already checked other questions. They said putting a file called LICENSE into root directory would be enough. But what should I do with that file?
Can anybody help?
Thank you.
The LICENSE file will contain information on what kind of license your code is using.
This license should not violate any terms in the license of A,B or C(which you should stay away from as it doesn't have a license) as Jeff Atwood explains:
Because I did not explicitly indicate a license, I declared an implicit copyright without explaining how others could use my code. Since the code is unlicensed, I could theoretically assert copyright at any time and demand that people stop using my code. Experienced developers won't touch unlicensed code because they have no legal right to use it.
Without a license, the code is copyrighted by default. People can read the code, but they have no legal right to use it. To use the code, you must contact the author directly and ask permission.
source: http://www.codinghorror.com/blog/2007/04/pick-a-license-any-license.html
As far as mentioning the projects(A/B/C) from which you have taken code from goes, it is only necessary if the license of A/B/C requires you to do so.
A sample LICENSE file template:
project_name by author
This file is part of project_name. project_name is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
project_name is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with project_name. If not, see http://www.gnu.org/licenses/.

Correctly Applying an Open Source License [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
My question consists of multiple points that are inherently related, I apologize for that. I tried splitting it up a little more, but I would keep repeating myself.
What exactly is required to apply an open source license to a code base that is my Intellectual Property?
A lot of Open Source projects include a full copy of the license somewhere in a root directory but do also have some sort of file header including a license description, disclaimer and a copyright notice. Is that really necessary or does it depend on the license type?
If someone else contributes changes to this file, does he need to be named in the copyright notice too?
Disclaimer
I am not a lawyer, so you should really consult with one to get absolutely correct answers here.
To the best of my knowledge...
Whenever you author something, whether it be code or anything else, you automatically become the copyright owner of that work (unless you've signed an agreement whereby it is "work for hire").
As the copyright owner, you can apply whatever license you like. The fact is that, if you don't give out a license, then no one has any right to use, copy, modify, distribute, etc. your coyrighted work. So, users need your license to have permission to use the project (if you don't give a license, it cannot, contrary to popular belief, be presumed public domain). So, you don't need to worry about people ignoring the license... if they can't point to a license where you grant them rights to use your software, as the copyright owner, you can sue them for using your copyrighted work without your express permission to do so.
It is typical in open source projects to place the license in a file named "LICENSE" or "COPYING" in the top-level directory of the project. I suggest that you stick to this convention, since that is where people will look for the license. It is also good to indicate what the license is on the project's website, so that people don't have to download your whole project before they know what the license agreement is.
It is not necessary to include a full copy of the license in each source code file, although this is fairly common practice. Keep in mind, though, that putting a full copy of the license (or at least some indication of copyright ownership and the name of the license, if it is a well-known license) in any header files that you install will avoid any confusion as to where the header files originated, so it is reasonable to do that.
If you own the project and others contribute in a fashion similar to "work for hire", then it is not necessary to name the contributors. However, you should make it explicit (and get a permanent record of an agreement from contributors) that you will remain the sole copyright owner of the project, despite contributions made. Otherwise, the contributors do have copyright ownership over the files/code that they contributed.
One last thing, not related to the question... I highly recommend that you avoid GPL and LGPL, and go for a more permissive license (e.g. MIT, New BSD, Simplified BSD), as the former will limit the adoptability of your code, and projects with more liberal licenses, if they do become adopted in the industry, have the potential to be backed by the industry (e.g. the Apache Foundation has strong industry support, because, unlike GNU/FSF which mistakenly views open source and closed source as enemies, sees them as collaborators, and so uses licenses that allow their projects to be widely adopted by the industry world).
Disclaimer: IANAL. That said, here are some random thoughts on the topic:
The term "Intellectual Property" bundles together many kinds of law: patent, copyright, trademark, and trade secrets, among others. Applying a license to a work you create will affect how your work can be used. Because each license allows for different uses of your code, how you apply the license is usually specific to which license you choose. For example, information about how to license your code under the Apache 2.0 license can be found at http://www.apache.org/licenses/. Note that projects managed by the Apache Software Foundation also require each contributor to grant the ASF copyright for the work. Granting of copyright is separate from the license.
I'd recommend reading Van Lindberg's "Intellectual Property and Open Source" to learn some terminology, and if you have significant commercial interests related to the code, spend a few hours with a lawyer.
Disclaimer: I am not a lawyer, the below is simply my understanding of OSS licensing. If I'm wrong, I'd appreciate any corrections.
Clearly state (on your project website, in source code, documentation, splash screen, about dialog, etc.) that the project is licensed under whichever license you select.
Considering the nature of open source, if a portion of your project is used in a different project owned by someone else (e.g. some useful utility class), having the "basics" of the license as part of your source code's header text makes it clear which license governs the use of that specific source file, and who owns the copyright on that portion of code in the project as a whole.
Yes, unless they have supplied you with documentation stating that they have transferred copyright to you (I believe some larger projects require contributors to do this?).
For an example of applying an OSS license to a project, see http://www.gnu.org/licenses/gpl-howto.html
A license is simply the rules you expect others to abide by if they do anything (use it, modify it, post it, make fun of it, whatever) with your code.
a) You can put what you want, but to be taken seriously, you may use a license that is already nicely written and accepted ... check opensource dot org /licenses/category for a (loong) list
b) To decide which type of license, check out this recent aricle: http://www.itbusinessedge.com/cm/community/features/guestopinions/blog/ringing-in-the-new-year-with-clean-intellectual-property/?cs=38892&page=1 . Common ones are GPL V2, LGPL, Apache, New BSD- check out the summary matrix on Page 2 of the article
c) make sure your software doesn't include code from other open source or 3rd party, otherwise you'll be claiming theirs as yours- not a good idea! There are tools you can use on trial basis to scan your code.
d) put the text of the license in a License.txt or Copyright.txt file in the folder. Also add a simple (or complex, if you wish) header to the source files as Kimvais mentions in the previous post.
Good luck.
Short non-lawyer answer;
Nothing except making it clear to anyone that you, the sole author of the code, license the code under whatever terms.
It is advisable to have the license file in the root directory. I would personally add in the "top comments" of all files the line Copyright 2010 <Your Name>. Released under <license name> in <Your country>. The last part is so that you can claim that the license was never meant to be interpreted under any other law than your local (so you can get a competent lawyer in your home country in the event that everything goes wrong)
I would say that this depends on the license you choose
For further info, read this book - or consult a lawyer with experience of software licenses.

Is there a chart of which OSS License is compatible with which? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 9 years ago.
Improve this question
I have a fairly good understanding of individual OSS licenses, but I always have trouble when I want to use code under different licenses. BSD vs. Ms-PL, Apache 2 vs. GPLv3 etc.
Is there some sort of "mating chart" that lists which licenses are compatible with which ones?
The Free Software Foundation maintains a list of licenses, categorized as GPL compatible, GPL incompatible, and non-free. This can help answer the most common question, which is whether a license is GPL compatible. Since there aren't many other free software licenses which require that the entire derived work be distributed under the same license like the GPL does, compatibility issues are usually lower between other licenses as long as the code stays in distinct libraries or source files.
As far as the Ms-PL goes, you can probably use the FSF list to determine compatibility for that as well. The Ms-PL is a (very) weak-copyleft license (the Ms-RL is slightly stronger, but is still categorized as weak-copyleft). This means that code distributed under it must remain under it, thus making it GPL incompatible, but that you can generally link it to code under permissive or other weak copyleft licenses, as long as you follow the terms of each license and the separately licensed code reside in separate libraries. The only licenses it is likely to be incompatible with are strong copyleft licenses, like the GPL and AGPL. (Standard disclaimer: I am not a lawyer, and this is not legal advice. If you need legal advice, you should talk to a qualified attorney).
For a more limited set of licenses, you can check out this Free-Libre / Open Source Software (FLOSS) License Slide by David Wheeler (reproduced below). Arrows indicate that two licenses may be combined, and that the combined work can effectively be treated as having the license at the end of the arrow, possibly with some additional restrictions taken from the license at the start of the arrow.
(source: dwheeler.com)
the following paragraph is a generic rant on this topic, related but not directly relevant to your question
The difficulty of determining license compatibility, and simply in understanding the ramifications of various licensing terms, is why license proliferation is such a bad thing. Please, please try to use a common, well understood license, such as the GPL, LGPL, BSD 2-clause or 3-clause, MIT/X consortium license, or public domain dedication, if at all possible. Whatever you do, don't invent your own license. If you must, use the license that is common for the project you are contributing to, to maintain compatibility with the rest of the code in that project. If you follow these rules, you will help reduce confusion, and improve license compatibility.
Answering your comment about being interested in Ms-PL-compatible licenses:
Most licenses are compatible with it. Your best bet would be to go to Wikipedia and type in a license name. It is compatible with the Ms-PL if it's listed as having no copyleft, since Ms-PL requires all released source code derivatives be under Ms-PL.
That's how I do my research. ;)

Go code contribution: license and patent implications? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I've been reviewing the contributions documentation for Google new language, and was curious about the idea of contributing a new package. It states that this should be included at the top of contributed source code:
// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
My understanding of a BSD-style license is that it essentially means that the user needs to attribute the code to you, but can do whatever else they want.
Further down it says:
If you are the copyright holder, you will need to agree to the individual contributor license agreement...
In the "individual contributor license agreement", it says that Google has patentable rights to the contributed code:
You hereby grant to Google and to recipients of software distributed by Google a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted.
To what extent does Google own any Go contributions? Do they have full rights to profit from these contributions?
To what extent does Google own any Go contributions?
You are not required to transfer copyright to Google. You still OWN the copyright.
You are not required to transfer ownership of patents to Google. You still OWN the patents.
In short Google does not OWN any IP that they didn't already own.
But you do grant Google the unlimited right to use and distribute your contributions, and you grant the right to use to downstream folks. Clause 2 covers copyrights, and clause 3 covers patent rights. Moreover you grant this as an irrevocable license (i.e. you cannot change your mind) and for free.
Do they have full rights to profit
from these contributions?
There is no such a thing as "a right to profit" in a legal or moral sense. Hence "full rights to profit" is not a valid characterization of the rights that you currently have.
By granting Google non-exclusive, non-revocable copyright and patent licenses, your remaining rights are no longer exclusive. Google will be able to profit your contributions, but so will you. You will have reduced your scope for personal profit, but that was not ever a "right".
No, it just means that if you contribute to Google's project, Google can still do whatever they want with it.
You are the copyright holder, of course. If your code gets included into Go, you become part of The Go Authors.
This is a common practice nowadays.
Effectively, through the Contributors Agreement you are sharing copyright with Google.
That means, in the end, Google has copyright over the entire codebase. This gives them the right to relicense the codebase however they want should they see fit. (Copyright owner determines license).
The primary goal of the CA is to ensure and assert that the contributor has the rights they are granting to the project (patents, copyright, etc.).
Some projects, for example, would want a patent grant, but are not interested in any copyright, as they have no intention of relicensing the project.
Mind, since the license is BSD, a copyright grant is really just a formality, because of how liberal the BSD license is in the first place.
Disclaimer: I am not a lawyer
Grant of Patent License.
Means if you have a patent on something in your contribution, you allow Google to use it without worrying about IP crap.
In other words:
Patent License = Permission to use the "patented technology" (if any).
It's irrecoverable: meaning you can't change your mind later.

Mutually beneficial IP/copyright clauses for contract-based freelance work

I have a copyright section in the contract I give to my clients stating that I retain copyright on any works produced during my work for them as an independent contractor. This is most definitely not intended to place arbitrary restrictions on my clients, but rather to maintain my ability to decide on how the software I create is licensed and distributed. Almost every project I work on results in at least one part of it being released as open source. Every project I work on makes use of third-party software released in the same fashion, so returning the favour is something I would like to continue doing.
Unfortunately, the contract is not so clear when it comes to defining the rights of the client in the use of said software. I mention that the code will be licensed to them, but do not mention specifics about exclusivity, ability to produce derivatives etc.
As such, a client has raised concerns about the copyright section of my contract, and has suggested that I reword it such that all copyrights are transferred entirely to the client on final payment for the project. This will almost certainly reduce my ability to distribute the software I have created; I would much prefer to find a more mutually beneficial agreement where both our concerns are appeased.
Are there any tried and true approaches to licensing software in this kind of situation? To summarise:
I want to maintain the ability to license (parts of) the software under my own terms, independently of my relationship with the client;
with some guarantee to the client that no trade-secrets or critical business logic will be shared;
giving them the ability to re-use my code in their future projects;
but not necessarily letting them sell it (I'm not sure about this, though...what happens if they sell their business and the software along with it?)
I realise that everyone's feedback is going to be prefixed with "IANAL", however I appreciate any thoughts you might have on the matter.
Create a license that grants the client the right to use and modify the software, but restricts distribution outside the organization the software is licensed to.
That should cover your needs, since you state in your contract with the client that you retain control over the copyright of the software, and they license it from you under a license chosen when the contract is signed.
As long as you also sign a NDA when you sign the contract, their secrets will be covered by that.
Edit: Oh yeah, almost forgot: IANAL
Try breaking the project into components with their own licenses. This way business logic has their copyright and generic components have your copyright and open source license.
After considering the two answers given, I decided that a combination of the two approaches would yield the best results.
With that in mind I have defined two types of deliverables; generic and client-specific. The client receives exclusive ownership of the client-specific deliverables upon final payment, and I maintain ownership of all generic deliverables. The client is granted a "perpetual, irrevocable, limited, non-exclusive, non-transferable, worldwide license, without the right to grant sub-licenses (except to affiliates and subsidiaries)".
This change satisfies the requirements of both myself and the client.