Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Fix Copyrights #698
After the recent reintroduction of the missing 9front's copyright statements to the libsec's code at 81d25a4, it has been jokingly pointed to me that "I'm not worthy", since none of my 6 months of commits have left a sign in Harvey. :-)
After a grep confirming the fact, I've noticed that my port of zlib has been removed and the console has been put back in kernel (removing the user-space filesystem that I wrote in 2015). Also I know that my contributions to the continuous integration and the Coverity integration cannot be evident into the sources.
However looking around I've noticed that at 066eb48 my name and copyright has been removed from two new files that, despite simple in itself, were part of two non trivial contributions at cf801d0 and 5616a46 that moved read(2) and write(2) to user-space while cleaning up the kernel. I realize now that I should have probably amended the copyright of all the files touched by the change, to avoid filling this issue now.
Since I can't find the AUTHORS file referenced by @rminnich in the commit message at 066eb48 it's clear that, actually, an AUTHORS file cannot replace proper copyright statements in the code (as wisely predicted by Ron himself in the mailing list).
I do not remember if I have contributed other non trivial changes to Harvey (that have not been reverted or removed). For example I do not know if the changes at 401284b or at 4392ad3 were trivial or I had to add my copyright to the files modified. I was pretty naive back then, but I guess that if the change is not trivial, the copyright holds even if not noticed in the license's header, so it would probably be better to make it explicit.
Nevertheless, since my name has gone in libc, it's possible that it happened to other contributors too and while I'm not a lawyer, I guess this should be fixed. Unfortunately I have no time to check them all.
As for me I prefer the copyright to be put in the files I contributed to, as suggested by the Ron back in 2015.
Contributors' names and copyrights are preserved in the code base.
My name and copyright have been removed from the code, without removing the code or reverting the changes. This might have happened to others.
Steps to reproduce
Thanks for the info, an explanation is in PR #699 . We're sorry you could feel bad about this, the reasons weren't from bad feelings, just for preserving the work of all of us, even you, for the future in an homogeneus form and avoiding conflicts, that's all. We copyrighted again write.c and read.c.
Also, your work is in history log of the repo, for all of those who want to learn from it.
Thanks Álvaro for your prompt response.
I'm a bit surprised by the new policy from Software Freedom Conservancy as it seems in direct contrast with both common practice and with the GPL howto by the Free Software Foundation.
But, don't worry, I know it was just an unfortunate mistake! ;-)
BTW, since it's the only place where authorship is preserved in Harvey I analyzed the git log with the command
and found that other copyrights of mine were removed.
My copyright has gone in sys/include/libc.h (copyright amended at 45d24cf and removed at 4c39180), in sys/src/9/port/portclock.c and sys/src/9/port/sysproc.c (copyright amended at 45d24cf and removed at f71bee0) and in sys/src/libc/port/lock.c (copyright amended after lockt(2) introduction at 8896d97 and removed at 066eb48).
Please put back these too.
Also, before closing the issue, you might use the command I provided to check if other contributors' names have gone.
Is there any reamaning code from you in libc.h, portclock.c and sysproc.c? The copyrighted code was removed with the copyright itself. No offense. If any of it is still there we'll be glad to remove it for avoiding issues.
No offense, Álvaro, really. I just open this issue to help fixing a little mistake! ;-)
As far as I can remember I agreed to contribute that way (I even explicitly asked what to do), and my contributions were accepted that way by the project. As far as I know, what was later agreed for the project cannot be applied retroactively.
As for libc,h, all cleanups I did are still there (see for example
I'm not against removing my contributions (you can remember that I'm always for simplifying things!), but if you decide to go toward this path I have to ask you to
This way my copyrights will be effectively gone, and we will be sure that, 6 month from now, my changes wont be applied again with an "Harvey OS" copyright notice.
Álvaro, I'm sad, really sad. You don't need to worry about me more than any other contributor.
But given your attitude here I see only two possible solution:
Initially I thought it was a simple mistake easy to fix with the first approach.
But I cannot trust you anymore.
And since, just like you, I don't want to back over this in future, I think reverting my commits is the only safe solution. That way, I will have no copyrights to claim on the Harvey's code and the git log will inform new contributors about this sad mess.
So please, just do as you said.
David, the CREDITS file in Linux works because of Linus. It's a matter of trust.
The few copyright notices that I added in 2015, were not reliable either: they have been removed once, they might be removed again.
You can see that we need a more reliable solution to this issue.
The best way is to simply
A more complex but reliable solution could be to add back the copyright notice that I added in 2015 and to make my copyrights explicit in each file that my non trivial commits modified.
Still I prefer the
@dancrossnyc unfortunately while none of my commit is present in Harvey after your
For example the changes I contributed at 401284b and 4392ad3 are still there in both libc.h and in the various other files modified (eg in libc's runestrlen.c, strncat and so on... in kernel's portdat.h, alarm.c and so on...).
This is strange, actually, because those commits are still present on some files in master but not in others.
For example I'm listed among the authors of runestrlen but not in strncat despite the fact they were both modified by the same commit.
I suppose that you accidentally squashed some of my changes into others during the
Yes, in some cases types were widened or code was added or changed for const-correctness. Those are changes that can only be written one way; there is nothing original or significant in their authorship and they cannot reasonably be credited to a single author. Would you seriously suggest that we cannot add a 'const' qualifier to a pointer argument of a function because you did it at some point? That would be rather absurd, don't you think?
Your commits were removed, as you requested. If the effect of those commits were replicated elsewhere, then given that that is the only way to replicate them, there's nothing anyone can do about that.
You are no longer listed as a contributor to Harvey on the main page; whether the effect of trivial changes persists is independent of whether you ever authored similar code.
As for the two files you reference, it is unclear to me why you are listed as a contributor on the one; perhaps this is a github UI issue. If you look at both the blame listing and file history, you are not mentioned anywhere. As I mentioned, the other changes you refer to are trivial changes that can not reasonably be written any other way and you cannot command others to use narrower types or not add const correctness.
Are you saying this wasn't accidental?
Guys, I think you should really ask a lawyer what "trivial change" means.
My bet is that changing the signature of over 120 functions (in over 135 files) and increasing (and fixing) processor's clock and scheduling precision in the kernel do not constitute "trivial changes" without "significant authorship".
If you feel you can't remove those changes because they are important for Harvey, you can still add my copyright statement to each of modified files.
But, if you really don't want my contributions... you don't want my contributions.
Tertium non datur.
Indeed, if you just produce changes that can be obtained by trivial edits of my patches, you are just hiding my copyright. Again.
Please, try to understand why it is important to be serious about contributors' copyrights.
It's not just a matter of Free Software's ethics: when you use somebody else code without proper copyright statements, you pose a threat to their own right to use their code elsewhere.
I'm sure you are all good people, and you will never pretend that you wrote my patches.
But, as this thread proves, things changes.
So please, reopen this issue and fix it for real.
Are you suggesting that we cannot add const qualifiers to pointer arguments because you may, at some point in the past, have done something similar? Can you think of another way to effect that change without adding a const qualifier?
The "alternative solution" we pursued was to go through libc.h and add const qualifiers to functions that can take them. You cannot claim ownership of that because it was not done by you, even if at some point in the past you had done something similar. You may assert otherwise, but there it is.
Your interpretation was wrong: we did not keep anything you did, intentionally or otherwise.
I will not reopen the issue. If you feel you have a case, by all means contact a lawyer.
Dan, do you really need hints from me?
Also you said nothing about the scheduler's fix.
Can you please list all of my contributions that have been accidentally replicated verbatim after removing my copyrights? I didn't check each commit carefully because I thought you were in good faith.
You know I can't sue the Software Freedom @conservancy.
I just hoped in your honesty.
We removed your commits at your request.
Nothing was squashed. We didn't carry any of your code forward. You asked, "can you please list all of my contributions that have been accidentally replicated verbatim after removing my copyrights?" Sure: that's easy. None. Your contributions were minimal.
We didn't have to do any of this, but we did -- at your request -- to be nice. It took a team of volunteers five weeks of work. I didn't even do any of it, but I felt that we should give you the courtesy of letting you know that it had happened.
We then added const in some places (but not everywhere that had been in your patch, if you care to compare what's in Harvey now to what you keep pointing to: e.g., the argument to _assert(), which you made const, but we did not) and widened some types (but didn't keep any of your other clock changes; your tk2ms() macro was after all just a copy of the TK2MS macro on the very next line of the same file, and those functions you authored in portclock.c were not carried forward, and functions that you removed, such as 'ms2tk' were reintroduced). You certainly cannot assert copyright over the idea of qualifying a pointer argument 'const' (importantly, ideas cannot be copyright), particularly if the ISO C standard already does that for many functions, and you don't get a monopoly on representing time as a 64-bit quantity (especially since the year 2038 problem has been known since Unix adopted a 32-bit time_t).
And as I recall, I was the one who found the problem in the scheduler on that conference call two years ago.
The supreme irony of course is that the commits you keep pointing to didn't include copyright statements. I personally find it odd that you feel you can assert copyright over e.g. libc.h, which has probably been modified by on the order of 100 or so contributors over the years (and those contributors made far more substantial changes than you ever did to Harvey's version -- indeed, none of your contributions remain in the Harvey version. As I've said repeatedly, they were written out). Given that most of those changes merely bring Harvey in line with the ISO C standard, your assertions are just downright bizarre.
We hoped for your honesty too, Giacomo. It now appears that you are trying to bully a project into giving you credit for work you did not do.