Overview

EGF is a software factory tool which enables to develop simple or complex generators. A workflow enables to orchestrate and execute different kind of tools (e.g., ATL for model-to-model transformations, Acceleo for model-to-text transformations) and code written in a language (e.g., Java, Ant, JRuby). EGF also proposes a declarative formalism of pattern with the capability to develop customizable generations, at development time or after deployment. The extensibility of EGF enables to support new tools or languages for orchestration, and to support new types of generation formalisms. All the generation elements are encapuslated in factory components. A coherent set of factory components defines a generation portfolio reusable and customizable in different project contexts. EGF is released with two demonstrative and operational generation portfolios. The first one enriches the EMF generation with new features: i) generation of new types of artefacts (e.g., JavaDoc, ecoretools diagrams), ii) customization of the EMF generation with patterns, iii) a generation DSL to easily configure an EMF generation. The second EGF portolfio is a DSL and generator for continuous integration in order to facilitate the definition of continuous integration chains and to target new integration continuous platforms while the continuous integration tools evolve.

Features

In this release

EGF is part of an Eclipse Simultaneous Release for the second time. The different features provided by EGF v1.0.0, as part of Juno, are of three categories: the engine, extensions, and portfolios.

The second one is a build chain portfolio which enables to configure a build chain (with an EGF build editor) and to generate all the scripts for a build platform, i.e. Hudson and Buckminster/Jenkins today. The EGF build chains are realized with this portfolio.

Accordance with project plan themes and priorities

The priorities are the following:

Improving the foundations of the EGF engine

Providing two portfolios (i.e., enhancement of the EMF Generation, build chain portfolio) in order: 1) to provide a more substantial EGF component, 2) to provide the Eclipse community with valuable software factories, 3) examplify how to develop and use generation portfolios

APIs

Architecture

The general architecture of EGF is: 1) the EGF Engine extended by Engine Extensions, 2) extended by a set of generation portfolios.

The development process below displays how portfolios can be iteratively combined to create new factories and extensions.

The example below of an EGF factory shows a factory component which combines invocations to heterogeneous languages (e.g., Java, Ant, Jython) and tools (e.g., Jet, ATL) but homogeneously integrated in the framework of EGF.

Testing & Packaging

EGF uses a Buckminster-based system to build and promote versions. Each new build is tested at least with Eclipse 3.7 (Indigo). Core plugins are provided with dedicated test plugins checking their valid behavior. EGF is integrated into the Indigo Release Train since the M3 release. EGF is also part of the Amalgamation Modeling Package for Indigo.

Communities

EGF simultaneously: 1) joint Amalgam, 2) joint the Indigo release train, 3) started to blog on PlanetEclipse to promote EGF and EGF portfolios. Stats, from March 2011, confirms an average rhythm of 12/13 downloads of EGF a day.

EGF provides integration with languages and tools. Some of them are developed under the EPL licence (e.g., Acceleo, ATL) but others are incompatible with the EPL licence (e.g., Jython, JRuby). In order to fix this type of IP issue, EGF only provides integration with languages and tools respecting the EPL licence. For the other ones, a specific EclipseLabs project, the EGF portfolio project, was created to isolate and manage licence incompatibility.

Project Plan

The current project plan is available from here. Graduating to v1.0.0 for the Juno Simultaneous Release is planned. This next EGF version would include:

Improvement of the general quality of the existing components (e.g., bug fixing, user facilities)

Improvement of the generation workflow (sequential today)

Extension of the "Enhanced EMF Generation" portfolio to take into consideration topics such as CDO

Demonstration of the ability to support families of generations (with the target of supporting product lines later)

Increase of the scope of integration of new languages and tools for interoperability in the generation workflow