-
Notifications
You must be signed in to change notification settings - Fork 37.7k
doc: Bump copyright years to present (headers only) #26817
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The head ref may contain hidden characters: "2301-doc-copy-\u{1F37C}"
Conversation
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
The interesting question is one is allowed to do this. Let's ask the license first. The license in COPYING is (emphasis mine):
So if you read that literally, then at least the license only cares about the "above" copyright notice (in COPYING) and not these in the source files... Good. But all the files say they're covered by the license, too. Hm. Okay, now what about the law? Let's look at some examples: US:
I guess removing the date is altering the noting. And okay, I suspect the intent here is not fraudulent but you want to risk it? Germany:
Note that the exception in (2) does not include the designation of authorship. So there's a good chance that removing the date would violate (1). Bad enough but what about a few hundred other jurisdictions? And the law of which jurisdiction does apply here? That was a difficult question even before the Internet and it's much more difficult now, and even more difficult with projects like these which can be download from almost every jurisdiction in the world (probably from servers in different jurisdictions) and has contributors from different jurisdictions, for some of which we don't even know the jurisdiction, e.g., the original author of the software. International copyright law is pretty much not helpful. That's how it is and I think we need to accept this. But I'm not a lawyer, I just happen to be interested in legal stuff a little bit. So here's what you should do: Talk to a lawyer, e.g,, try to contact a Bitcoin legal defense fund and see what they think. In libsecp256k1, we also would like to simplify the license handling. (It's actually on my list to contact someone for libsecp256k1.) Maybe an expert lawyer has some clever suggestion. For example, I could imagine to simply introduce a rule that says to never update copyright notices. (That certainly won't alter them!) That's even simpler than this PR. But again, an expert response will certainly be more helpful than mine. |
Yeah, I don't mind having a lawyer double check this change. However, if there is legal doubt that this change can be made, likely most other changes (even those not touching the notices) will require legal review as well, which would bring the open source project to a halt or at least cause a significant bottleneck. For example, bumping the copyright might equally be questionable. I see that you suggest to never update the notices. Though, that will be impossible to implement in practice when code is moved from one file to another and the notice in the two files is not char-by-char-equal. I guess you could have another rule to forbid moving code from now on, but what about major rewrites of a piece of code. What about minor modifications to the code. ...? In any case, if there is a legal basis for a rule to never modify the notice, or modify it only on "specific" occasions, we'd also need a legal basis to decide whether it is fine to just leave the "latest" version of the notice or if we have to restore any or all previous iterations. All lines I am touching in this pull request have been heavily modified or "invented" out of thin air by someone other than the original author. (Not going to list the commits here to avoid blame, but there are commits to add "missing" notices to files that didn't have one. There are commits that change the notice text from "Bitcoin" to "Bitcoin Core", or other copy-edits. Finally, there are commits to modify the year ranges, even the starting year). Again, I don't object having a legal double check here, but I'd be surprised if they reached a different conclusion than the previous legal reviews done by the legal teams of Meta, Microsoft, Google, LLVM, Linux Foundation, etc ... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Concept ACK
After reading the links provided by PR author and a few Q&A on https://opensource.stackexchange.com/, I agree with the changes in this PR.
Changing copyright notice and removing year should not have any legal issues IMO.
If there was legal review at all. And if the review was sound. And Ignoring the legal implications/taking the risk may be totally reasonable for some projects. And I think it really depends on the case. For example in facebook/react@b87aabd, Facebook is the only copyright holder and the original author. They can do whatever they want. (Whose right could they possibly be violating?) The curl change doesn't look like it got legal review. In case of the Microsoft, Google, and LLVM examples, they never had a year in the notice, so they didn't alter it. For the blog post by the Linux Foundation: Yes, the best advice for new projects is simply omit the notice entirely. (I highly recommend this to everyone!) But the situation here is different. And the referenced blog post literally says:
In that case you could probably move the notice along with the moved code. 🤷 But yeah, I totally agree the entire issue is annoying.
Have you read this one? https://opensource.stackexchange.com/questions/6582/can-i-remove-some-copyright-holders-from-headers-and-replace-them-by-a-generic |
Yeah, looks like I missed that they did the change before any external contributions were accepted (at least via GitHub). Edited OP. |
Hi, I'm Max. I am the general manager for COPA and I helped form the Bitcoin Legal Defense Fund. I am not the Bitcoin project's lawyer, but I have been doing open source licensing and policy for a while, so hopefully I can volunteer some thoughts to help close the PR. I agree with Marco's proposal and I think it's fine. Files don't need years on them for any reason, so if it's easier to manage the project without them, remove them. There's an argument that they are good pieces of evidence for when files were authored. But as long as you don't squash the history, the removed years will still be preserved forever in the git history. Ultimately, the git history is a better reflection of authorship information than years. Just my two cents, again, I'm not your lawyer, but happy to chat through any questions. |
Concept ACK |
Thanks for your help! Here's a question: What would be your response to the doubts I've raised above (namely, that modifications to copyright notices are restricted in many jurisdictions)? |
Concept ACK. |
What about not removing the existing years in notices, but adding ", and later (see source control)"? On the off-chance that there is some legal concern somewhere about changing existing notices, this avoids the problem, while also avoiding the project maintenance burden of updating them (as well as being more explicit about where years, if at all relevant, can be found). |
Might be too verbose, so maybe just replace the end of the range with "-present". However, this still leaves the problem that the beginning of the range might be wrong, etc. I am thinking that either:
|
@MarcoFalke Yeah, perhaps, IANAL. I'd like to see @real-or-random's comments addressed a bit more thoroughly before proceeding with anything really. |
Hi @real-or-random it's a good point. It's prohibited to tamper with copyright management information (CMI) in many jurisdictions, including the U.S. However, that applies to recipients of a copyrighted work that don't otherwise have rights to it. You all do have the rights to modify contributions how you see fit, as the project maintainers, through the MIT license. Consider the problem from the beginning. Why doesn't your local copyright law prevent you from refactoring a file contributed by another? Surely it can't be permissible to completely modify or change beyond recognizability another's work of authorship, but the law is in place to prevent you from modifying a year? What if the year was entered as a string in the middle of a function? Does it become illegal to refactor the function? The resolution to this apparent problem is that the project maintainers receive contributions to the project under the MIT license. This acts as an implicit CLA under an inbound=outbound theory. Maintainers have the right to copy, modify, or distribute contributions, and modifications include removing years, or saying xxxx-present. Both of which are completely acceptable, and neither of which are compelled by law. And to reiterate, the original state of the files are preserved in the git history in any case. This should take care of concerns raised by "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software." because in effect, they are, through the git history. In summary, the Bitcoin project is licensed under an MIT license. And years do not have a specially protected status separate from the rest of contributions under any jurisdiction's copyright law. You may modify them as you wish in the best interests of the project, including removing them. |
Concept ACK |
meta note: Please don't merge this yet. I'll rebase on the current master branch next week to account for any new files added in the meantime. |
f002409
to
fa626c1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK fa626c1
Rebased to account for a removed file in the For reference, I also added a commit in the previous force push to replace the http URL with an https URL. |
fa1465e
to
db26015
Compare
concept ACK |
No idea. It has an "insert" command, which may still be useful if someone wants it? |
db26015
to
d232d8e
Compare
FWIW, here are some more sources: If understand correctly, the copyright comments should look like this: // SPDX-FileCopyrightText: © 2009 The Bitcoin Core developers
// SPDX-License-Identifier: MIT |
My comment was deleted for some reasons. This PR can still be me merged. |
While your source claims to be a lawyer, they share their personal preference/opinion (on the years issue at least), or did I simply miss the legal references? Also, it doesn't really answer the question what to do when moving code. Bitcoin Core may be unique in that most of the code was released in a very few files (main.cpp, etc) initially and then split out into smaller files. Some of those new files do not have the "right" year taken over. For example, picking a file that likely isn't copyrightable anyway, to avoid blame: bitcoin/src/kernel/cs_main.cpp Line 1 in aff7546
In theory, |
d232d8e
to
4d58fa6
Compare
Concept ACK |
This is needed for the next commit. In a follow-up commit, the "update" command can be removed.
While touching the headers, the URL redirect can be flattened. Both URLs point to the same content, but the http-one redirects to the https-one.
-BEGIN VERIFY SCRIPT- ./contrib/devtools/copyright_header.py update ./ -END VERIFY SCRIPT-
4d58fa6
to
fab01bf
Compare
Adjusted title, description and commits according to IRC discussion and comment #26817 (comment) |
🐙 This pull request conflicts with the target branch and needs rebase. |
Closing as up for grabs. Should be easy to rebase, if someone wants to, given that most is a scripted diff |
I've opened a similar issue proposing to remove all of these inconsistent and hard to maintain headers and replace them with simple SPDX-License-Identifier #29445 |
The copyright years have many issues:
git
already tracks the author date for every line of code in every commit.git blame
, orgit log ...
, or by other means.In theory they can be removed completely. While this should be legally fine, some contributors raised legal uncertainty. So instead, bump each year range one final time to
-present
and leave the initial year untouched.Moreover, a URL redirect is resolved in the second commit.
Finally, the
_COPYRIGHT_YEAR
build constant is kept untouched, and still expected to be bumped every year, see for example commit 06dd571. In theory it could be bumped to-present
as well, but this change would cause user-visible changes, so discussion should be done in a separate thread.Examples of removed years in other projects:
Examples of no years in other projects: