haskell-nix / hnix

A Haskell re-implementation of the Nix expression language
https://hackage.haskell.org/package/hnix
BSD 3-Clause "New" or "Revised" License
752 stars 115 forks source link

Voting the license move BSD -> LGPL #919

Closed Anton-Latukha closed 3 years ago

Anton-Latukha commented 3 years ago

Proposing to switch to LGPL-v3.0+, to be legally compatible & comply with Nix (LGPL-v2.1+) requirements.

BSD license shortcomings in the current context

LGPL license strongpoints in HNix case

Legal situation


Proposing BSD -> LGPL because of the number of beneficial factors that LGPL brings to Haskell-Nix while also legally protects the available freedoms of the project.

Thank you all, palls, for collaboration in the project and for taking a look at this.

To change the license, we need to get >50% of the agreement in contributors.

Anton-Latukha commented 3 years ago

Asking recently active: @layus, @expipiplus1, @sorki, @sjakobi.

Asking initial: @jwiegley, @ryantrinkle, @kmicklas, @mightybyte, @bennofs, @domenkozar.

expipiplus1 commented 3 years ago

To change the license, we need to get >50% of the agreement in contributors.

Are you sure you don't need to get the consent of everyone whose code is to be relicensed?

FWIW I don't mind my contributions being relicensed to any OS license.

domenkozar commented 3 years ago

I support this.

bennofs commented 3 years ago

I'm okay with this.

sorki commented 3 years ago

Sounds good to me and thanks for the nice write-up.

jwiegley commented 3 years ago

I do not like the LGPL license, and it would make hnix unusable to me in any of my professional contexts (should I ever choose to do so), since my employers forbid the use of LGPL licensed material.

I believe in freedom for both users AND contributors, and I chose BSD because it supports the widest range of contribution and use.

Ericson2314 commented 3 years ago

While I like the spirit of the LGPL I am worried that abiding by it with a non-LGPL downstream means disabling all inlining / not including any unfoldings in addition to dynamic linking. That can be a little tricky and cause annoying performance problems that cannot be solved without breaking modularity.

Anton-Latukha commented 3 years ago
Answering, (sort-of), why legal "rule of thumb" is >50% major vote, why not 100%

https://github.com/haskell-nix/hnix/issues/919#issuecomment-830571216 > > To change the license, we need to get >50% of the agreement in contributors. > > Are you sure you don't need to get the consent of everyone whose code is to be relicensed? > > FWIW I don't mind my contributions being relicensed to any OS license. The problem can be reformulated as: "How is it possible to do diplomatic/any decision process when some people who contribute to the contry/community do not agree with diplomatic action." 100% view yields complete paralysis. In practice, something was neede to solve that paralisys situation, that is why legally major vote is used as baseline concept. For example, in governmental procedures the quorum and amounts are more determined for all actions, in military actions, stakeholders in the business - correspond to a particular majority vote, but IT Open Source is still not fully formed procedures & legal grounds. Most relicensing happens by a major vote: https://en.wikipedia.org/wiki/Software_relicensing. In studying relicensing question, saw info on a lot of different migrations, not aware of examples of big projects doing 100% migration, that is ideal to strive to or to say it is an idealistic view, but from information seen that practically the major vote holds enough legal power. The process should respect the code author's opinions. If someone would request to actively withdraw their contributions, would understand that and would need to manage that. But, obviously, would mention that feels like a kind of a trick to do, because post factum it is an easy thing. We do not need to go far. For example - Nix relicensed (GPL -> LGPL), and Nixpkgs. Of course, for things like Nixpkgs, it is hard to find proper all embodying license. People here participated in Nixpkgs relicensed when it was had ~800 contributors. Of course, some of 800 people were not reached. BTW forgot what license it was, currently do not even know what Nixpkgs license is, probably the implicit one, but that is an understandable compromise and a tangent. Otherwise, if people go for 100% view - public projects would be set in stone and no public project would be able to adapt to anything. For example, we even can go further & ask, does the programmer taken all agreements to all changes of code of the other programmers? For example, also, the view does not put what to do with [thanatosensitivity](https://en.wikipedia.org/wiki/Thanatosensitivity), if someone who contributed the code, sorry for my English, groaks, it is hard to deliver letters to the other side of the grass & even if reached - it is hard to receive a legally interpretable response. That requirement would stasis any public projects forever, public works wouldn't be able to adapt to anything. Even external de jure processes & laws change by major vote & some compromise processes. To say, the view itself kills off own projects in the long run. That is why legally it is not possible nor reasonable to construct such laws. And the law writing & courts tend to conceptually operate not on literary readings/execution, but the realism understanding & morality just as well. As said, the relicensing procedures are not fully legally normalized/formalized, yet, but from practical uses, information read counting legal advice - it would not be 100% view because of its impossibility to get realized on many fronts, it would be a grade of a major vote, just as in all other comparable areas and other legal processes would be added to it, as to in Linux Kernel. So that processes from being seen as separate parts to be able to transcend to be a public process. We believe we talk in the context of US law, but I live in UA personally, so all this, in reality, is pretty vague, humanitarian, and on good terms. `>50%` is what makes voting decisions legally liable, it is what used in practice by majority of the projects. But the more & more careful the better.
Anton-Latukha commented 3 years ago
Replying to hard linking & dynamic linking in the scope of LGPL

https://github.com/haskell-nix/hnix/issues/919#issuecomment-831001389 > While I like the spirit of the LGPL I am worried that abiding by it with a non-LGPL downstream means disabling all inlining / not including any unfoldings in addition to dynamic linking. That can be a little tricky and cause annoying performance problems that cannot be solved without breaking modularity. Such tecnical questions are not how law operates. Derivative work is viewed regardless of them. The same code can be compiled both as dynamic- and as hard-linked, that binary compilation detail does not turn work form legality from normal to suddenly a derivative work. If linkage was a factor then dynamically linked code also has a table that links to the library anyway also. When LGPL is the weakest well-known license we have & it was created clearly with a purpose to support libraries and it has a more precise definition of linkage and derivative work. If one uses HNix library as a package - that is undoubtedly the right use. Reading in-depth the info on the question - it currently seems that linkage in precisely GPL-license case is still a grey area, as in GPL-v3 it is still stated vaguely and broadly.(http://mediatechlaw.mstreetlegal.com/2014/04/25/open-source-dynamic-linking-and-licensing-consideration-for-developers/) Texts mention LGPL being understandable and concentrate on GPL, while [page 12 last paragraph](https://openaccess.city.ac.uk/id/eprint/12602/1/McDonagh%20-%20FOSS.pdf) mentions: > Works statically linking to the Library fall out of the scope of the LGPL until they are compiled with the ‘Library’. As far as I read lawyer advice on those questions, type of software linking was explained to be completely a technical details question, that is irrelevant to legality and not reviewed in the court. In other words, the legal definitions of what is modification & "derivative work" are not connected in any with how compilation happens. I have IT&OS lawyer as a friend, thou as professional they bear responsibility for any advice given, so paid contract is needed to correspond with him, and I do not have those resources. +==== That is also why LGPL-v3.0+. Since looking at the processes zeitgeist: * cloud & Free Software; * relicenses of a lot of known projects; * interaction of proprietary & open project models; * so far there was just a handful of FSF protection cases; * but since the activity, soon there would be more cases to both sides, and since US law is precedential, that is where the legal reading would be established/standardized. * Also note that FSF took the opportunity to dethrone RMS & in that time talked to be more supportive of the businesses, service creation, money-earning. It seems FSF actively works to give strictly defined licenses & their use. In other words LGPL suits for library use, and next versions probably would clear out the safety fears. And the `+` of the licance allows to normalize the work in the project now & in meantime of development & bussiness interest - to switch to next generations of license introduced, that would clear-out the grey areas so Library license can be used as one.
Ericson2314 commented 3 years ago

Oh hmm https://www.gnu.org/licenses/lgpl-3.0.en.html is a much shorter and simpler addendum than v2, and the section "Object Code Incorporating Material from Library Header Files." seems pretty clear that templates of any size are fine with attribution and a license copy. I no longer see a problem with cross module inlining as the unfolding in the hi file is pretty darn close to a C++ template in a header.

jwiegley commented 3 years ago

@Anton-Latukha The beauty of open source is that you can do as you wish. Those, like myself, who cannot use hnix in LGPL form will then need to switch to a permanent fork and use that for our projects. So really, the question is whether this change will have real benefits for you as an active maintainer of this repository. Will it increase the number of contributors? The number of users? Its use by other projects? If the answer to those questions is a resounding yes, then you should switch for the sake of the project's future. But if not, it's worth asking why we should consider a switch at all. What is the motivation?

Ericson2314 commented 3 years ago

Yeah while I am no longer worried about the linking and inlining, loosing @jwiegley (edit and @mightybyte) to a fork would be a huge bummer.

layus commented 3 years ago

Hi, I am open to any change in license, and I have little understanding of the stakes at hold :confused: .

mightybyte commented 3 years ago

I am also not interested in using or contributing to an hnix fork licensed under LGPL.

Anton-Latukha commented 3 years ago

Ok. Sorry, I became seeing that in the landscape, maybe a BSD license is paradoxically a strong point, also it would be aggressive to treat John's response as an equal part of a numerical sequence. After a live discussion currently I lost interest in license change. Anyone can pursue it if they want.

Anton-Latukha commented 3 years ago

Also due to the existence of Nix as an LGPL boundary.

Nixpkgs migrated back in a day to MIT license: https://github.com/NixOS/nixpkgs/blob/master/COPYING

& Nixpkgs license would stay constant, and Nixpkgs going to always be. & at the same time, it is and going to always be a strong structural axis of all tooling & systems, so all Nix tooling nevertheless has an implicit requirement to converge onto Nixpkgs, in that & presence of Nix as LGPL - it is possible to use a counterpoint to draw some strongpoints from the current license. Can be said Nixpkgs gives LGPL property to HNix for free (well, a relaxed one), while keeping current ones, but nevertheless would note - it is only due to the external environment.

But if no one changes license now - later it would be increasingly impossible, so we are making an end decigion now.