When to Open Source Software
A tale of competitive advantage shift
Working on GitLinks, we naturally care a lot about open source. Our business is based around the idea that through scoring, we can identify quality open source. Now even the smaller projects with strong communities can start getting some attention.
I would like to share some thoughts and debates we have amongst ourselves at GitLinks about if/when we should Open Source our technology and I would love to hear what people might think about this. But first let’s go through some of the trends we’ve seen in the industry.
A Little bit of History
First I would like to go through some history of software and hardware. This is going to be very familiar to some of you. But for me I learned about it by reading “Producing open source software” , Karl Fogel and the unavoidable wikipedia.
At the beginning of the computer industry, the competitive advantage of manufacturers was the actual hardware. Since hardware designs were vastly different, the software was delivered with the machine, not sold separately. Back then, people would write patches to the software and freely exchange it. This software exchange would happen within user groups like SHARE and DECUS.
With the evolution of the machines, the software evolved accordingly, becoming more and more complex. This gave rise to the software industry that would build and sell software while the hardware manufacturers would bundle the software with the machines, bundling the costs under the same umbrella. This led to the United States vs. IBM antitrust suit, filed 17 January 1969 to prevent manufacturers from bundling software and hardware together.
However, because software and hardware was so deeply linked, the overall user experience was limited by the weakest link. Since the machine architecture was not yet standardized (IBM Pc started in the 80's), a user that bought a machine couldn’t use the software on the machine from another vendor. That’s a strong incentive for manufacturers to keep producing software: they can ensure that the user had a system that works.
As a result, to cover the increasing costs of building software and compete within the new software industry market, the machine manufacturers progressively closed their source code and licensed it.
Under those circumstances, the competitive advantage shifted from just hardware and a community of hackers, to hardware, software and a network of vendors for the software.
With the IBM PC, IBM pushed the trend even further to make the hardware itself a platform. Other manufacturers could now add modules and cards to an IBM architectured PC. This is how they won the hardware war and imposed a standard, they created an ecosystem where people could add their own hardware and combine it with the existing one.
This is a good example of how the competitive advantage for a company changed with the evolution of its context. Here IBM’s competitive advantage moved from just the hardware to a combination of hardware and software with vendors. Their platform became their competitive advantage.
Before diving into details I have to give you some insights about what we do at GitLinks. We are trying to score Open Source software and we are doing that through the lens of support and maintenance. Because of the very nature of Open Source, projects are maintained with some various level of commitment. That’s normal. However, as a professional developer, I expect the tools I use to be maintained, relatively bug free and for the people involved in the project to be responsive. Right now, with the tools available, it is hard and time consuming to get that information.
As of August 2006 and according to Internet Success: A Study of Open-Source Software Commons, of the 107,747 projects included in a study, 35% were abandoned during the “Initiation phase”.
In order to assess the level of support, we aggregate data from diverse data sources to give you an idea about how healthy the eco-system of a given piece of Open Source software is.
Being a company that exclusively uses Open Source software and defends the Open Source process, it’s hard to justify building a closed solution. We want to be transparent about what we are looking at, both for getting feedback from the community on what we are considering, but also to put aside all doubts that people could have on the validity of our product. We want to make the whole Open Source ecosystem better: raise awareness around those projects used by everyone but funded by too few (Open SSL), improve the service that company get from using Open Source software, improve the experience that developers have using libraries and finally incentivize people and companies to give back to the community, to the tools they use the most.
For us that’s one side of the argument.
On the other side there is the traditional protectionist argument. We need a competitive advantage. Since there are some competitors in the space, not really focusing on the same data points, but focused on the same industry — Open Source — with more resources, we feel like we need to protect our interests. Suppose we were to Open Source our tools. It’s easy to imagine our competitors deploying our software and using the data collected in their products. This would put us in a difficult situation, especially now, since we’re a younger business, still establishing our market share.
This implies that we consider our competitive advantage to be the software. In that situation, protecting the competitive advantage is protecting the software.
You can start to feel the conundrum.
And it leads to the real discussion: is software our real competitive advantage or is it something else? Is it something set into stone or something that will evolve over time?
It feels like software as a competitive advantage gets weaker and weaker.
In a world where it takes a weekend at a Hackathon to produce amazing apps, it doesn’t feel very comforting to solely rely on our code. Open Source itself is responsible for part of this state. It is possible for anyone with an Internet connection to start learning and building things. More and more complex technologies are available for free and enable people to build products faster than ever before. Even fields that sound complicated like machine learning are accessible to the masses through MOOCs.
In that sense, protecting our software by having source code closed is only postponing the inevitable. At some point developing the same software will take less time for newcomers or competitors than it took us and they will be able to build it without too much effort. Technology and software are a competitive advantage, but they are only temporary and need to be renewed all the time.
But again, software is all that we have right now. So why would we give it away?
Another point could be made on the licensing under which we would open source our code. We could Open source all of it, but only give the rights to copy and use some parts of the software that we feel could be useful for the community as a whole, and leave out the parts that are specific to our business. That way we reach our goal of transparency and we also contribute back to the community by providing tools that we use and are maintained … as long as we are alive :)
This would protect part of our competitive advantage.
We could do this and also consider something else. Build a competitive advantage beyond software. This is definitely what big companies are relying on when they open source their stack.
Facebook has open sourced both infrastructure and software libraries. They haven’t released everything but they could. Even if their Engineering team is awesome, their advantage is not the software they built. It is the more than One Billion people that are active on the platform and produce data. Even if someone was to instantaneously copy facebook and name it bookface. It would not be used, because no one would switch. The other advantage that they have is brand. Everybody knows facebook, a lot of people tried to build other facebooks, maybe even better. But that company is so widely spread, their brand is so deeply ingrained in everybody’s brain that it is a hard/nearly impossible player to disrupt by doing the same thing.
Another example of a company that has an advantage that is not on software is GitHub. What they have is the biggest amount of Open Source data with a community of people using their platform. They have become so ubiquitous in the Open Source world that all people using Open Source are using their software. Github has nearly become a synonym with Open Source. As such their brand is a crazy good selling point to companies. More than 70% of them are using Open Source and all those people are using Github as their infrastructure. Even if they were to open source all their stuff, that would not hurt them a tiny bit. As evidenced by their competitor, GitLab, is gaining traction on that particular selling point.
All of this aims at one point: Software is not a real/lasting competitive advantage. Once we have built it, have people using it, then we can build much more than software, a community, an ecosystem, a brand and data. And our competitive advantage will be all of it, and releasing our software should not be a problem.
The state of the discussion is: we need to Open Source at some point, when should we do it? Our answer is: when our competitive advantage is more than just software.
I hope to be able to announce to you how we are open sourcing what we do, you’ll see it is really cool ;)