10000 LICENSE: Add my copyright, as the author of ~30% of commits to the project. by pfalcon · Pull Request #4363 · micropython/micropython · GitHub
[go: up one dir, main page]

Skip to content

LICENSE: Add my copyright, as the author of ~30% of commits to the project. #4363

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

Closed
wants to merge 1 commit into from

Conversation

pfalcon
Copy link
Contributor
@pfalcon pfalcon commented Dec 17, 2018

No description provided.

@pfalcon
Copy link
Contributor Author
pfalcon commented Dec 17, 2018

So, number of commits alone can't be fully adequate measure of "substantial contribution". Actually, no single metric could be. Of all single metrics, number of commits is probably giving the most insight.

I actually was keen to make other measurements, e.g. percentage of active lines authored by me, and number of changes lines (then apparently to py/ and extmod/, because number of changed lines in various HALs and BSPs can easily overshadow anything), but I don't see a tool which readily does that. As usual, there's a gazillion of tools which do "something", and it's not exactly clear what that something is. All in all, looking that, I figure I spend time which could better be spent on something else, and just submit this patch for starters.

@pfalcon
Copy link
Contributor Author
pfalcon commented Dec 17, 2018

Also, actually adjusting the figure from 40% to 30%. The 40% was based on one-year ago stats, plus also was based not on total no. of commits, but on the number of commits from 2 largest contributors.

My current stats show:

$ git log | grep "Author:" | grep "Sokolovsky" | wc
   2876   11504  161016
$ git log --oneline | wc
   9823   85499  663136

@pfalcon pfalcon changed the title LICENSE: Add my copyright, as the author of ~40% of commits to the project. LICENSE: Add my copyright, as the author of ~30% of commits to the project. Dec 17, 2018
@nickovs
Copy link
Contributor
nickovs commented Jan 18, 2019

It seems entirely reasonable for you to have credit for your work. That said, the license file ought to also be updated to reflect Damien's ongoing work, since the proposed new version of the file would likely be read as meaning that you had taken over the project entirely in 2014.

Strictly speaking, in the absence of explicit copyright assignment by every contributor, the copyright of any given bit of code lies with the author of the code not at the project level, the file level or even the line level but at the token level. This is why tools like cregit exist (see this presentation for details if you are not familiar with cregit). As a result the list of copyright owners should really include everyone who's ever had a PR accepted and who's code has not subsequently been removed or completely rewritten. A common way to deal with this is for there to be a Copyright file distinct from and referenced by the License file, with the copyright file listing all of the contributing authors, usually with the key maintainers and major contributors sorted to the top.

IMHO, I think that updating the Micropython copyright information to reflect that this is now a larger collaborative project rather than the work of one person would be a fine thing. Clearly the major contributions from @pfalcon should be recognised as part of that but I think that there is more to do than this one line change.

Sorry, something went wrong.

@pfalcon
Copy link
Contributor Author
pfalcon commented Jan 18, 2019

Well, I can reasonably care about just my stuff, that's why there's just one line change. There's a maintainer to care about all the other lines.

Otherwise, it's established practice to credit significant contributors explicitly. The exact contribution list and credits can be indeed found in "git log".

@dpgeorge
Copy link
Member

Thanks for the discussion. The LICENSE file does need updating.

As a result the list of copyright owners should really include everyone who's ever had a PR accepted and who's code has not subsequently been removed or completely rewritten. A common way to deal with this is for there to be a Copyright file distinct from and referenced by the License file, with the copyright file listing all of the contributing authors, usually with the key maintainers and major contributors sorted to the top.

This is more like the direction I'd want to take here.

With a top-level LICENSE file it's not really clear what it applies to with a large project and lots of contributors, and also lots of submodules and libraries.

Instead, I'd rather individual copyright be listed at the file level, or a full list explicitly given, and the top-level LICENSE file be used to describe (and point to) all the kinds of licenses that appear in the whole project. The latter is definitely needed because at the moment it's hard to know exactly what licensing conditions there are when using a given port (eg if berkeley-db is used then UC Berkeley must be mentioned in advertising material).

My proposal would be:

  1. Update the top-level LICENSE file to mention all licenses used in the repository (with MicroPython's MIT first).
  2. For the copyright in the LICENSE file pertaining to MicroPython itself, either 1) write "Copyright 2013-2018 The MicroPython Developers" and leave it at that (individual names can be found elsewhere), or 2) write "Copyright 2013-2018 The MicroPython Developers, as listed in the accompanying AUTHORS file", and then maintain such an AUTHORS file.

@stinos
Copy link
Contributor
stinos commented Jan 24, 2019

+1 for this proposal. Also because having to read code diffs where copyrights get added/changed is uniteresting. Git blame does that already, and way better. Which also makes me wonder how necessary it is to keep the date in there, is that something legally required?

@pfalcon
Copy link
Contributor Author
pfalcon commented Jan 24, 2019

For the copyright in the LICENSE file pertaining to MicroPython itself, either 1) write "Copyright 2013-2018 The MicroPython Developers" and leave it at that (individual names can be found elsewhere)

I'd say this is OK, but then this single-line patch would indeed turn into pretty boring long patch to add/update my copyrights on many files that I missed (as I concentrated on other things when I had commit access). Actually, this PR was exactly an attempt to avoid preparing/maintaining such a boring patch.

@pfalcon
Copy link
Contributor Author
pfalcon commented Jan 24, 2019

and the top-level LICENSE file be used to describe (and point to) all the kinds of licenses that appear in the whole project. The latter is definitely needed because at the moment it's hard to know exactly what licensing conditions there are when using a given port (eg if berkeley-db is used then UC Berkeley must be mentioned in advertising material).

Good catch on libs like berkeley-db. And the reason why I called to avoid license zoo (for content written purposedly for MicroPython, i.e. any tool written should be just MIT licensed), and 100% avoid adding any GPL content, even if it's just a tool. And consequently, I'd say that top-level LICENSE should indeed list licensing for any code which may go inside a MicroPython binary, but not list any possible different licenses for tools/ and similar dirs (e.g. licenses for similar support scripts in imported/submodule'd projects).

@dpgeorge
Copy link
Member

Which also makes me wonder how necessary it is to keep the date in there, is that something legally required?

Copyright expires after a certain number of years (eg 70, or 120) so it's important to list the year of creation of the works.

but then this single-line patch would indeed turn into pretty boring long patch to add/update my copyrights on many files that I missed

In such a case there would need to be a rule as to when it's fair to add a copyright line at the top of the file, eg when there are more than 25% of the lines authored by one individual.

And consequently, I'd say that top-level LICENSE should indeed list licensing for any code which may go inside a MicroPython binary, but not list any possible different licenses for tools/ and similar dirs (e.g. licenses for similar support scripts in imported/submodule'd projects).

Yes that makes sense. But then it would be good to add a one-liner to the LICENSE (at the end) along the lines of "Additional licenses may apply to support tools and scripts."

@pfalcon
Copy link
Contributor Author
pfalcon commented Jan 24, 2019

In such a case there would need to be a rule as to when it's fair to add a copyright line at the top of the file, eg when there are more than 25% of the lines authored by one individual.

Well, to remind, lack of formal rules (your no-desire to set them up) was the reason of the current project org situation. So yep, it's a bit strange to hear about formal rules now. I don't think "25% of the lines authored" would cut, the usual rule is "substantial contribution", which is either effectively writing it initially (also includes turning a many-lines placeholder into something really working), or adding something which takes a noticeable (also to others) algorithmic and/or debugging work - all surveyed and acked (or not acked) by project maintainer(s).

@nickovs
Copy link
Contributor
nickovs commented Jan 24, 2019

I'm +1 on separating the license, copyright notice and authors at the top level and then including authors at a per-file level. I would caution against having a firm, written rule for what constitutes a substantial contribution for many of the reasons that @pfalcon just gave.

Regarding specifying licenses, it would make sense to at least mention the licenses for included components in the top level license file, as well as including the full license for the MicroPython code itself. Making mention of these at the top level makes it easier for users to find them and having the policy that you will do so helps ensure that people are aware when additional license requirements might creep in (which provides a little back-pressure against "license zoo"). I would also love to see SPDX license specifier tags in such files to make it easier for users to use tools to examine licenses in projects they use. Once this discussion is settled I am happy to submit a PR to add SPDX tags in the appropriate places.

@dlech
Copy link
Contributor
dlech commented Jan 24, 2019

My proposal would be:

1. Update the top-level LICENSE file to mention all licenses used in the repository (with MicroPython's MIT first).

I would like to suggest the debian/copyright file format for this (saves time vs. coming up with our own policy/specification and makes life easier for me debian package maintainers).

I am happy to submit a PR to add SPDX tags in the appropriate places.

👍 for SPDX, but I do know that in the Linux kernel, only the original author is allowed to make the patch that changes the license header (for legal reasons).

@pfalcon
Copy link
Contributor Author
pfalcon commented Jan 31, 2019

For the copyright in the LICENSE file pertaining to MicroPython itself, either 1) write "Copyright 2013-2018 The MicroPython Developers" and leave it at that (individual names can be found elsewhere)

@dpgeorge, So, do you intend to make this change?

@pfalcon
Copy link
Contributor Author
pfalcon commented Mar 29, 2019

Ok, so this PR is 3 months old by now. Nothing in the discussion was done soon after discussion, or before the 1.10 release, or at all so far. @dpgeorge, please merge this PR, then feel free to make rest of changes, if any, at your convenience. Thanks.

@dpgeorge
Copy link
Member

Ok, since I didn't find time to make comprehensive changes to the LICENSE file (even though there were excellent efforts by @dlech in #4432), I'm happy to just merge the change here as a "temporary" solution as long as @pfalcon agrees that these copyright lines can be eventually removed and replaced with something like "Copyright 2013-2019 The MicroPython developers". Is that acceptable?

@pfalcon
Copy link
Contributor Author
pfalcon commented May 17, 2019

I'm happy to just merge the change here as a "temporary" solution as long as @pfalcon agrees that these copyright lines can be eventually removed and replaced with something like "Copyright 2013-2019 The MicroPython developers". Is that acceptable?

I'd appreciate merging this, yeah. Regarding 2nd part, I have to admit that I've come to a feeling, that no, I don't like and don't agree to that. The reason is that, using the rhetoric of author of some texts which got popular at recent times, it would be an act of dehumanizing the Open Source software development.

That said, I'd suggest to treat those as separate issues with separate reasoning (and discussion). The reasoning behind the change here was presented above - I'm the author of ~30% commits to the project, and designer of some subsystems and facilities in MicroPython which are now taken for granted as natural and integral parts of it, so I'd like to be clearly presented as such.

@dpgeorge
Copy link
Member

I have to admit that I've come to a feeling, that no, I don't like and don't agree to that.

In that case we need to have a longer discussion about this. I don't want merging this PR to be a complete blocker to actions that might be taken later on (like I discuss above).

so I'd like to be clearly presented as such.

I was under the impression that #4787 was intended to take care of this, as you stated in #4363 (comment)

@pfalcon
Copy link
Contributor Author
pfalcon commented May 19, 2019

@dpgeorge

In that case we need to have a longer discussion about this. I don't want merging this PR to be a complete blocker to actions that might be taken later on (like I discuss above).

But what seems to be blocker is the lack of response and activity on this pretty important and yet simple matter. I said it's ok from my side on Jan 24, I pinged you on Jan 31, but there were no actions or even responses, which raises questions if there're reservations and double-think on your side.

so I'd like to be clearly presented as such.

I was under the impression that #4787 was intended to take care of this, as you stated in #4363 (comment)

Well, those patches were just routine updates of per-file copyrights which I didn't do when I had commit access because I concentrated on more technical things and kept book-keeping things like that in backlog.

Anyway, don't let me be the weakest link here.

Ok, since I didn't find time to make comprehensive changes to the LICENSE file (even though there were excellent efforts by dlech in #4432), I'm happy to just merge the change here as a "temporary" solution as long as @pfalcon agrees that these copyright lines can be eventually removed and replaced with something like "Copyright 2013-2019 The MicroPython developers". Is that acceptable?

Yes, please merge this patch, and I assume the reason for not having made the change of "Copyright 2013-2019 The MicroPython developers" in the LICENSE file since January is the desire to prepare it somehow "better" than just to make that change (e.g. to accompany it with additional stats). So, I assume such a future change will be for better, and agree to it. Thanks.

@dpgeorge
Copy link
Member

So, I assume such a future change will be for better, and agree to it.

It's a bit hard to agree to "any future change for the better", since "better" is subjective. So probably the future direction should be spelled out now and agreed to now.

But apart from that, one issue with adding your copyright to the top-level LICENSE file is that it would (I assume) then apply to all files in the repo that don't have an explicit license. Eg ports/stm32/boards/pllvalues.py. That's obviously not a true reflection of the copyright of such files.

@pfalcon
Copy link
Contributor Author
pfalcon commented May 21, 2019

But apart from that, one issue with adding your copyright to the top-level LICENSE file is that it would (I assume) then apply to all files in the repo that don't have an explicit license.

Well, it's probably possible to find a file in the repo without copyright which wasn't created, and not/barely touched by you. So, it's a bit looking for breadcrumb issue. I look at the top-level LICENSE as a license/copyright overview file, listing major contributors (as copyright holders).

@jimmo
Copy link
Member
jimmo commented May 21, 2019

Please see #4800 for a simple and concrete suggestion for the LICENSE file. The intent here is to clarify the overall project copyright and licensing, and making it clear that any author can claim copyright over their own individual work at a per-file level.

@pfalcon
Copy link
Contributor Author
pfalcon commented May 23, 2019

@dpgeorge: Ping.

@dpgeorge
Copy link
Member

Well, it's probably possible to find a file in the repo without copyright which wasn't created, and not/barely touched by you.

But if it was added without a copyright/license then the top-level LICENSE file should implicitly apply to it (if said file was added after the top-level LICENSE was added). And changing LICENSE now is kind of like rewriting the copyright history of all those files.

I look at the top-level LICENSE as a license/copyright overview file, listing major contributors (as copyright holders).

There's a difference between an overview/summary of all the licenses/copyright holders in the repo (see eg #4800), and having a license that is generally applicable to the code in the repository. The latter is currently what LICENSE is.

All in all this is a pretty complex issue, and since is it's hard to undo some of these decisions once taken they should be well considered.

In the end there needs to be a way to fairly attribute contributions (eg done by #4787), make sure that everything in the repo has a well defined license/copyright (currently done by the LICENSE file as a default), and provide a way for users to understand and comply with the various licensing (eg #4432, #4800).

@pfalcon
Copy link
Contributor Author
pfalcon commented May 24, 2019

But if it was added without a copyright/license then the top-level LICENSE file should implicitly apply to it (if said file was added after the top-level LICENSE was added). And changing LICENSE now is kind of like rewriting the copyright history of all those files.

But it wasn't "good" in the first place. And that's the reason why "enterprisey" project are paramount about each and every file to have a copyright and licensing blurb. And it seems that at certain popularity (== accumulated controversy), any project needs to pay attention to that. So, the right way to resolve that appears to be: 1) be absolutely strict about licensing/copyright; 2) to track dow 6D40 n any unlicensed/uncopyrighted files and add relevant copyrights (with proper communication to assumed copyright holders.

All that's still orthogonal to the issue of this patch, and shouldn't influence/block it too much.

and having a license that is generally applicable to the code in the repository. The latter is currently what LICENSE is.

Again, my pragmatic treatment is that top-level LICENSE applies to the whole project. And I seek proper recognition of my efforts on the whole-project level, as unalienable part of the license. The fact that formally top-level LICENSE applies to each file not explicitly stated otherwise, is a low-level, formal, procedural issue, which of course should be resolved too, and proposal for that is outlined above.

In the end there needs to be a way to fairly attribute contributions (eg done by #4787), make sure that everything in the repo has a well defined license/copyright (currently done by the LICENSE file as a default), and provide a way for users to understand and comply with the various licensing (eg #4432, #4800).

Right. This patch is however orthogonal to those issues, and as I stated, it's not my intention to interfere with resolving or evolving these matters further, only to capture the status quo.

@pfalcon
Copy link
Contributor Author
pfalcon commented May 24, 2019

make sure that everything in the repo has a well defined license/copyright (currently done by the LICENSE file as a default), and provide a way for users to understand and comply with the various licensing

It's hard to refrain from a comment that one of the source of disagreement was exactly my efforts to "raise the bar" of contributions to the codebase, in particular, define principles and rules, and efforts to apply them more thoroughly (instead of "anything will do, we'll clean up after users" approach exercised during a few initial years of the project). There was ~ zero response and support of those efforts, leaving me one on one against the tide, with predictable consequences. In the end, turns out those issues are still ("now"?) relevant and need to be resolved. D'oh.

@dpgeorge
Copy link
Member

the right way to resolve that appears to be: 1) be absolutely strict about licensing/copyright;

As part of that the purpose of the LICENSE file should be clarified, which is what I attempt in #4812

@dpgeorge
Copy link
Member

Yes, please merge this patch, and I assume the reason for not having made the change of "Copyright 2013-2019 The MicroPython developers" in the LICENSE file since January is the desire to prepare it somehow "better" than just to make that change (e.g. to accompany it with additional stats). So, I assume such a future change will be for better, and agree to it. Thanks.

This is what I have tried to do in #4812, to "prepare it somehow better" and "accompany it with additional stats". IMO such a change is for the better, and so according to what you say here you would agree to it. But from your comments on #4812 it seems you do not agree to it.

to track down any unlicensed/uncopyrighted files and add relevant copyrights (with proper communication to assumed copyright holders.

So my next proposal would be along these lines. To go through the repository and make sure all files are licensed properly, remove/replace things that have no or unfavourable licenses, and clean it up. Then revisit this question of top-level licensing/copyright.

@pfalcon
Copy link
Contributor Author
pfalcon commented May 26, 2019

IMO such a change is for the better, and so according to what you say here you would agree to it. But from your comments on #4812 it seems you do not agree to it.

Nope, I just personally feel:

  1. That LICENSE: further updates to make license and copyright more explicit #4812 is being done as a replacement of doing specific steps about this patch.
  2. Now that I'm pulled into discussion of LICENSE: Reference third-party licenses #4800/LICENSE: further updates to make license and copyright more explicit #4812, I had to say that I indeed don't see it as improvement. Improvement attempt - perhaps, but IMHO, it confuses things more than improves them.

Both are rather subjective of course. And, I'm not "against it", just express my reservations.

So my next proposal would be along these lines. To go through the repository and make sure all files are licensed properly, remove/replace things that have no or unfavourable licenses, and clean it up. Then revisit this question of top-level licensing/copyright.

Sounds good.

@pfalcon
Copy link
Contributor Author
pfalcon commented May 30, 2019

Ok, since I didn't find time to make comprehensive changes to the LICENSE file (even though there were excellent efforts by @dlech in #4432), I'm happy to just merge the change here as a "temporary" solution as long as @pfalcon agrees that these copyright lines can be eventually removed and replaced with something like "Copyright 2013-2019 The MicroPython developers". Is that acceptable?

Ok, besides me agreeing to this, this still wasn't done in time for the 1.11, even though it was requested in its planning ticket, #4784 (comment) .

@dpgeorge, all your behavior here looks like ignoring the issue, then finding excuses for not making the requested change, to which even you yourself agreed.

…oject.

Change-Id: Id40cab51cc51048771ae0799e2a12ccae1d22eb5
@pfalcon pfalcon force-pushed the pfalcon-copyright branch from d87521a to a8c1665 Compare May 30, 2019 07:16
@dpgeorge
Copy link
Member

Closed in favour of commit 2fa975c

@dpgeorge dpgeorge closed this Jun 22, 2021
tannewt added a commit to tannewt/circuitpython that referenced this pull request Sep 13, 2021
This is in preparation for ESP32-S3 support and potentially others.

Related to micropython#4363
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants
0