There’s been a lot of coverage about the Toyota recalls and the role of software in automobiles. One of the most interesting headlines, in my opinion, was this one from Techdirt, which echoes a call from the Software Freedom Law Center for automakers like Toyota to open source their software code.
These both demonstrate a lack of understanding with the automotive software assembly line. Likewise, this CNET article cites a vehicle tester at Edmunds.com who equates auto software to simple calculators. Again, not an engineer or programmer with a clear understanding of what goes on under the hood.
Two things stand out here:
First, auto software is not a standalone package. It is comprised of up to 100 million lines of code that come from multiple suppliers. In the Toyota case, it’s not clear whether the faulty brake software in the Prius was coded by Toyota engineers or by a supplier down the chain. And even if each individual code base was 100% bug free, there’s no guarantee that when the different pieces are glued together into a vehicle, there won’t be ‘glitches.’ To borrow from the Edmunds.com tester, it’s more accurate to say that auto software is more like different calculators duct-taped together.
Secondly, the Software Freedom Law Center’s call for Toyota to open source its code isn’t a realistic step. By its name, I get that the center promotes free software, and as such, are proponents of Linus’ Law that with enough eyeballs, code is better and more secure. Logically, this makes sense. But just how many eyeballs are enough? At a rough estimate, 50 lines of code are equal to one printed page. That means 100 million lines of code runs to about 2,000,000 pages.
The ingenuity and excellence of open source software development has created a wealth of excellent software. But as detailed in the 2009 Scan Open Source Report, there is a lot more to gain by using static analysis to improve the quality, security and integrity of software. Shawn Herman, a Microsoft programmer, wrote a very thoughtful piece on this subject looking at where human code review (eyeballs) stops and where automated analysis (static analysis and dynamic analysis) picks up. He explains that “a static analysis tool looks at source code the same way a compiler does, and so it has much more knowledge of what will happen than a human does.”
Instead of just open sourcing the software, the real effort needs to focus on Deming-like quality control for the automotive software assembly line. At a minimum, we believe that automated analysis needs to be part of this new software assembly line, preferably as early in the development process as possible. Right now vehicles are rolling consumer electronics devices but we expect that they will go through the same production maturity that we’ve seen in avionics and will be developed under mandated safety quality procedures.

