aconchillo / guile-json

JSON module for Guile
GNU General Public License v3.0
101 stars 34 forks source link

Please consider dual licensing under the MIT license #52

Closed johnwcowan closed 4 years ago

johnwcowan commented 5 years ago

I would like to write a SRFI based on the interface of guile-json and to provide guile-json as the implementation that the SRFI process requires. In order to do so, however, it must be possible to publish the implementation under the MIT license so that it can be incorporated into any Scheme implementation or program.

If you cannot see your way to doing that, I will probably reimplement it clean-room (I have not looked at the code at all so far), but I would like to avoid doing so.

Will you go ahead and dual-license it?

aconchillo commented 5 years ago

Hi @johnwcowan! I'm keeping this open for now. What does dual-licensing entail? Just adding a new LICENSE file? Is there a clear way on how to do that? What are the issuses that guile-json would face with a dual-license?

Btw, you can take a look at the code if you want of course, I have no problem with that :-). It's probably not great or not very Scheme idiomatic, I still consider myself a bit novice when talking about Scheme.

johnwcowan commented 5 years ago

You can put both licenses in the same file and add a few lines at the top: "You may use this software under either of the following licenses." You can look at https://dev.perl.org/licenses/ to see the general idea. You can leave out the big gray section.

Of course that will allow proprietary use, because there are Schemes (especially compilers) that already allow proprietary use. If that matters a lot to you (it obviously does to Mark Weaver) then don't make this change. Either way it will not affect the Guile community.

ZelphirKaltstahl commented 5 years ago

Either way it will not affect the Guile community.

I am not sure that is true. MIT allows for making modifications proprietary and the Guile community would miss out on those. Personally, I definitely like to contribute to free software more than just open software. I am not sure how others feel about that. Granted, my contributions to this project are tiny, compared to those of probably anyone else, who contributed anything.

I also do understand your point, that modifications would be "non-standard", which you mentioned on the Guile-User mailing list. However, modifications could also include performance improvements, refactoring and similar things, which do not add functionality, which the Guile community would miss out on, if done in the proprietary way, which MIT licensing allows.

linas commented 4 years ago

Yow. Let me be more blunt, more hysterical, more political about it ... the MIT license is symptomatic of late-stage capitalism, the neo-liberal mindset which lead to the financialization of everything, which (sorry, I'm sure you think this goes to far) got Trump elected. You cannot live under game-A rules forever, squeezing cash out of rocks. At some point, you've got to transition to game-B rules. The MIT license is game-A rules at it's nightmare worst. The MIT license is frankly just plain evil. Sorry to be so blunt, but that's kind of the big picture. I'm sorry I can't express myself as politely and reservedly as others, but these are really pretty serious, modern issues. They have to be faced head-on. We can't continue to pretend like licensing isn't really important stuff.

NalaGinrut commented 4 years ago

Hi @aconchillo! Personally, I will not change my view on guile-json no matter how you decide. And if you choose stay with single GPLv3, I would give you a thumb. :-) However, this is not implying that I'm hoping you go that way. I think it's a good chance for you to think about the license more seriously, and take a look at dual licenses situation. I have to say I didn't do many researches about dual licenses deeply although Artanis is dual licensed.

johnwcowan commented 4 years ago

I'll be blunt too, and then I'll say no more about it.

It's bug-brained ideological determinism to think that the choice of heaven or hell on earth is determined by whether one person drinks coffee or tea with breakfast. (I don't use either for mostly-medical reasons, so I have no axe to grind.) GPL users are generous sharers, and I appreciate them for it; permissive licensors are generous givers, and that means the gift is to all, whether the recipients are well or badly intentioned.

I would also ask you to reflect on what followers of apocalyptic fantasies of various sorts have done to both the Lithuanians and the Veps.

linas commented 4 years ago

.. and they're doing it again; this time its called "financialization". This is a fight for survival. The rich and the powerful have to lose this fight. We can't go on living like this. In a literal sense.

sbp commented 4 years ago

A Modest Proposal

If @johnwcowan is denied his request, he will incur the burden of having to clean-room an MIT licensed implementation. There are moral disadvantages to the MIT license already pointed out in this issue thread, such as the increased possibility of the code being used for inhumane purposes. Arguably, the burden of having to clean-room an MIT licensed implementation would be a commensurate penalty for this increased possibility. The problem, however, is that this burden is a penalty which is paid in terms of @johnwcowan 's productive output. As he produces such excellent and fruitful things for all, we ought not to be seeking to curtail this precious resource.

Instead, one possible alternative is to ransom the permissive licensing of guile-json. In other words, @johnwcowan could pay the penalty in some other way which does not impinge so much upon his abilities to contribute to society, such as donating a proportionate and reasonable amount of money to a free (Copyleft/ShareAlike) software charity, to a prominent free software project, or some similar arrangement (which may not necessarily involve money). This would be akin to the contemporary trend of extreme-copylefting code to force large companies to purchase a separate permissive license, but with a more wholesome objective.

amirouche commented 4 years ago

I agree with both @linas and @johnwcowan. I am lurking on post-GPL licenses and rely on AGPL for most of my work. For the better or worse all my work is available online, ready to be scavanged by freeloaders. I know first hand that whether the code is Free or Open, it will be scavanged.

I believe the future is CNPL. And I am confident that the values embodied by that licence must also happen outside the guild of coders.

Sadly, GPL and AGPL are not compatible with CNPL. MIT and SRFI licenses are compatible with CNPL.

Working on R7RS and SRFI is our common interest.

I will work on a JSON SRFI at https://github.com/amirouche/SRFI-JSON.

ZelphirKaltstahl commented 4 years ago

@amirouche As you know, I value your input. On this matter though, I have to disagree. I quote from the CNPL website you linked to, from the brief overview of the licenses:

The Non-Violent Public License aims to ensure basic protections against forms of violence, coercion, and discrimination which creations are frequently leveraged for in the modern world. This license covers several formats of creative work but has extra terms for software given the power it has as a tool outside of its creative capacities.

The Cooperative Non-Violent Public License goes further and only allows commercial use of the copyrighted work for individuals and worker-owned organizations. It is a superset of the NPL and contains all of the same terms otherwise.

I do not think this is the future, because I see a problem with the idea of the license. Not, because non-violence in itself is bad or any of the other stated goals, but because it is not practical to determine the following things:

These are all quite vague concepts, when comparing them with what we have in GPL or AGPL. That is one reason, why in practice, although the goals are in my opinion commendable, I do not see such a license succeed, in terms of what the creators of a library want to achieve with such a license.

One of the strengths of the GPL and AGPL is, that the definitions in them are pretty clear and well defined. I rarely see people making points for something in as clear and logical, based on premises, instead of simply stating opinions, a way as Stallman does in his talks. This seems to have carried over into GPL as well.

With CNPL and NPL, I think we have the similar flaws in most laws in many countries. They make extensive use of adjectives, which are nowhere defined and thus are unclear. This is the reason we need lawyers, to work through all the example cases and interpretations (in a perfect world, there would be only a single interpretation for each law) and a judge to finally make a decision plus multiple court levels, to verify a decision made by lower courts etc. The law is not sufficiently accessible for people, who did not study law. You cannot trust your gut feeling and your own interpretation, when reading law texts. They are rather like an endless suite of regression tests, which hold on to past decisions.

In my opinion a license must be as clear as possible, to reach its goal. This is only possible, when we refrain from trying to include vague concepts. For sure, there were many discussions about what something in the GPL means, but it has seen multiple iterations and has so far had tremendous success. Just look at all the free software, underlying our modern computing. Sooo much of it is already free software. I think GPL and AGPL reach their goals and I am happy, that this library is free software and not only MIT licensed (the "I-do-not-care-about-it-license").

Aside from that, I think, that having a license is not really a way of changing people's way of thinking, as in stopping someone from discriminating against others and such. I don't have a solution for that, unfortunately.

Furthermore, if you create a JSON library for becoming SRFI, I think that would be great. :+1: When I started using Guile, I learned a lot from your website and I think you have the knowledge and experience, which it takes to succeed.

amirouche commented 4 years ago

@amirouche As you know, I value your input. On this matter though, I have to disagree. I quote from the CNPL website you linked to, from the brief overview of the licenses:

[...]

What exactly is a violent action? What exactly counts as discrimination? What is coercion?

These are all quite vague concepts, when comparing them with what we have in GPL or AGPL. That is one reason, why in practice, although the goals are in my opinion commendable, I do not see such a license succeed, in terms of what the creators of a library want to achieve with such a license.

I agree "non violent" is broad language. That is only the title of the licence text. Also it is more precise that "GNU". The full-text explains what it means (read the full text...).

Also it is more clear that the "mythical ethical hacking" GNU people stand to.

One of the strengths of the GPL and AGPL is, that the definitions in them are pretty clear and well defined.

But they are missing guarantees regarding social and economic impacts ie. ethics linked to the use of the licenced software.

In my opinion a license must be as clear as possible, to reach its goal. This is only possible, when we refrain from trying to include vague concepts.

It is not vague. I agree that it remains to be ruled in court.

Aside from that, I think, that having a license is not really a way of changing people's way of thinking,

It does help to choose a licence. I will take a position in favor of the words written in the CNPL. Unlike others which abide rules that is not in their interests.

as in stopping someone from discriminating against others and such. I don't have a solution for that, unfortunately.

edit: "stoping from discriminating against others and such", this is possible by leading the way.

The GNU project claims to be ethical. The GPL and AGPL are not worded in a way that makes the "ethic" explicit at all. CNPL stands for Cooperative Non-violent Public License, this is much more precise. What is also vague in GPL and GNU is their profitability:

How do you make a living out of AGPL, GPL or GNU hacking?!

With CNPL it is again more clear: workers need to union to use commercially the software that rely CNPL. The dream of Universal Basic Income or whatever is dubbed ethical by GNU as a framework for GNU (!) to prosper is not necessary in the context of CNPL.

The existing law surrounding commercial endeavors can work with CNPL.

Furthermore, if you create a JSON library for becoming SRFI, I think that would be great. When I started using Guile, I learned a lot from your website and I think you have the knowledge and experience, which it takes to succeed.

Thanks a lot for the feedback. I am glad to read my notes helped someone. Thanks for the encouragements :)

I really hope this is not the end of the conversation between GNU people, me and the people that support (C)NPL. Even if the legal texts are incompatible. The spirit that lead me to the (C)NPL is what used to lead me to Open Source, Free Software and ultimately GNU.

We are on the same side.

aconchillo commented 4 years ago

I have always been apolitical and I will continue to be in this thread. I have always benefitted from permissive licenses both in my personal projects and on my day to day work and I would like people to be able to do the same, therefore also encouraging the use of Guile/Scheme in commercial products. So after further consideration I have decided to dual license guile-json including the MIT license. GPL will benefit projects such as GnuCash which don't have other option than to use a GPL compatible license. The MIT license will benefit SRFI and other open source and commercial uses.

I will keep this issue open until I make the changes which I hope to do this or next week.

aconchillo commented 4 years ago

Note that this doesn't imply I will use the MIT license in my other guile libraries. But I understand JSON is a particular case as it has become a data format standard.

linas commented 4 years ago

The problem with being apolitical is that powerful corporations will hurt you, given the chance. For example, Microsoft owes me about $60K plus 20 years interest and I don't think I will ever collect that money. It was a bald naked rip-off, with no recourse.

Licenses and laws should be viewed as technologies, not unlike "software". The goal of licensing is to develop a set of technologies that promote humanistic, human-friendly organizations and values. For example, corporations are mechanistic organizations of people, machinery, office-space, assets and capital goods, organized to perform extraction of financial power for the benefit of the controllers of the organization. Many/most corporations act in a neutral fashion, neither friendly or unfriendly to humans. There's also an extreme example: about 100 years ago today, there existed a highly structured, highly complex binding of laws, contracts, people and machinery that we now call "World War I". It was overtly hostile to humans, and it ran out of control until it literally exhausted raw materials (young men to kill). It was "out of control", in that both generals and politicians tried to stop it, and were unable to. There is no particular reason to hope/believe that some future corporation/culture/AI/AGI/software mechanism won't be equally destructive to human beings. We should attempt to avoid such disasters with prudent licensing and prudent political thinking.

@johnwcowan called the engineered Ukranian famine of 1938 as being "bug-brained", but this is incorrect. The number of human neurons involved in carrying out this act of engineering far exceeds the size of a bug-brain, no matter how you count log of the number of bits in the neural-collective of Stalin's brain and all of the enforcers. These are large and extremely complex dynamical systems, and they are not readily controlled. Being political is one of the few defense mechanisms that individual humans have against out-of-control dynamical systems.

The MIT (BSD, Apache) license is a complete abdication of any kind of social, cultural or moral obligations of person-hood or self-responsibility that one human being has towards other human beings. Parents raise children (to use a big word, "agape" -- https://en.wikipedia.org/wiki/Agape) to be members of society, and the MIT license is a negation and dereliction of that moral up-bringing. It's not "coffee or tea". its a fundamental stance of a living being and their relation to other living beings. I re-iterate: the MIT license is just plain evil: it is harmful to human beings.

soapdog commented 4 years ago

@linas sorry to burst in here on this topic but I think you should try being around people who actually use MIT license more, they are not what you're painting here. It is a bit offensive to go calling MIT license evil or harmful to human beings. What is harmful to human beings are actually other human beings and licenses will not fix this. FOSS has a sustainability problem, specially when we're talking about small and niche projects. Very few developers can actually pay the bills through their FOSS work and maintain their agency. Often they are either paid by large corporations to do it, or are trading their free time to do it while their day job is something else. Licenses such as MIT help projects get noticed by commercial vendors which might be beneficial for the sustainability of the project as it becomes more useful to those people. If a project is GPL and a company likes it, it might just clean-room clone it instead of going through the actions of being supportive of the GPL (which is a great license, don't get me wrong). What I am saying is there there are multiple approaches to take with the software you build and whatever your choice is, you have agency to take it. Don't go around saying that a license and a choice by other developers is evil, it is condescending, patronizing and wrong. Instead of taking the easy approach in conversation which is to turn criticisms to 11, try engaging with why you think GPL is a better choice. Focus on the positive aspects of what you love, spread love, not judgements.

linas commented 4 years ago

@soapdog -- first -- hi! -- second, yes, I have been around the MIT license, having contributed to llvm while working for Qualcomm. So: Apple created llvm because it was allergic to the GPL, and Qualcomm (for a while) worked with both gcc and llvm because it had CPU's to support. Eventually, Qualcomm went anti-GPL for the same reasons that Apple did. Now, I view Apple as the prototypical neutral-turning-towards-evil corporation, and if you look at Qualcomm's behavior, you can see that there is very little human-friendly about it's actions. Perhaps you disagree that Apple has turned evil. I would strongly suggest to look again. Yes, their products are sleek. But their behavioral bedrock is rotten to the core.

This: "Very few developers can actually pay the bills through their FOSS work and maintain their agency." Bingo. That is one (of several) points I am trying to make. This is one of the fundamental political challenges faced by software developers. It's not sustainable. This one of the important reasons why the MIT license is evil: it destroys the sustainability of open-source.

My explicit goal is to make the clean-room development of software extremely expensive. It should become unaffordable to create proprietary software. Software developers who participate in the creation of proprietary software should be socially ostracized, in the same way that we socially ostracize other undesirable social classes (gangsters, prostitutes, addicts).

This is a social problem that we face: software has transformed the planet: a few thousand lines of javascript can touch the lives of millions. In this sense, software developers are extremely powerful. And, as they say "with great power comes great responsibility", and yet, software developers choose to abdicate that responsibility, and hand it over, first, to their corporate employer, and then down the line, to the controlling interests: assorted financiers and bankers who squeeze money out of corporations, and then wastefully burying it out of economic reach.

I'm being political because being "apolitical" was a luxury that social-cultural norms of the US and Europe enabled, from 1950-2000. That luxury is fast disappearing: look at the yellow-vests in Paris, the protesters in Hong Kong, the election results in England, Poland, Hungary, Turkey, the US. We've got corporations like Facebook building massive propaganda and brain-washing systems to rival even Fox News (currently, the largest propaganda operation in the West, and a clear and present danger to America), Google and the Chinese Communist Party building massive surveillance systems. We're in a crisis mode for the future of humanity.

Compare this to the social dynamics of the developers of secure-scuttlebutt: these guys have councils to determine the appropriation of a few thousand dollars amongst themselves. Which is pathetic, given that a software developer for Apple, Google, Facebook can bring in upwards of $200K a year. It's pathetic, it's appalling, it's shameful. Here's a class of some of the most powerful people on the planet, and they have trouble obtaining shelter and food.

Here's a nice article about software developers, and why they like to think of themselves as being "apolitical": https://americanaffairsjournal.org/2019/11/the-real-class-war/ The first 1/3 or 1/2 of the article is the same-old-same-old boilerplate that you might already know about; the new observations kick in half-way through.

johnwcowan commented 4 years ago

@aconchillo: I appreciate your generous gift very much.

Three points of clarification for the record:

1) I had the Teutonic Knights in mind as much or more than the Soviet democidaires.

2) I resent being called a gangster or an addict. "Prostitute" I will accept.

3) There's nothing in the linked article except points of technology that is less than 140 years old. Capital is not the enemy of labor. Capital without labor is helpless and labor without capital is crippled. The actual enemy of both of them — well, it's in the third-from-last word of the article.

linas commented 4 years ago

@johnwcowan You are privileged to be living a sheltered lifestyle, far away from the quotidian reality the rest of us have to live in. But you should open your eyes, and go out into the world. Don't be Saul, be Paul.

johnwcowan commented 4 years ago

You know absolutely nothing about me, and it's grossly dishonest to pretend that you do.

~~ plonk ~~

ZelphirKaltstahl commented 4 years ago

It is funny you know, @johnwcowan. You were told on the Guile users mailing list, to not pressure or coerce anyone into making free software into non-free software. So you continue on here instead, as it is not moderated by the Guile user list moderation. Sure enough, as soon as you reached your goal you close the issue, as if to make a statement "Discussion is over, be silent!". That is how it feels to me at least. You reached your goal of getting this library released under a non-free license. Congratulations, you've really done it.

Many people including me like reliable SRFIs, of course, and an SRFI for handling JSON would be great. But for the price of freedom? Not so much. Especially when @amirouche already mentioned he would work on an SRFI implementation of it.

While I do not agree with everything @linas wrote, especially ad hominem and possibly with some of the impulsive stuff, – I lack some history background knowledge as well. – I still have to agree on the point, that MIT license is a terrible choice. It is usually only chosen by the uninformed open source fan club and then they cry about some people not contributing to the project and commercializing it. Go figure. With MIT license, as I already explained in my very first message in this issue, the corporate world is allowed to take this community project and free-ride, not ever giving back any improvements to the community. You can be sure that contributions from that side will not happen, as there is no obligation with MIT license and "Why give away 'competitive advantage'?" way of thinking. It is very anti-community. Especially the following that @linas wrote:

The problem with being apolitical is that powerful corporations will hurt you, given the chance.

is, as if he had read my mind. That was the first thought I had, when I saw the e-mail about @aconchillo 's decision.

The ultimate choice of course remains with @aconchillo whose choice must be respected, whom you motivated/convinced/coerced/whatevered to un-liberate this very useful library. I felt great about finally contributing something to a free software project, which was used by people. Now I need to worry, that my contribution, however small it admittedly was, might potentially be abused in a proprietary environment.

The issue of making a living from ones code is a totally separate issue. That is an issue with society itself. Dual-licensing, especially MIT license, will not help with that the tiniest bit, but rather give any "business" again a way to free-ride, instead of coming forward and making an offer. So lets leave away that smoke screen of an argument. The issue of making a living from software, when not being employed by a business is, that people in our society do not value the work of software developers. They do not understand it, true for 99% of the people, who cannot write the simplest code, or do not understand what the downsides of proprietary software are and get abused by businesses. If we as a society valued work of software developers, we would support and give to people, who create for community, to enable them. The problems of greed, exacerbated by capitalism mostly, and the problem people not being informed, even in the community of software developers – as software developers cannot even tell you what the difference between open source and free software is – will not be solved by putting another license on anything.

In so far, I agree with @linas , that this is a problem in modern society and while I don't think MIT license itself is the evil, I think it enables greedy people to continue in their ways and for that reason should be avoided.

aconchillo commented 4 years ago

I'm reopening the issue since I haven't done any change yet. I will close it as soon as I do something about it.

Just to try to close the loop (if that's even possible). Nobody has coerced anyone. My decision is mainly for technical reasons which is what mostly motivates my decisions. Having @amirouche start a new library just because a licensing issue didn't make sense to me. Of course, him or someone else can create another JSON library and there are actually many implementations out there. I feel very humble that people are using the library and want to keep using them. And of course I would love even more people to use it.

I prefer licenses that encourage people to share modifications of software, but I want to think this will happen in any case even with the MIT license in the particular case of guile-json. It's such a small library that it would be a bit ridiculous to not share a small fix for people who choose to use the MIT license. I believe that most individuals want to contribute back no matter what the license is.

This is probably a very naive way of seeing things, but I like to think in the greater good and that the two licenses can benefit everyone in this case. It might end up being a total disastrous choice, time will tell.

johnwcowan commented 4 years ago

Closing the issue was accidental: I interpreted the "Close and comment" button incorrectly. My apologies for the error, as it sent a signal I did not intend.

Of course I absolutely deny that I coerced anyone: can the distinction between persuasion and coercion really be unclear or irrelevant to you? I also deny that the MIT license is unfree, and I have the FSF and numerous other organizations on my side here. It obviously meets Freedoms 0-3.

And of course there is no question that the GPL and all other Freedom-0 licenses can be used by anyone at all, good or evil. For that matter, the cracker's tool Back Orifice 2000 was released under the GPL.

ZelphirKaltstahl commented 4 years ago

Closing the issue was accidental: I interpreted the "Close and comment" button incorrectly. My apologies for the error, as it sent a signal I did not intend.

OK, accepted.

You wrote:

Of course I absolutely deny that I coerced anyone: can the distinction between persuasion and coercion really be unclear or irrelevant to you?

I wrote:

[…] whom you motivated/convinced/coerced/whatevered to un-liberate this very useful library.

The "whatever" in there acts as a placeholder for whatever you might want to fill in there. Fact is, that you did something, even if we call it "encourage" or simply "ask". If we are having a good discussion and not just some kind of trolling, please make sure to actually read what I wrote, and not just relate to some part of it, which you pick.

I also deny that the MIT license is unfree, and I have the FSF and numerous other organizations on my side here. It obviously meets Freedoms 0-3.

Everyone, who can count to 2, can understand, that MIT license does not make sure those freedoms remain. Are you sure you followed the points of the discussion so far and know, what the concept of "copyleft" is about? Because that is what this whole discussion is in part based on.

I am also quite sure the FSF does not encourage people to use MIT license, so: No they are not on your side in this issue.

And of course there is no question that the GPL and all other Freedom-0 licenses can be used by anyone at all, good or evil.

If this kind of restriction on usage of software was actually important for you, you would have voted for what amirouche suggested earlier, CNPL or NPL or something similar.

For that matter, the cracker's tool Back Orifice 2000 was released under the GPL.

And, in my opinion, that would be a good thing, so that everyone can see whatever vulnerabilities this unknown-to-me tool exploits and can take measures against that. If we are talking even more serious things like using software for war purposes, then even more so, because then people can know, what is actually done with such software and are aware of actions of certain actors.

I cannot see any valid points in what you write. Please base your points more on something valid. So far, I see only superficial dealing with the matter at hand, seemingly putting forth whatever argument, whether it makes sense or not (the one with MIT license giving the freedoms did not), as long as it is in favor of getting MIT license. You have still not managed to convince, that MIT license is a good license. Not even in this particular case.

johnwcowan commented 4 years ago

I agree that the FSF does not encourage the use of the MIT license, but that doesn't mean it is unfree according to them, or that dual licensing GPL/MIT can fairly be described as "un-liberation", which means reducing to a state of unfreedom.

I was only requesting the MIT license in this case because that is the license of the SRFI community. I don't even think it's a very good license: it is vague about patent licensing, for example. My opinion (IANAL; TINLA) is that the use of the patent verbs "use" and "sell" imply a patent license, but MIT's own lawyers deny it. "The world goes as it will, and not as you or I would have it."

I don't favor restrictions of the "do no evil" type in software licensing.

aconchillo commented 4 years ago

I just saw there's an SRFI for JSON, srfi-180 by @amirouche. Looks great! https://srfi.schemers.org/srfi-180/

So, I'll keep guile-json GPL. Closing this.