Ben's Website

Serious musings

Funding open source

Isn't it weird that massively scalable software relies on legalities and paper to look after itself, instead of...software?

Open source licensing is widely appreciated but its core problem is that value only flows from authors to users, there is no counter flow of value. This is solely due to the generosity of the open source authors: their decision to release their work to the public is founded on a combination of personal pride, community spirit, ideological priors, and somewhat nebulous market-shaping preferences. These motivations are, I think, generally appreciated and attained. Removing expense or use limitations does enable more people to use your work. But as Thomas Sanladerer recently presented, the problem is that compensation is not among these goals, and is often undermined by them.

The reason that other people use open source work is because it is useful to them, useful to some problem downstream of or different from that which motivated the original creation. For some reason, though, the original author does not have access to the full breadth of the problem, they cannot solve all of the problems that end-users have and therefore do not have visibility in to the full size of the problem(s) which they are helping to solve, and are thereby limited in their ability to understand and capture value off of those end solutions.

This is in contrast to an idealized, econ101 market, where, say, some collection of companies all have unique capabilities that they provide, with mutual contracts linking these isolated capabilities into competitive offerings for customers. In this 101 ideal, each of the specialists individually operate their piece of the overall solution, giving them information on the overall size of the problem and incentive to perform their piece in a manner appropriate and efficient to the problem. It also permits the specialized providers to consider their joint position and discuss whether other arrangements would be more efficient, ie through combination or redistribution of tasks. This idealized market works because each specialist can see both the originating problem and overall solution. It is rarely realized because the specialists have coordination costs that slow solution development and provision. Integrating these specialists into a vertical entity, which works from say raw supplies to deliver a product ready for end use, streamlines these capabilities at the cost of preventing these specialists from contributing to other products.

The low cost of executing software to perform specific tasks provides an alternate and inferior solution to the problem of coordination: instead of coordinating multiple entities, just ship the software to entities closer to the problems and who can provide the end-solutions themselves.

Distanced from customer need, open source developers are free from many requirements and able to pursue, in many cases, technically novel and quickly-changing capabilities. But there are many anecdotes relating that the hard part of innovation is not having the idea - and writing a performant solution - but bringing that to market, which is surrounding the core innovation with the soft interfaces that enable it to plug into the market. No matter how revolutionary the battery, it still needs a motor, transmission, trigger, and casing to be used as a drill.

So, the real question of making open source sustainable is a question of animating the market mechanisms in a way appropriate to and more harmonious with the other values, goods, and distinguishing features of open source. Doubling down on ideology is not a solution. There are real costs to developers and to the ecosystem in general when individuals miss-apply their efforts. Right now, we only see the disgruntled blog posts and videos, but there are many others.

What if open source licenses included a right of third party action or other finder's fee?

My terminology can surely be improved, but the objective would be to create new mechanisms for developers to learn about how software is being used so that they can better moderate their own investments. For instance, http://gpl-violations.org/about/ and other organizations offer rewards for reporting GPL violations. What if instead of being privately funded these rewards were baked into the license? For instance, the SEC has long included the funding of whistleblower rewards into their settlements, knowing that the best way to encourage a culture of self-policing is to create incentives for those with knowledge of problems to do their own math. The same can be envisioned for license compliance.

But to stop there would be a failure to realize the above, that while license compliance and mechanisms that encourage that are important, they are not enough. If all code were infected by viral licenses, we would just end up with a plethora of open code and no real change to what the code does or how value is distributed among the creators.

Continuing then, most attempts to determine 'equitable' assignments of value to various (sub)sub-components fail; I'd argue they cannot succeed if only for the simple reason that their contribution to the value created decreases with time. The market is the only way to solve this assignment problem, and the only way it can do that is with accurate information on use and value created. Closed source is one collection of approaches, as are the numerous variations on open core and dual-licensing. Without specifying further, it is clear that having more information is essential to enabling developers to apply their efforts correctly: instead of just creating and releasing software they can instead ask some of their likely users whether they want, and want to support, the creation of the software. There will always be a gap between the technically-possible capabilities and those utilized in a market, if only for the delay between realizing and implementing capabilities. The goal of helping developers to better apply their resources is to create, in an open way, some of the resource coordination capabilities that vertically-integrated companies enjoy, while also preserving their independence.

I see two motions in this direction. First are the success of open communities facilitated by GitHub, GitLab, etc. Second are task brokers like UpWork. These are the same thing; the first is nominally designing the work and the second incenting its creation, though today they are performed by unrelated entities.

(As an aside, UpWork is close to having a really interesting database of plain-language requirements, valuations, and — what they're lacking — delivered code.)

If you have followed through this far, the question is what mechanisms are permissable to begin this information return function. Well, as above, I see no reason for software license compliance to be restricted to text. If GPL code must be released online, it seems trivial to have compliance verification be part of the software, even included in init(). Indeed, for companies this compliance evaluation is seen as a much larger cost than actually releasing the code, that it is harder to determine what must be released and in what form than to actually do so. If, as part of instantiating the api the user needed to provide the address of the hosted code and a 3rd-party verifier's hash, that could be immediately performed, and on every instance. The host would be in on it, hosting the code and providing a fast hash verification while also producing license validation reports and use analytics.

I won't spend time addressing the various objections to this sort of information exchange beyond saying that in my view this exchange is much better than the continued under-valuation of open source.

Ok, so that's my opinion and thought. What am I doing about it? Well, here's a first attempt to solicit interest and assistance in creating an animator for Modelica result files. I'm pretty bandwidth-limited, but I have a bunch of related ideas that will hopefully make it up here or to Mechanomy at some point, in case you would like to [follow along]. I'd also welcome email, twitter, or other discussion on this and related topics.

Overall, I'm pretty convinced that the only way to improve things is to make problems more known and definite so that enough people can appreciate the solution. How we do this is a fundamental question to much of modern life.