Never miss a story from Breakfast Bytes. Subscribe for in-depth analysis and articles.
Open source software is software where the source code is fairly freely available. I say "fairly" since there are almost always restrictions on its use to ensure that it continues to be open source and often that improvements made must contributed back. Some software is completely freely available, just download the source and compile it, but sometimes it costs money.
There are several significant open-source projects, of which I think the most famous are:
I don't think it is quite in the same league of fame, but Cadence's Jim Ready, who is the VP who advises the company on embedded software, was the founder of MontaVista, an open source supplier of enterprise versions of Linux especially focused on telecom, automotive, and mobile. The company was acquired by Cavium in 2009. The last time I met Jim was actually when they approached me to be the VP marketing several years ago. I talked to him recently about open-source software and was pleased that his views are very close to my own.
There is a big paradox about open source though. It is clearly the most effective method of developing software. As Eric Raymond famously said, "given enough eyeballs, all bugs are shallow". His book The Cathedral and the Bazaar is still one of the best books on open source, a term which was actually coined by him as a better alternative to Richard Stallman's "free software" which always required him to qualify it as "free as in speech, not as in beer". Since it was usually free as in beer as well, that was confusing.
The open-source paradox is that once the source code is open source, available to anyone, there is not a good business model to pay for the developers if they are not doing it for other reasons (masters students wanting a master's degree, for example). If the price gets too high, then it is easier for companies to put a team in place to compile and support the software starting from the available source code. If a team like that costs, say, $1M per year, then there is a limit, maybe $2M per year, that a company will pay a supplier simply to make the problem go away. Red Hat managed to build a big business by making the Linux problem go away in the enterprise space for a large number of customers, but they have been a one-off. Lots of companies wanted to be the "Red Hat of the embedded world" but it turns out that there doesn't seem to be any such thing. Wind River is probably the closest (now owned by Intel).
There have been other ways to monetize than simply providing releases and service. Firefox is famous (actually the Mozilla Foundation that owns it) for making all its money by making first Google, and now Yahoo, the default search engine. This is reckoned to make up most of Mozilla's over $300M in revenue. Obviously Google monetizes Android through mobile search (mostly) and other Google Apps, although I suspect even they would be hard pressed to have an accurate number for exactly how much they make versus what they would make if they had never invested in Android—after all, iPhone users do a lot of Google searching too. Presumably Intel also monetizes Wind River by using its operating systems and protocol stacks inside IoT and similar devices.
Open source suffers from another major weaknesses. It only seems to work when it is not necessary to have a spec of the product, which happens only when the developers are also its users. I've even heard software engineers claim that any project is already dead if it needs a spec from marketing, overlooking the fact that, in any market other than tools for software developers, they don't actually know what is needed.
Look at all those famous projects above, they are all products that are heavily used by software developers. The contributors to the projects are almost all users of the project, they "eat their own dogfood" as the saying goes. Even then, projects often need to see an archetypal version of a project before they can "clone" an open-source version. Hadoop and MySQL are basically open-source versions of existing commercial closed-source products, for example. It is interesting that there are no successful open-source games, since by the time a new game is successful it is too late to create an open-source version as the gaming market will have moved on by the time it is released. On the other hand, there is plenty of open-source gaming infrastructure such as graphics libraries or physics engines, which is more predictable.
In the EDA world, there is some open-source development but it is almost entirely in the PCB area or Verilog simulators. Both of these change very slowly. I don't know of any open-source industrial strength synthesis, place and route, physical verification, and so on. These areas require a lot of expertise and move to the regular heartbeat of Moore's Law and new process nodes. Like with games, by the time the requirements for some new feature such as FinFETs is understood and shows up in software from companies like Cadence, it is too late to create an open-source version that is competitive. It is not that semiconductor companies would never depend on open-source software on some misguided principle that it is all poor quality. After all, they all use Linux on their server farms, Android in their phones if they are in that business, and Eclipse for an embedded software development environment. They probably store all their source code on Git or Subversion too.
A company like Cadence is closed source. It is a big investment to create a major EDA product, measured in tens of millions of dollars. It also has a very concentrated market, with a lot of revenue coming from the largest semiconductor and system companies. It is the worst sort of market for open source in the sense that the engineers that write the code are different from the type of engineers that use it. Someone who knows how to, say, write a good placement algorithm cannot design an SoC and vice versa. But many of the customers that use Cadence software have a big enough investment that if the source code was freely available they would simply put a team in place to do their own internal releases and not pay Cadence. As a business model that would not work. Obviously not for Cadence, but also soon enough for the semiconductor companies when the next generations of products never came to market since the investment could not be justified. Just as with games, there is open-source infrastructure, like openAccess, CPF parsers, or compact SPICE models.
So the Cadence approach to open source is open source for software development but not for EDA. This is not just self interest, it is the best mixture of technologies and business models for the customer companies. The software development toolchain is completely open source. This reflects the reality that the best software development tools are almost all open source. The best business model for EDA software and for Cadence is closed source except in limited instances like OpenAccess.