Embedded developers are increasingly turning to open-source tools for building reliable and flexible systems and software. Open-source code can provide both raw material for building system software and applications, and development tools for creating that software. In particular, open-source development tools such as Eclipse and the GNU tool set can be customized and extended to meet the precise needs of the project. Further, embedded vendors use many open-source tools as the foundation for more comprehensive development environments.
Enabling a large and growing part of the embedded-tools ecosystem is Eclipse, the open-source integrated development environment (IDE). This platform, along with associated technologies, is under ongoing development by the Eclipse Foundation, a nonprofit consortium of software companies focused on leveraging and contributing shared technology.
Two things are driving Eclipse in embedded design and development--the cost and flexibility of the platform, and the community of contributors and plug-in providers. Embedded vendors are scrambling to get on that bandwagon, or justify why they aren't. Once on, they have to figure out how to make money with free, open-source software.
The enthusiasm for and rapid development of the system has generated some complexity issues for the platform that will be addressed by a rollout this summer of a bundled system that is code-named Callisto. The delivery involves the coordination of multiple projects led by several companies, along with hundreds of committees and thousands of contributors.
Eclipse has developed around several projects: the Device Tools Project, the Data Tools Project and the Web Tools Project. All of them were started at different times, have different version numbers and in the past have been only minimally coordinated with one another. A vendor can test and deliver its own tools for specific versions of these components, but would be hard-pressed to guarantee that its own plug-ins will work with others that have different foundation requirements, or with later versions of the Eclipse platform itself.
Callisto will combine Eclipse and several higher-level plug-ins. It will aid the integration of vendors' tools, which can add a long list of components that have to be part of the tested version in order for developers to ship and support products. With the ability to add plug-ins and new builds of Eclipse as they are ready, vendors face a fine line between the promise of extensibility and the reality of versioning.
In fairness, many vendors' tools work with multiple versions of the Eclipse platform and related plug-ins. Callisto gives vendors using Eclipse the opportunity to ensure that their plug-ins and other enhancements all run on compatible configurations. QNX, for example, plans on shipping its Momentics tools on the Eclipse 3.2 platform about three months after that platform is available. It would likely not be able to do this if some of its lower-level dependencies did not update at the same time as the basic platform.
Keefe said QNX was an original members of the Eclipse Foundation, enlisting "entirely for cost savings. We didn't have to build and maintain our own foundation. But we also saw the potential of Eclipse, and wanted to be a part of that."
Vendors are discovering that Eclipse lets them do what they do best. What is changing is how they value and price that combination of software and expertise.
The winner is the user. It's not clear that free software is driving down the price of tools, but it is opening up choice. While the reality may be less than the ideal, most embedded developers using Eclipse can take advantage of unique configurations that better meet their needs than any generic set of tools.
By now, most embedded developers have heard about Eclipse. For those users, the benefits of Eclipse are evident and real:
• It's free and freely downloadable;
• It can be updated simply by downloading the latest version, including nightly builds for the more adventurous;
• It runs on Java, which theoretically makes it accessible on a wide range of platforms. In practice, most developers are targeting common platforms and OSes such as Windows, Solaris and Linux.
Any tool that is implemented as an Eclipse plug-in can easily be installed in the environment. So QNX Momentics, which comes with both C/C++ and Java compilers and other tools, can be supplemented with, say, Klocwork static analysis tools, simply by placing them in the appropriate directory on the development machine.
Few embedded vendors offer tools for team development and source-code control. But the number of such tools with Eclipse plug-ins is large, giving developers a choice of products to use. Eclipse comes with the client plug-in for CVS, the open-source Concurrent Versioning System licensed under the GNU General Public License.
Granted, many third-party plug-ins for Eclipse are geared toward the generic Java developer, which is little help to those building in C++ for a remote target. But the community is growing; EclipseCon, the conference for Eclipse members and users held this year in Santa Clara, Calif., grew from a thousand participants last year to more than 1,400 in 2006. A growing number are embedded developers, as attested to by the visible and active presence of both embedded companies and developers.
Most software development means trade-offs. A tools vendor adopting Eclipse gains in the short term on cost, because the platform provides much of the foundation that is necessary to build an IDE. This is a competitive advantage if other vendors offering IDEs or development tool kits are going that route, as QNX, Accelerated Technology and LynuxWorks can attest. Building a platform that provides many of the common user interface and connectivity characteristics, plus extensibility, plus multi-OS support, is a significant and expensive undertaking that doesn't contribute to the vendor's core expertise. Eclipse makes possible specialized solutions on a common and known foundation.
For years, development tools vendors have sought the holy grail: a logical tool chain from product design through manufacture. This once meant building or buying all the pieces individually and assembling them in one proprietary framework. Or worse, from the standpoint of users, not assembling the tools at all, providing instead a set of tools with different user interfaces that had to be figured out.
With Eclipse hovering in the background, the story is more complex for the vendor, yet more straightforward for the embedded user. The vendor doesn't need the entire tool chain, but it does have to enable it. Using Eclipse to host a development environment, such as QNX, Wind River and Accelerated Technology are doing, lets developers add in other tools, depending on their unique needs. Any changes meant to close that platform to such additions would likely result in a user backlash.
Many users are already taking advantage of the flexibility afforded by Eclipse, or are prepared to do so. In the exhibit hall at EclipseCon, Don Weldon, a lead developer for a small design shop in Mountain View, Calif., said, "I assembled my own set of development tools on Eclipse. It meets my needs, and I know exactly how to use it."
The Eclipse SDK adds the Java Development Tools and Plug-in Development Environment, plug-in tools for Eclipse. Together, these pieces form the Eclipse SDK, a development environment for Eclipse-based tools and plug-ins, and the Eclipse itself.
See related chart