polyformproject / polyform-licenses

source text for Polyform Project licenses
https://polyformproject.org
155 stars 12 forks source link

Rewrite Noncompete in Plain Terms #63

Closed kemitchell closed 4 years ago

kemitchell commented 5 years ago

This PR builds on #60, but takes the language for the Noncompete in a new direction.

Economics

Relying on the economics concept of substitution created a lot of confusion. I'm particularly concerned that it took the license away from plain language. Instead of making it possible to apply the license in most cases without professional help, appealing to economic authority introduced the need for economic expertise, on top of legal expertise. For those who can't run out and hire economic consultants, which is most of us, invoking their jargon invites lay confusion about their field, in addition to any lay confusion about the legal concepts.

Writing on economic substitutes that I've reviewed, from economists and courts, tends to split the definition of substitute goods in two. There's a formal definition: positive cross-elasticity of demand. But the definition I think we actually want is the more intuitive idea of consumers picking or replacing one offering and not another. The fact that there is a formal economic definition of substitution lent a certain sense of specificity and rigor. It made the language feel precise, to those accustomed to thinking of economics as precise. But we're actually relying on the intuitive definition riding sidecar with formal theory. The intuitive definition can only be stated very generally, which is fertile ground for all kinds of arguments.

New Approach

This PR stands for the idea that we should accept that we're really after the intuitive idea of substitutes, write that intuitive definition into the license in plain terms, without appealing to economic authority, and do what we can from there to make it possible for non-lawyer-non-economists to apply on their own.

One option would be to simply drop "economic" from the front of "economic substitutes". That would avoid appealing to authority, but wouldn't do much for clarity. It would produce lots of arguments about the meaning of the single word "substitutes", which isn't much to go on. Substitutes to who or how many? How easy is it to substitute?

This PR instead mixes in a few new ingredients, to help structure the question a bit more, without specializing the license to one kind of software, or one kind of competitive offering.

Functionality Pass-Through

The idea of a product or service passing through the functionality of the software comes most directly from my work on the API Copyleft License, particularly its copyleft exception for applications. The basic insight there was that software is really about functionality, and competition is really about what others---not the licensor, not the licensee---see on offer.

@laughinghan was absolutely pivotal in refining that part of the API Copyleft License, and might find this new effort interesting.

Value Add

The idea of additional functionality of a different kind comes in part from API Copyleft, but more so from typical value-added-reseller and system-integrator agreements. The fundamental idea there is that end-user customers come to the VARs and ISVs primarily for the value added or integration, not for the generic functionality of the software they're building upon and reselling.

@bradrydzewski has been a welcome bug in my ear about some of these issues, and I'm sure will want a look at this PR. @heathermeeker has brought more traditional VAR language up as an alternative.

Kind of Software

If there's been one specific point of repeated feedback, it's that we should make explicit that licensees can't offer the licensed software as a service. I've personally been reluctant to take that and run with it, because I feared the result would be a niche license tailored especially for database and other cloud-native service vendors, stamped with Polyform's imprimatur, rather than a truly general purpose license that could see adoption by a broad enough licensor base to develop real name recognition and other network effects.

I've responded to that here by adding a clarification making clear that simply delivering or packaging the software in a different way doesn't earn the licensee a free pass. But I've also taken pains to make clear that any such change to the type of the software has the same problem. Not just software-to-service.

Drafting-wise, adding that kind of examples list to a general rule always creates some risk, even when it's left open-ended. Courts may read it to restrict the general rule, using the items that got included as hints about what the more general terms meant. The specific examples given may also go out of date. Software as a service wasn't new when we started calling it "software as a service". But we'll be surprised by another, parallel development in software delivery in the next few decades, I'm sure. The wheel is ever turning.

I'd like to call @tieguy out for thanks here. He and I have been cooking up a kind of "test suite" for public software license analysis that proved the perfect tool to hand for this. We really ought to get that published.

Open Questions

  1. Can folks improve the language? This PR isn't my first formulation, but it's the result of my first push since #60. It needs other eyes, and likely some polish.

  2. Is using both functionality pass-through and different functionality redundant or complementary? I tend to see those limitations as drawing the circle closer from two sides, but other might see them as redundant.

  3. Are we really trying to back our way into an exception for applications? If so, should we state that explicitly, as does API Copyleft?

    There is a structural difference between API Copyleft and Polyform-Noncompete. Under API Copyleft, the rule is sharing back (copyleft), and the exception is applications. Under Polyform-Noncompete, the rule is that you can't use the software, and the exception is that you can do so for a permitted purpose. But any purpose is a permitted purpose, except providing goods or services that compete with the software. Reminds me of Wikipedia: Everything which is not forbidden is allowed.


Thanks so much to everyone for thought and attention. This license was feeling a bit stuck a week ago. I'm feeling much more optimistic now.

heathermeeker commented 5 years ago

I take it that your intention here is to excise the idea of an market substitute (regardless of how that concept is described) and focus on functionality. I don't think that avoids the complexity we were struggling with, but let's hope so.

I start with the premise that these terms will only be tested for imperfect substitutes. Licensee products that are identical or nearly so are easy cases.

There seems to me no objective measure to assess whether one piece of software (services etc) contains the same functionality as another, as a general matter. If we were to do that in a one-on-one contract, we would identify a specific test for the functionality we cared about. In other words we would take a black box approach and use a compatibility test kit. Should the licensor be obligated to identify the core functionality here, in order to adopt the license?

I think the only way to identify the functionality that is important in a product is to let the market set a value on it. But if anyone disagrees, please explain how this line can be drawn by examining function, rather than prices and demand.

It doesn't matter to me whether we use the word "economic." Your writeup implies that economists say what a substitute is and I disagree with that. Markets are natural behavioral phenomena that are both intuitive and pervasive. Economists only study what substitutes are. They don't set what they are -- well, not in a free market. And ultimately, companies that adopt this kind of license restriction want to stop competitors from free riding. They care less about function than loss of sales.

I note that we have also not used the concept of requiring value add. This is a very common concept in software licensing. The feedback I have gotten is that it is too vague, though I am skeptical about that. If we want to lay that concept aside, OK, but let's do that intentionally rather than by omission.

I do not understand "both functionality pass-through and different functionality" -- please clarify.

This is not an API copyleft license -- it's completely different. The two are substitutes for each other. :) I am not disagreeing with your writeup, but I do not want to burden this process with discussion of copyleft. Any discussion of that should be in a different forum.

kemitchell commented 5 years ago

@heathermeeker, I hope you'll forgive me for picking quotes and responding interline:

I don't think [excising the idea of a market substitute] avoids the complexity we were struggling with, but let's hope so.

I agree. The purpose here isn't to avoid the complexity inherent in the license we're trying to write, but to face and embrace that complexity in plain terms, without appealing to expertise licensors and licensees probably won't have.

Should the licensor be obligated to identify the core functionality here, in order to adopt the license?

I don't think we want to draw an additional line between "core" and "ancillary" functionality. I do agree that the idea of similar functionality isn't absolutely clear, but it's at least clear what kinds of evidence matter for arguing about it, and all the evidence and arguments are ones business and software people can deploy for themselves, without legal or economic expertise.

For example, if a service exposes the same API as the licensed software, or even passes significant chunks of its test suite, that's strong evidence that functionality is being passed through. So would evidence that a user of the licensed software switched to the service offering for the same need.

Your writeup implies that economists say what a substitute is and I disagree with that.

I didn't mean to imply that. Economists define the concept of substitute good, and apply that definition to observed behavior. They don't (usually) determine the behavior they observe. But markets and substitute goods could and did function as such before economists got around to theorizing them.

I note that we have also not used the concept of requiring value add.

I think this PR does use that concept, but not the word "added" or "additional". We could make that more clear:

"A good or service competes with the software if it provides so much of the software's functionality to users, and so little different functionalityadditional functionality of a different kind, that it becomes a practical substitute for the software for at least some potential users."

I do not understand "both functionality pass-through and different functionality" -- please clarify.

Breaking the language into its elements:

A good or service competes with the software if it:

  1. provides so much of the software's functionality to users (Functionality Pass-Through)
  2. and so little additional functionality of a different kind (Additional Functionality)
  3. that it becomes a practical substitute for the software (Practical Substitution)
  4. for at least some potential users (Extent Clarification)

As written, competition means practical substitution, and both functionality pass-through and additional functionality describe practical substitution.

I could have called "Additional Functionality" by the name "Value Added" instead. But I have seen value-added resales where the key value added was in fact porting to a new platform, repackaging software as service, turning a library into a plugin, and so on. We're aiming to exclude those.

This is not an API copyleft license -- it's completely different.

Agreed. Their goals are very different. API Copyleft has to draw a line between what does and doesn't trigger copyleft. Polyform-Noncompete has to draw a line between what is and is not permitted use. But the insight behind API Copyleft was that the motivation for where and how to draw that line is noncompetition with the licensed software.

Under API Copyleft, it's about encouraging collaboration on a single project and preventing its use as a basis for competing closed alternatives. Under Polyform-Noncompete, it's about encouraging use of the licensed software and preventing its use as a basis for competing closed or open alternatives.

heathermeeker commented 5 years ago

Two ideas after sleeping on this:

kemitchell commented 5 years ago

@heathermeeker:

Do you have an alternative name in mind? I still think "noncompete" would be an accurate description of the terms we're discussing, but agree that two -NCs is asking for trouble. I will put some thought on this, too.

I believe we mentioned marketing as a substitute in at least one early draft. I will take a stab at working that concept into this PR.

kemitchell commented 5 years ago

We could call it the "nonrival" license, and swap "rival product or service" for "competitor" in the language.

kemitchell commented 5 years ago

@heathermeeker 5b76ceb55e14024877dbf5eed23efe54753036ab adds a rule about marketing as a substitute.

kemitchell commented 5 years ago

@heathermeeker it also occurs to me that we could just call it "Polyform-Competitive".

mlinksva commented 5 years ago

This is better than #60 in that's it's more clearly intended to prohibit others offering the software as a service, but it's still weird and not nearly as general as what's in master.

A good or service competes with the software if it provides so much of the software's functionality to users, and so little additional functionality of a different kind, that it becomes a practical substitute for the software for at least some potential users.

What this clearly prohibits is a competitive fork, eg xemacs, MariaDB, io.js.

I still find it odd that providing the software as a service competes with the software rather than expanding the software's market share. But at least it's fairly clear the intent of this license is to prohibit others from offering the software as a service, I guess (though I'm not really sure this would be the case for a developer reading this with no background).

A good or service competes even if it offers the functionality of the software as a different kind of software: application as service, library as plugin, framework as development tool, interpreter as operating system, and so on, or for a different language or platform.

The "different kind of software" concept is odd here, or at least every one of the examples is. A service strikes me as a different way to use software, not a different kind of software. I understand what all the rest (library, plugin, framework...) are, and yes they are different kinds of software, but I have to wonder (ie without any certainty) about how they might be applicable here, eg what is an interpreter that could be provisioned as an operating system, and that OS would be competitive with the interpreter? ${language} and ${language}OS (a pattern repeated a number of times) because someone might obtain/use ${language} via ${language}OS in lieu of obtaining ${language} by itself and using on some other OS?

For a library (or microservice , or other component) it isn't clear to me what this PR intends for the license to accomplish. It seems to me that it does prohibit competitive forks (eg BoringSSL?) but I'm not sure it would prohibit competition in ways that a library author looking for exclusivity within their line of business might care about (hypothetical: social networking startup develops library for qurerying graph databases, because they weren't satisfied with existing ones...they don't care what others do with this amazing new library, so long as other social networks can't use it...it is quite unclear whether the language in this PR would help them, while the language in master seems straightforward).

kemitchell commented 5 years ago

@mlinksva I agree that master is both clearer and more general. I also expect that many licensors will see the terms they want more directly expressed in that language.

Practically, I think you also hit on the most common use case that the approach in this PR will fail to address. If a licensor releases a component of their main commercial offering, rather than a more or less complete implementation of it, they won't be served by a license that defines competition narrowly, in terms of the component, and thus misses competition with their broader commercial offering.

The main concern with the approach currently on master is that it defines competition in terms of licensor versus licensee, rather than in terms of product-or-service versus product-or-service. @heathermeeker should speak for herself, but I recall that she's generally leery of party-versus-party noncompetes spelled out in general terms, rather than terms specific to the lines of business the noncompete is meant to protect.

I will take a few minutes to try and "backport" some of the improvements seen in this PR to the old approach currently on master. See how it goes.

bradrydzewski commented 5 years ago

@kemitchell I really like the changes in d413fedc14f522072932fcc5a0e21fa15b02255b

I've responded to that here by adding a clarification making clear that simply delivering or packaging the software in a different way doesn't earn the licensee a free pass.

I understand the language around different forms based on your explanation, however, without the explanation I had trouble understanding the meaning behind the enumerated forms. The API Copyleft License uses the term interface to describe exposing software. If you don't mind me asking, which scenarios did you find not covered by interface? Maybe there are some other higher level terms that could be used, such as interaction method or delivery method.

kemitchell commented 5 years ago

@bradrydzewski, it hadn't occurred to me that the distinction I'm looking for actually is interface! I thought about library and application and services as a kind of software that projects are, rather than as kinds of interfaces they provide.

kemitchell commented 4 years ago

This was merged as part of #64 after a rebase.