*** lkcl <lkcl!~lkcl@92.40.175.158.threembb.co.uk> has quit IRC | 13:30 | |
*** lkcl <lkcl!~lkcl@92.40.175.155.threembb.co.uk> has joined #nmigen | 13:40 | |
lkcl | mikolaj[m], this explains the situation http://lists.libre-soc.org/pipermail/libre-soc-dev/2021-December/004302.html | 14:09 |
---|---|---|
lkcl | we're operating lawfully under license from M-Labs as the Authorised Maintainer of nmigen 1.0 | 14:10 |
lkcl | Toshaan Bharvani, the Technical Chair of the OpenPOWER Foundation, is also an authorised co-maintainer. | 14:10 |
mikolaj[m] | lkcl: i need background information of that decision | 20:20 |
mikolaj[m] | And why does it contain commits from whitequark after she and M-Labs ceased cooperation? | 20:22 |
mikolaj[m] | What advantages does using an Nmigen repo based on whitequark's repo with an explicit blessing of M-Labs give? | 20:25 |
lkcl | mikolaj[m], there's a news article which should come out around 11th january which gives the background. | 22:15 |
lkcl | i've been negotiating with sebastien for the license, that was agreed around 3-4 days ago | 22:16 |
lkcl | do you mean: why does it contain commits after whitequark's employment was terminated, around 2 years ago back in january 2020? | 22:17 |
mikolaj[m] | yes, that's what I'm asking about | 22:18 |
lkcl | because nmigen is a Libre/Open project. anyone can contribute to a Libre/Open Project's source code repository, under Copyright Law | 22:18 |
lkcl | using the *lawful* (registered) nmigen over the *unlawful* (trademark-violating) version, it should be quite obvious: | 22:19 |
lkcl | if you contribute to the unlawful version, then you are also acting unlawfully. | 22:19 |
lkcl | if you *use* the unlawful version, particularly in a Corporation, you are placing yourself at risk. | 22:20 |
lkcl | the *lawful* version however: as long as you respect Trademark Law, you are not at risk | 22:21 |
lkcl | which is why it was so critically important for us, Libre-SOC, to negotiate (and be granted) a License with M-Labs, because it means that we are acting lawfully. | 22:21 |
lkcl | it also, as the maintainers, comes with some responsibilities to be Fair, Reasonable and Non-Discriminatory. | 22:22 |
lkcl | not many people are aware that FRAND (Fair, Reasonable and Non-Discriminatory) applies just as much to Trademark Law as it does to Patent Law. | 22:22 |
lkcl | if you search "FRAND Trademark" you get almost zero hits. search "FRAND Patents" and it's a completely different story | 22:23 |
lkcl | quite interesting. | 22:23 |
mikolaj[m] | you don't need to negotiate a license from anyone to use 2-clause BSD licensed code in order to be acting lawfully | 22:24 |
lkcl | you are thinking of Copyright Law. | 22:25 |
lkcl | there are four different branches of law: 1. Copyright, 2. Design Rights, 3. Trademarks, and 4. Patents. | 22:26 |
lkcl | they are all completely different and cover completely different things. | 22:26 |
lkcl | a *Copyright* License has absolutely nothing to do with a *Trademark* License | 22:27 |
mikolaj[m] | the top reasoning only explains not contributing to Amaranth upstream, and only in the period from trademark registration to renaming to Amaranth | 22:27 |
mikolaj[m] | you don't need to negotiate a license from anyone to use 2-clause BSD licensed code. You don't have to use the word "Nmigen" anywhere | 22:28 |
lkcl | ok, so because Trademark Law is not so well-known, there's not too many resources i can refer you to, online, which explain it | 22:29 |
lkcl | Trademarks cover "brands". in this case, the "brand" is nmigen. | 22:29 |
lkcl | source code is covered by Copyright Law, and the License says what you can do with it. | 22:30 |
lkcl | however - and this is spelled out in the GPL but not in the BSD License - the GPL License explicitly says (not in these exact words), "if you have other obligations, you cannot ignore them" | 22:31 |
lkcl | and in this particular case, those obligations under *Trademark* Law are "you cannot bring the Registered nmigen brand into disrepute" | 22:31 |
lkcl | also an aspect of Trademark Law: you may *USE* a Trademarked brand, but if you wish to *distribute* it you *must* seek the explicit permission of the Trademark Holder | 22:32 |
mikolaj[m] | you don't need to use the "Nmigen" brand | 22:32 |
lkcl | nixos, debian, fedora, etc. etc., all linux distros *must* seek permission, or have an explicit notice (similar to a Copyright License like the BSD License) that they can refer to which grants them those rights | 22:33 |
lkcl | if it has the word "nmigen" in it, you *are using* the nmigen brand | 22:33 |
lkcl | because it is the word "nmigen" which is Trademarked | 22:33 |
lkcl | and the word "nmigen" is contained within the text of the source code | 22:34 |
mikolaj[m] | as I said previously: you don't have to use the word "Nmigen" anywhere | 22:34 |
lkcl | and that has *nothing to do with the BSD license* | 22:34 |
lkcl | "from nmigen import Signal" | 22:34 |
lkcl | this constitutes, legally, "use of the nmigen brand" | 22:34 |
mikolaj[m] | sed s/nmigen/librehdl/ | 22:35 |
lkcl | yes, we could do that... except we would quite reasonably lose the license from M-Labs for doing so. | 22:35 |
mikolaj[m] | license for brand Libre-SoC is not using? | 22:36 |
lkcl | remember: we are the ones that are operating lawfully. there is no need for us to go creating a hard renaming-fork of nmigen, and it would seriously hurt the project to even attempt or suggest it | 22:36 |
lkcl | to properly do such a fork, we would have to: | 22:36 |
lkcl | 1) take a copy of the nmigen source code | 22:36 |
lkcl | 2) create an ENTIRELY NEW git repository | 22:37 |
lkcl | 3) perform a global-search-and-replace | 22:37 |
lkcl | 4) check in the newly-renamed source code making ABSOLUTELY SURE that under no circumstances is the word "nmigen" mentioned anywhere | 22:37 |
lkcl | 5) maintain that hard fork indefinitely | 22:37 |
lkcl | all of which would be extremely costly and not in the least bit in our interests | 22:38 |
lkcl | why? | 22:38 |
lkcl | because we are lawfully operating under license to maintain nmigen. | 22:38 |
lkcl | there *is* no need for us to perform a hard-fork of nmigen. | 22:38 |
lkcl | make sense? :) | 22:39 |
mikolaj[m] | m-labs/nmigen was not actively maintained. What you're saying in the email is that it's the Libre-SoC organization who is going to maintain it | 22:41 |
mikolaj[m] | I don't see a big difference between this and maintaining a fork that has an entirely different name | 22:42 |
lkcl | yes, it was not maintained, because whitequark's employment was terminated. | 22:43 |
lkcl | yes, that's correct: we are the authorised maintainers (and Toshaan, Technical Chair of the OpenPOWER Foundation) | 22:44 |
lkcl | that's an interesting question. | 22:44 |
lkcl | the difference is - again - comes down to brand and reputation | 22:44 |
lkcl | nmigen is *known* to be damn good. | 22:44 |
lkcl | Sebastien created it, and owns it. | 22:44 |
lkcl | an employee of his was paid to *work* on it... *not* to "take ownership of it then trash M-Labs on social media" | 22:45 |
lkcl | we now have 150,000 lines of nmigen HDL, using nmigen. | 22:46 |
lkcl | to have to change to a completely different name - for no good reason - this is a vast amount of time and effort. | 22:46 |
lkcl | if you are referring to *unlawful* forks of nmigen, this is where Trademark Law comes into play. | 22:47 |
lkcl | it is unlawful to do something like: | 22:47 |
lkcl | "nmigen is terminated, and being renamed to {insert new name here}" | 22:47 |
lkcl | doing so is a really serious violation of Trademark Law, because you have brought the nmigen brand into disrepute by saying "nmigen is terminated" | 22:48 |
lkcl | customers of M-Labs will go "arrrrgh, nmigen is terminated! how the hell am i going to get support for it now???" | 22:48 |
lkcl | yes? | 22:48 |
lkcl | you see how that's damaging to M-Labs? | 22:49 |
lkcl | this is why Trademark Law was created, so that unauthorised people cannot just blithely make arbitrary public (or private!) statements which hurt your "brand" | 22:49 |
lkcl | but, also, by claiming "nmigen is renamed to {insert new name here}" you *also* do not have the right to do that, under Trademark Law | 22:50 |
lkcl | that *also* hurts the brand. | 22:50 |
lkcl | and, consequently, again, it is covered by Trademark Law "continuity" provisions. | 22:51 |
lkcl | "{insert new name here}" becomes what is called an "alias" - an "also known as". | 22:51 |
lkcl | and the Trademark holder is the legal owner of the published aliases - *not you*! | 22:51 |
lkcl | if however you do a fork *entirely without mentioning nmigen in any way* - then you are perfectly fine | 22:52 |
lkcl | but now, because you are the sole exclusive user of that fork, *you* have a huge maintenance burden | 22:52 |
lkcl | it's quite subtle, but also very clear. it's just rather unfortunate that not many people in the FOSS world are properly informed about the distinctions. | 22:54 |
mikolaj[m] | it's not easy to determine who was in the right of the Nmigen dispute; both sides had stakes in the project | 23:14 |
lkcl | ah, no. it's actually very clear. | 23:14 |
lkcl | whitequark was an employee. | 23:15 |
mikolaj[m] | the decision to maintain Nmigen on behalf of M-Labs puts Libre-SoC on one side of a conflict | 23:15 |
lkcl | employees do not own their work, unless they have a specific agreement. | 23:15 |
lkcl | we have to maintain nmigen on behalf of *Libre-SOC* | 23:16 |
lkcl | we've 150,000 lines of HDL using it! | 23:16 |
lkcl | which is about 5x larger than nmigen itself! | 23:16 |
lkcl | the IEEE754 FP library i think is something mad like 75,000 lines including unit tests. | 23:17 |
lkcl | we have no problem with people acting lawfully - and are in fact *required* to act Fairly, Reasonably, and Non-Discriminatorially, to *all* contributors of nmigen | 23:18 |
mikolaj[m] | I understand M-Labs claim on Nmigen as a name | 23:27 |
mikolaj[m] | I don't claim I consider M-Labs to be morally right there, but I sure understand why they have a stake in this | 23:29 |
mikolaj[m] | however I don't understand why the M-Labs version of Nmigen now contains whitequark's code committed long after her cooperation with M-Labs ceased | 23:31 |
lkcl | mikolaj[m], you may have seen - may only have seen - the twitter storm. i too was taken in. i initially believed that whitequark was a victim. | 23:32 |
lkcl | because Copyright Law is not the same as Trademark Law. | 23:32 |
lkcl | they are completely | 23:32 |
lkcl | and utterly | 23:32 |
lkcl | separate | 23:32 |
lkcl | and distinct | 23:32 |
mikolaj[m] | it's not really related to copyright law | 23:32 |
lkcl | you can be perfectly respectful of Copyright Law yet in violation of Trademark Law, and vice-versa | 23:33 |
mikolaj[m] | this is a moral question | 23:33 |
lkcl | yes: but also a legal one. | 23:33 |
lkcl | we cannot be Unfair or Discriminatory towards *anyone*, here. even towards whitequark! | 23:34 |
lkcl | we cannot exclude whitequark's copyrighted material for being "immoral"! | 23:34 |
lkcl | (hypothetically speaking) | 23:34 |
mikolaj[m] | as long as M-Labs continues to develop its own fork on their own, I have empathy for their position | 23:35 |
lkcl | i realise that is quite odd, but it is just part of the responsibility of a Trademark Holder (and its licensed maintainers) | 23:35 |
lkcl | yes, but here's the problem: we - Libre-SOC - are *excluded* from contributing to the unlawful fork! | 23:35 |
lkcl | we *had* to maintain our own fork of nmigen! | 23:36 |
mikolaj[m] | however integrating work done by Whitequark after their falling out into the version they claim ownership over by trademark is morally dubious | 23:37 |
lkcl | and given that we've got EUR 750,000 of EU Grants critically depending on it, we *have* to maintain it | 23:37 |
lkcl | ... | 23:37 |
lkcl | i see your point, however it's just part and parcel of the responsibility of the Trademark Holder (and the licensed maintainers) | 23:38 |
mikolaj[m] | M-Labs stake predominantly comes from the fact that they started the project, named it, funded it, and that the project is based on their earlier work | 23:38 |
lkcl | we really, really, *really* cannot be "Discriminatory" | 23:38 |
mikolaj[m] | the code itself is almost completely Whitequark's | 23:39 |
lkcl | yes. which is quite likely (highly likely) why the Trademark was granted. | 23:39 |
mikolaj[m] | in the sense that Whitequark made it | 23:39 |
lkcl | no | 23:39 |
lkcl | up to the point where whitequark was an *employee* of M-Labs, it is *M-Labs* that owns the copyright. | 23:39 |
lkcl | entirely. | 23:39 |
lkcl | this is actually recognised in the nmigen source code. | 23:40 |
lkcl | thank goodness whitequark had the good sense to not attempt to remove M-Labs' Copyright notices. | 23:40 |
mikolaj[m] | I have no idea what do you mean by "Discriminatory" here | 23:40 |
lkcl | that would have brought a Copyright violation down on her, as well | 23:40 |
lkcl | Discriminatory: https://dictionary.cambridge.org/dictionary/english/discrimination | 23:41 |
mikolaj[m] | I have doubts if that was actually the reason why the trademark was granted; the trademark law generally allows to register brands you aren't currently using | 23:41 |
lkcl | treating a person or particular group of people differently, especially in a worse way from the way in which you treat other people, because of their skin colour, sex, sexuality, etc.: | 23:41 |
lkcl | in this particular case: just because someone does something that you think is "morally dubious", if you then "exclude" them from participation in some activity, that is "discrimation" | 23:42 |
lkcl | you have "discriminated" against them - excluded them - based on a "judgement" that their behaviour is "morally dubious" | 23:43 |
lkcl | and we could get into serious trouble for doing that. | 23:43 |
mikolaj[m] | are you saying that M-Labs owns the copyright for the code Whitequark wrote after her contract with M-Labs was terminated? | 23:43 |
lkcl | no. i said that M-Labs owns the copyright for the code whitequark wrote during her *employment* with M-Labs. | 23:43 |
lkcl | (employment is not the same as a contract) | 23:44 |
lkcl | it's in the Copyright notices. | 23:44 |
mikolaj[m] | I don't know whether whitequark was an employee or a contractor; in that matter I recall someone saying she was the latter | 23:45 |
lkcl | https://gitlab.com/nmigen/nmigen/-/blob/master/LICENSE.txt | 23:45 |
lkcl | Sebastien informs me that she was an employee. | 23:45 |
mikolaj[m] | alright, nevermind on that then | 23:45 |
lkcl | let me check | 23:45 |
lkcl | yes, again, you will see a *lot* of misinformation online about this | 23:46 |
lkcl | yep, employee | 23:46 |
lkcl | and that misinformation is part of the Trademark violation, because it brings the nmigen brand, and M-Labs, into disrepute. | 23:47 |
lkcl | none of this should be happening, at all. | 23:47 |
lkcl | i mean, it's quite, quite ridiculous, to be spending so much time on this instead of advancing FOSS Hardware. | 23:48 |
mikolaj[m] | ok, pardon my earlier question about copyright ownership, I misunderstood what you said in one sentence | 23:48 |
lkcl | no problem | 23:48 |
lkcl | anyway, 23:49 here, have to rest. | 23:49 |
mikolaj[m] | as for "Discrimination" | 23:49 |
mikolaj[m] | you can freely choose with whom you want to work or not | 23:49 |
mikolaj[m] | and so you can avoid working with someone if you have reservations to their conduct | 23:50 |
mikolaj[m] | however that does not really matter here | 23:53 |
mikolaj[m] | my moral issue is about integrating to Nmigen code from whitequark's repository that was created after the falling out | 23:54 |
Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!