Software development can be characterized by the management of two separate, yet equally important groups of artifacts. The source code you write and the libraries you depend on. Much of our education, tooling, and software engineering literature focuses on the first part – this post focuses on the second.
The Eclipse Galileo release is almost here, and for the past week I have been counting down the top 10 features I’m most excited about. The features come from a variety of different Eclipse projects including the Platform, Modeling, Runtime, Tools and Technology. Some of the features I’m excited about help teams of developers write better code, or exciting new plug-ins, in a more productive manner. Other cool new Galileo features provide developers with a more streamlined, feature rich, API. Number 3 on my Top 10 list — Improved Target Platform Management — bridges the gap between these two groups.
Targets platforms define what your workspace will be built and launched against. By defining your target you can easily use one version of Eclipse for development, while targeting a different version for your product. Many developers simply download Eclipse, create a new plug-in project and start hacking away. This approach can lead to a number of problems:
- What if you want to update your tooling (to use a new version of Ecore tools), do you want your product built against this the new tooling?
- What if you don’t need GEF based tools but you wish to make use of GEF in your product. Do you want GEF “installed” in development environment?
- What if you work in a team. Do you require that your entire team uses the same version of Eclipse for their development?
- How do you change the libraries you depend on?
By managing your targets, you are free separate your development environment from the software you are building. You can even share your target definitions with team members.The Galileo release brings a number of improvements to the management of target definitions, including:
Target editor enhancements:
A new target platform preference page:
A target platform state view:
Software site target provisioner:
Let’s step through a very simple example. Let’s say you have Galileo installed and you want to build a product based on EMF. Instead of installing EMF, you create a new target definition, add a “Software Site”, and choose EMF from the Galileo repository. EMF (and its requirements) will fetched and added to your target platform, but it is not installed. This means you can upgrade your tooling (or even install a different version of EMF tooling) without affecting the software you’re building.
You can even have multiple targets with different versions of EMF and using the Target Platform preference page, you can switch between them.
Kudos for this feature goes out to the PDE Team. In particular, Darin Wright, Curtis Windatt and Chris Aniszczyk!
Awesome work guys!