licensezero / licensezero-questions

questions about License Zero
https://licensezero.com/questions
7 stars 1 forks source link

Should License Zero allow licensing developers to set the length of the free-trial period for their project? #8

Open arei opened 6 years ago

arei commented 6 years ago

The documentation/website mentions three or four different trial periods; seven days, thirty days, ninety days, etc. Does licensezero have a variable trial period setting during license creating? If not, should it?

Either way, the documentation/website should be fixed.

kemitchell commented 6 years ago

@arei, thanks for opening an issue. Are you referring to https://licensezero.com/manifesto?

You're right that the text there needs to be updated. Early on, all License Zero projects had a built-in free-trial-like period, sometimes called a grace period. Now that's part of the noncommercial license only. See numbered point 4.

The canonical documentation for License Zero going forward will be pages on licensezero.com and https://guide.licensezero.com. I will replace the link to the manifesto with a link to the guide now.

arei commented 6 years ago

The guide (https://guide.licensezero.com/#public-licenses) mentions seven days. The licenses (https://licensezero.com/licenses) says thirty days. Not sure where I saw ninety days, but read the whole site the other day so it’s in there somewhere.

Regardless, I think letting the user change the trial period would be really useful.

kemitchell commented 6 years ago

@arei, thanks for catching that! I've just corrected the text at https://licensezero.com/licenses.

I've also scheduled a review of all of the text on https://licensezero.com. Needless to say, I've had a lot of feedback since announcing the project. I'm (already!) overdue for a consistency pass, to make sure updates have been reflected throughout. As you pointed out, at least one was not.

kemitchell commented 6 years ago

Back to the question of trial periods:

Originally, License Zero offered just a noncommercial public license. That license had a trial period locked at 90 days. I later added the reciprocal license, also with a long grace period. In my own drafting, the grace period length was always templatized. But I locked a value pretty early on.

Feedback uniformly said that 90 days was far too long. I eventually reduced it to thirty, and later to seven days.

I proposed the reciprocal license to OSI for approval. That process---still unresolved---is a whole topic unto itself. But for our purposes, the upshot was that I removed the automatic grace period from the license, but added a kind of alternative, in the form of a built-in forgiveness period, akin to GPL 3.0's "Termination" provision.

From GPL 3.0, section 8:

Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

From L0-R 2.0.1:

Any unknowing failure to meet [one of the reciprocity conditions] is excused if you release source code as required, or stop doing anything requiring permission under this license, within 30 days of learning that this license required you to release source code.

As for L0-NC, I still favor standardizing the grace period across License Zero projects, but I'm willing to be convinced to open it again.

In my mind, the trade-off is between uniformity and customization.

I'll never come up with a standard grace period length that suits all projects. Some may be easy enough to evaluate in a few hours. Others may, by the nature of the software or the kinds of firms who might use it, take weeks or months. So one-size-fits-all is hopeless.

Fixing the grace period trades some bad fits for specific projects for one fewer question on the customer side. Seven days sends the message that you can't dawdle in your evaluation. When you start a project with multiple L0-NC components, you can be sure the deal is the same for all of them, and that running licensezero buy in six days will get you all the permission you need.

There's a middle ground, where I permit developers to set the grace period on a per-project basis, encode that into the (signed) public license, and also write it into (signed) machine-readable metadata in package.json. That would allow the CLI and other clients to process it if they like.

kemitchell commented 6 years ago

This doesn't inevitably follow from your question, but since I mentioned the possibility of encoding trial-length metadata in package.json, I should mention it:

I'm very leery of building any kind of surveillance-based compliance auditing into the CLI, or even features that work only client-side, but might create data records, or otherwise be repurposed for enforcement. For example, logging of "first seen" dates for L0-NC dependencies, and nagging notifications to purchase private licenses on seeing that dep again, after its free-trial period.

I hope it's clear that I'm decidedly not against enforcing free trial limits in the public licenses. But audit and reporting are constant sources of negotiating tension in on-prem software deals, and I respect some of the concerns behind that. They don't boil down to wanting to overrun license limits and get away with it.

On a more general level, it's a goal of mine to make the CLI be and feel like a neutral tool. It should serve developers selling licenses well, and also serve customers buying licenses well. It should't feel like it's siding with one side's interests over the other's.

kemitchell commented 6 years ago

Update: Inspired by some other conversations on-topic, I've increased the default grace period to 32 days.

I'm still very much considering allowing customization.

kemitchell commented 6 years ago

@arei Here's a thought: Require contributors using Prosperity through License Zero to set a grace period of at least 32 days.

That would give users some assurance that they won't accidentally install a Prosperity package with a tiny trial period. But it would allow specific projects to make a more reasonable offers for their particular use cases. Your thoughts?

kemitchell commented 6 years ago

An implementation note:

licensezero license --id $ID --prosperity --trial 64

The server would need to support an additional trial integer argument, reject arguments of less than 32, and sign licenses appropriately.

arei commented 6 years ago

So you’re saying a minimu of 32 days, but a maximum of whatever the licensor decides?

kemitchell commented 6 years ago

I’d probably set a maximum value, too, but a rather high one. Say, 180 or 365 days.