I have noticed anger towards Microsoft lately for "doing OSS wrong". In this post I will explain the following points:
- Microsoft is fine staying on their current course.
- As developers in the OSS ecosystem, we also have the right to do what we want.
- Most of our complaints don't impact the ecosystem negatively or positively.
During college, I had an opportunity to read Richard Dawkin's The Selfish Gene. The book attempts to explain evolution through anthropomorphizing genes. The general idea is as follows:
In describing genes as being "selfish", the author does not intend...to imply that they are driven by any motives or will, but merely that their effects can be metaphorically and pedagogically described as if they were. The contention is that the genes that are passed on are the ones whose evolutionary consequences serve their own implicit interest in being replicated, not necessarily those of the organism.
The OSS Organism
Let us pretend for a moment that the .NET OSS ecosystem is an organism. Inside that organism we have multiple genes operating. The organisms in this ecosystem consist of developers, projects, and companies. In Richard Dawkin's model, every gene is operating "selfishly" or in the direct interest of propagating itself, and it doesn't matter if any action taken helps or hurts that ecosystem.
The claims of Microsoft stifling innovation, hurting OSS, and driving away developers may or may not be true. I would personally like to think it isn't the case, and I haven't seen any evidence to support those accusations. For the sake of argument, let's assume that Microsoft is doing what the critics claim. In the selfish gene model, Microsoft would be behaving in what it thought was its best interest of propagating itself. There is no right or wrong in a model where a gene is operating in what it thinks is its interest.
From my point of view, I can't get upset at Microsoft. I may not always agree with their choices, but my emotions rarely get stoked like some of the tweets I've seen come from current and ex .net developers.
One of the more interesting parts of Dawkin's theory is the idea of altruism. The idea that a gene can act against its own self interest, in the case that it will help other similar genes. This concept applies to two kinds of groups inside the .NET OSS ecosystem: projects that look like Microsoft, and projects that don't.
The projects that look like Microsoft will receive help. They will be supported in ways that other projects will not be supported. The projects that don't look like Microsoft will most likely be ignored, because nothing is more effective in killing OSS than obscurity.
These examples might suggest that there is a power-struggle between genes and their interactor. In fact, the claim is that there isn't much of a struggle because the genes usually win without a fight. However, the claim is made, if the organism becomes intelligent enough to understand its own interests, as distinct from those of its genes, there can be true conflict.
Inside of our OSS organism the Microsoft gene is really powerful at propagating itself and other similar genes. The only time we are going to get a different .NET OSS ecosystem is when the system outgrows the Microsoft gene itself. That means the organism would have to realize what Microsoft is trying to do and act against it. In the case of Microsoft and OSS, this is not likely going to happen.
If you think about OSS as an organism with genes comprised by people, projects, and companies with Microsoft being the biggest baddest gene, then it is hard to get angry. Each gene is acting in what it perceives as its own best interest, and it isn't making any decisions based on morality. I believe all .NET developers, including Microsoft, are acting in their own interest and any claims to the contrary are questionable.
What we can do as genes in the OSS organism is help like genes succeed and replicate. It isn't going to be easy, but over time we should be able to influence the organism if we keep at it. The idea is not to get angry or happy about the state of the whole, but to focus on what you are doing and see where evolution takes us.