Tuesday, March 24, 2009

Thoughts on GPL, the Open Company concept, and making $ therein

One aspect of the philosophy of GPL is to contribute back to the community. However, as we all know in the GPL license the only way to contribute is by submitting code.

This creates several problems; the primary being a chasm between it and all other economic activity. This has resulted in lots of people coming up with very creative but ultimately ancillary ways to fund GPL activity, the primary being support. There is probably a mountain of literature written about this and so I won't go into them more deeply here other than to summarize:

These methods are not satisfactory because the effort/reward relationship is obscure at best and at worst rewards the wrong activities.

So let us modify the GPL with a economic clause. This would essentially state, "If you want to use this software without licensing your derivative software via GPL, then simply pay us money.

In this way a company or individual can contribute back to the project in the traditional ($) manner (as an aside, does it also allow code contributions to be valued monetarily and therefore taxed?). But of course what should the project do with that cash? While many projects could definitely use the money to pay for server space and bandwidth; we can imagine an extremely successful piece of OSS that is actually generating a surplus of money. It would obviously be inappropriate for the project founder to keep it since in theory the software has benefited from submissions from many individuals.

That observation cannot sit in anyone's mind without producing the obvious answer within a modern meritocracy:

Project surplus should be distributed to individuals according to level of contribution

If the project is successful, one might imagine that this could become key contributors primary source of income. Essentially they would be "employees" of the project's "company", but without some of the pain associated with corporate involvement (and perhaps also without some of the benefits).

Of course, this brushes all kinds of issues under the rug such as how to measure "level of contribution". Let me throw out an initial breakdown formula:

contribution = "Trust Network" opinion * (alpha * sum(cool feature values) + beta * lines of code + delta * sum(bug fix value) - epsilon*(sum bugs you created))

"Trust Network opinion" = how other people rate you; used to catch people who are padding out their contributions by writing wordy code, etc.

Alpha, beta, and delta = arbitrary weighting factors depending on what's most important.

"cool feature values" = How much people like the feature you added (or maybe real-time feedback reporting what features the users are using)

"lines of code" should be obvious

"bug fixes" = Fixing bugs is a boring nasty job but someone has to do it.

And of course your contribution should be penalized by the # of bugs found; after all, if someone has to essentially rewrite your stuff; I'm not sure if you deserve too much credit.

But this only focuses on the code. How about the community? We can imagine similar metrics created for support forums; # of posts, response time, quality of posts, etc, and combined into a monster "value" equation. And documentation...

Even the necessary evil of "hierarchy and planning" can perhaps be captured by a pyramid scheme whereby section owners "contribution value" includes a tiny % of all contribution values to that section.

All of this begs the question: "Is it possible to capture all business activities?" To create an "Open Company?"

All of the above are my own ideas except for the word "Open Company". I was inspired to blog about them today because I think we are about to take the initial steps in regard to feasibility; there is a company out there who is going to try to do just that.

You can read a bit about it at: http://e-texteditor.com/blog/2009/opencompany


  1. > So let us modify the GPL with a economic clause. This would essentially state, "If you want to use this software without licensing your derivative software via GPL, then simply pay us money.

    I think this is the essence of what is called the "dual-license" open-source business model: http://lxer.com/module/newswire/view/7172

    You don't need an extra clause in the GPL to do it. If you own the copyright on the code, then you can release it under the GPL, but that doesn't prevent you from, in addition, selling it (without GPL restrictions) to other companies.

    I've never been involved with such a business, but it sounds to me that the most difficult part is that one entity needs to own the copyright on your open source code -- that means that the entity can only accept patches from people who agree to transfer copyright to the owning entity.

    So, the system you describe can be done today, without modifying the GPL. The tricky part is convincing people to give their patches to you. The hope is that an "open company" style compensation agreement can be set up that allows patchers to feel that they will get the money they deserve back from the owning entity at some indefinite time in the future, if the owning entity ever ends up making money.

  2. I do in fact work for a company whose primary product is dual-licensed, GPL and commercial. And you've hit the nail on the head WRT the difficulty -- that is, submissions are rare and essentially constrained to bug fixes once people realise that you are going to profit from their labor.

    Any major contribution would simply be released by the contributing author as GPL (without transferring copyright), essentially forking the code. To repair the fork, the project is forced to make individual contracts with each contributor.

    Essentially, the dual-license model boils down to an evaluation license where you get to evaluate code quality as well as functionality.

    I am proposing that incorporating $ contributions and disbursements into a modified GPL will create a fundamentally different situation.

    Ideally the point is to foster an actual modern economic system, where by that I mean:
    1. that laws of supply and demand might take hold, and
    2. it would not be possible for a single person to deny contributions by another.

    The idea that the project might be a viable economic system would be necessary before independent third parties would be willing to invest the time and energy into contribution.

    These effects are achieved because by adding these clauses into the licence means that the the $ contribution requirement is "viral" just like the GPL -- the contributing author must use the same license and so therefore must accept $ contributions as valid.

    The advantage to this is that all participants can benefit monetarily from the new contributor's effort. For example, if someone contributes a feature that opens the product into a new market all the other contributors automatically benefit based on their contributions.

    Additionally with a modified GPL, in theory the contributing author would feel reasonably sure to receive some fair portion of any disbursement. This is clearly the key factor to making an economic system; i.e. the contributor has to believe that his effort will be rewarded -- (and to add a little open souce qualification) if any effort is rewarded.

    In practice, though this belief might be hard to achieve since as I mentioned in my prior post, it is ultimately based on trust; no algorithm can catch deliberate "padding" of a contribution. Therefore the community must have the power to curtail that sort of activity. However, this is the case today in all modern economies. For example, in the United States, the House of Representatives passed a bill levying a 90% tax on bonuses paid to employees working for a bank that received bailout funds. This is a clear case of society acting to stop attempts to "game" our current economic system.

    From that perspective, I would be leaning towards a trust-network influenced (elected?) governing body that makes decisions modifications to the disbursement-calculating algorithm, etc.

    It would be fascinating to try to see how far this could be translated into a modern corporate structure. For example, Vanguard. AFAIK Vanguard is a non-profit money management firm. It has no stock -- or another way to put it is that when you buy shares of one of their mutual funds, you are buying shares of Vanguard itself. Therefore since the Vanguard shareholders ARE its fundholders, Vanguard does not have conflicted loyalties to both shareholders and fundholders.

    But I can only speculate as to that structure as I am not an economist or lawyer.