Managing embedded open source software
Posted by Lacey Thoms on Thu, Sep 29, 2011 @ 08:27 AM
Marc Andresssen, cofounder of Netscape and the key investor in LinkedIn recently announced that “Software is eating the world”. There are more instances of embedded software in the world today than any other type of software combined. It is the heart transport, safety, health, food, agriculture, defense, entertainment and therefore virtually every sector of industry that one way or other touches our everyday lives.
Complexity of software design within the embedded space has increased exponentially. In a way it has mirrored and followed the way gate complexity in integrated devices has doubled every 18 months in the last forty years. The growth in code complexity has overlapped the change in business dynamics of our interconnected global market. Demands for shortening product development times, increasing functionality in products and reducing development costs has led to an increase in outsourcing, contracting, and code-reuse. Open source software, the ultimate manifestation of code-reuse, has become a key enabler of today’s competitive embedded market.
From the first GNU in 1983 to invasion of the whole IT stack by 2011, open source has penetrated every facet of software development. Such desirable attributes as faster time to market, lower development cost, better security, peer-reviewed quality, variety, zero licensing cost and multiple sources from mostly reputable suppliers are some of the reasons where open source has become the software of choice for over 40% of embedded projects.
Better known examples of open source software targeted for embedded applications include Android (in everything mobile and increasingly non-mobile), embedded Linux and other open source Real Time Operating Systems (RTOS’s), Qt User Interface (UI) used in phones and PDA’s and refrigerators and industrial control systems, and roughly 100,000 other projects that cover everything from communications stacks, web browsing, user interfaces, remote management, embedded databases, audio and video codecs and even virtual machines (as in Java virtual machine).
However , the advantages of open source software can only be realized if its adoption is managed. Open source software invariably comes with obligations that are represented in their associated licenses, copyrights, security vulnerability notices and export control classifications. Failure to understand and respect these obligations has repercussions that are similar to those due to shortcomings in product quality. Embedded devices such as consumer products are distributed in volume, and any impairment in quality, or in meeting licensing obligations, can be very costly in the field.
Project-level or organizational policies usually frame the acceptable terms and obligations. Although some may find it difficult to admit, today’s resourceful developers do not write code from scratch. They know where to get code and enhance it with their own creativity. It is unreasonable and impractical to expect developers to be aware of, and manage, code obligations as they create software under tight schedules. Increasingly, organizations are deploying practices that allow managed adoption open source in projects, shortening development intervals and reducing development costs.
A survey of more than hundred technology organizations, from large multinationals to small technology firms of less than 50 people has indentified the best practices used in embedded industry for leveraging and managing open source software. Establishing license policies, adopting package pre-approval processes, creating a baseline of the existing inventory of software, regular software analysis in real-time and at build-time, before the final product is shipped to the market, are some of the steps deployed by the embedded industry.
For more information on manageing open source in embedded software read our Open Source Software Adoption Process.