This was originally part of my post Distribution is Contribution, but it wasn’t the primary point I wanted to make there, and I realized there was far more I wanted to say about this subject.
The origin of all value, FOSS or otherwise, is in the production of something. Every other form on contribution, anything else that adds value to FOSS, comes from the refinement, combination, distribution or transformation of this original production. The most common form of production in FOSS is written code. More attention is paid to written code than any other form of production, and contributions are (as stated in the previous post) more commonly measured by the quantity of code that any other metric. Even in other forms of production, in artwork and documentation, the origin of value comes from the production, with other modes of contribution only adding value by the refinement, combination, distribution or transformation of that production.
In most consumable products, the base value of something is equal to what it would cost to replace it’s consumption. That is, the base value for a widget is the cost that is required to produce a new widget to replace it. If you were to give that widget to somebody, you would have less than you had before. But with software this isn’t the case. With software we can send out as many copies of an application as we want, and never have less than we started with. With a replacement cost of zero, the base value of any given copy of code is also zero. That is why for software in general, and even more so for Free and Open Source software, it is only the creation of something new that matters.
Because consumption of these goods does not decrease the supply of them, the value exists not in replacing what is lost, but in creating something that didn’t previously exist. If a talented hacker were to reproduce, from scratch, an exact duplicate of the Linux kernel, he would have created no more value than somebody who simply made a copy of the existing kernel. Likewise if somebody were to simply duplicate the exact features of one application in another, they have produced no more value than a simple copy of the original. The value of creation, then, is determined entirely by how much of the creation is new or different from what has been created previously.
Most programmer know that Lines of Code (LOC) is a poor metric for judging a person’s productivity, mostly because bad code can be written quickly and in large quantities, while good code is most often small and requires quite a bit of time spent on thinking. It is equally deficient as a metric of contributed value, both for these same reasons, and also some that are more specific to contribution.
As previously stated, the value of code is determined by how much of it is novel or different from what came before. A 1,000 line contribution of a replacement kernel module, where 90% of the functionality is identical to the previous module, does not necessarily contain the same value as a 1,000 line contribution of a new module where none previously existed. A contribution where 100% of the functionality is the same can only contribute a value equal to the difference in quality (in terms of efficiency, cleanliness, stability, etc), which is in no way proportional to the amount of code.
Code contributed to fix a problem in existing code often has a value proportional to the size of the change, and should be properly counted as a contribution of equal value. However, it’s value comes from a deficiency in previous contributions, and those contributions should therefore be valued an equal amount less. If you were to purchase a dozen eggs, find that one was rotten, and then purchase an additional good egg, that additional purchase has a full value, but the original can only be valued at 11 eggs, not a full dozen. Just as you would not consider this scenario to result in a real value of 13 eggs, we can not consider the original value of contributions and their subsequent fixes as having a cumulative real value.
Finally we must consider the actual use of a contribution when determining it’s total value. Again as was stated in my previous post, FOSS developers derive value from their work being used by others, the amount of use any given contribution receives, then, will determine its total value. A contribution to a popular application or part of an application must be considered of greater total value than a contribution of equal size to a less popular application or part of an application. Contributions to a part of the Linux kernel used in a majority of deployments adds more total value than an equal sized contribution to a part of the kernel used in a very narrow range of deployments.