Recently I have been invited to speak at an international automotive event which I have been asked NOT to share until they make up their mind whether it’s going to be virtual of physical (first time ever an event organizer asks me NOT to promote it, go figure!)
Waiting for the veil to lift, I thought it might be a good idea to get my thoughts organized anyway: the general topic I would like to cover in my remarks is the one that’s so close to my heart, the Automotive Digital Transformation (please check out my essay on Amazon), but I would like to focus on the bit that most of my contacts in the automotive industry find less believable, i.e. the emergence of a CarOS.
What’s the purpose of an Operating System?
In the old times, memory was a scarce resource in computing devices: the on board computer of the 60’s Apollo missions, who took us to the Moon and back, had 4,096 bytes of magnetic ferrite cores RAM. My smartphone today, whose main mission is reading what my friends say on Facebook, has 30 million times that.
That meant programs had to be very compact, otherwise they would not fit: programming languages existed but were very close to machine language as the translation effort would be beyond the capability of the computer; as a matter of fact, even today you could program the most sophisticated supercomputers in the world changing zero’s to one’s and viceversa in some immense sea of electronic bits, but in practical terms that’s beyond the capabilities of mere mortals.(*) and with the price of memory and circuits plummeting, computer manufacturers opted instead to make software much easier to use and maintain, even if that meant putting more hardware in the box.
In parallel, it became clear that the value of computers grew much more than linearly with the abundance of application software: in other words, it was in the best interest of computer manufacturers to make writing software for their machines easy and quick: the more such third party software existed, the more they could charge for their hardware.
To simplify writing code and its maintenance, layers and layers of software were gradually added, so that when you click on the “Print” button of the application program, this action gets parsed by each layer and passed on the successive deeper one and so forth, until a sheet of paper rolls off the stack in your printer and the shape of the appropriate characters is magnetized on it, waiting for the toner powder to be attracted and then baked on a page you can read.
The other problem of the direct approach is that each program has to be written for a specific machine: changing even slightly the machine’s configuration (removing a peripheral or adding a few memory banks) changes the sea of bits, making it virtually impossible for a program written for a machine in a given configuration to function properly on another, however similar.
An Operating System isolates the application programmer from all that: the complexity of the computer is reduced to a (long) list of exposed “calls” i.e. actions which can be performed. When the Application Program says “print”, it calls an OS function which translates to the appropriate set of commands understandable by the specific printer installed on the specific computer; when installed on another, the app does not need to concern itself with the type of printer connected, because the “print” call is the same.
The purpose of an Operating System is therefore both to make possible application software which can run on more than one machine and to make its maintenance easier.
What will a carOS look like?
First of all, it’s going to be BIG: these are the estimated sizes of some OS:
- Unix 1.0 (1971): 100,000 lines of code
- the Space Shuttle (1981): 400.000 lines of code
- Windows 3.1 (1992): 2,5M lines of code
- Windows XP (2001): 40M lines of code
- macOS 10.4 Tiger (2005): 85M lines of code
- mouse DNA: 120M base pairs
I would not be surprised to learn that the Tesla codebase is 300-400M lines of code! to write such a monumental piece of software you must have that specific experience: it’s not just about knowing the languages or tools, it’s about the management techniques to keep together such an immense endeavour involving thousands of programmers.
Volkswagen recently unveiled its plans to form a Software Company within its group with 10.000 employees and a €7B budget:
This is because (I bet) Volkswagen realised that while cars already have software on board (the engine management system, the anti-lock brake system, the on board entertainment and many other components already are digitally programmed: by some estimate, the average modern car has about 100M lines of code already), the difference is that most of that software resides on specific self-contained subsystems focused on a specific task: with the exception of Tesla, no car manufacturer has a unique codebase covering the car from bumper to bumper.
Secondly, it’s likely to be based on Open Source Software: the most experienced OS developers such as Apple or Google nowadays are basing their work on some iteration of Unix/Linux; even IBM mighty mainframes and supercomputers use Linux, and so does Tesla.
So it’s not like the carOS will emerge from some newfangled kernel written from scratch: Detroit will not contaminate Silicon Valley, quite the opposite, which raises the issue of culture; we will see whether VW can pull it off, but the software geek culture is as far from the motorkopf culture as you can get: money and resources are necessary, but talent motivation and retention are an altogether different ball game: don’t forget that the only company who did it so far is founded and managed by someone with zero car experience but a whole life in software.
Tesla is beginning to publish its software as Open Source: would notoriously secretive auto companies be willing to do the same?
Who could write a carOS?
Even leaving culture aside, the list of those able to throw 7 billions at the problem is very short: beyond Tesla (who have done it) and Volkswagen (who said they going to do it) there’s perhaps Toyota (which has announced nothing so far) and I could not think of anyone else.
Conceivably, Tesla could reinvent itself as a software developer and license its codebase to other manufacturer, but I think they are unlikely to do so, or at least not until they continue to enjoy the same stock market unlimited support; in fact, Apple never licensed its macOS or iOS to anyone and to date their perfect hardware/software integration is still one of their main differentiating factors.
My money would be instead on some sort of consortia being formed focused only on software where the non VW-sized OEMs will participate: this virtually guarantees the birth of a proper Operating System, as it will be the only way to make sure that all the consortium members are given the same opportunities: the consortium will develop the OS and car manufacturers will write the software drivers connecting the generic OS calls to their proprietary hardware; this will also ensure that application developers will have a stable and uniform environment where to develop their products.
This solves the talent and management problems, as such a consortium is likely to be led and managed by one of the current operating systems behemots, which also happen to have billions and billions available, and also creates a level playing fields where many others will have a chance to enter: if you want to make a smartphone today you don’t have to wait until you get to the size of Nokia or Motorola: pick an Android license and focus on hardware!
History however proves beyond any reasonable doubt that in such a setup, whoever writes the OS makes the most money: Microsoft, Google, Apple all rank among the world’s most valuable companies and Tesla is worth more than any other car manufacturer, despite its relatively diminutive size.
Once we have an Operating System, we can start thinking what applications could be developed on it, but that’s another story.
(*) As a very young systems engineer at IBM, I was given the boring tasks reserved for rookies, for example, installing then-ubiquitous CICS on new machines freshly delivered to big clients. This was a routine operation which occasionally could go wrong, and when we kids got stuck, only after a couple of all-nighters we were allowed to ask for the help to the semi-God of CICS, a human (I think) who could read the 600 (132 chars, 90 lines) pages-strong computer memory dump and spot where a “B6” should read “FF” instead (yup, all in hexadecimal, of course).
[EDIT 25/6: putting information technology and cars in the same article attracted jeers from some of my friends, prompting me to publish a very old joke on the same subject.]