This page provides the required Docuware for the EGF v1.0.0 Release and Graduation Review, as part of the upcoming Juno Simultaneous Release.
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.
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 EGF Engine defines the core model of EGF (e.g., task, factory component, or pattern) and provides core behaviors of EGF (e.g., dynamic execution).
Support of languages (e.g., Java task, Ant task) and tools (e.g., Acceleo, ATL, JET), or any further extension, are engine extensions.
A generation portfolio is a consistent set of factories with a generation objective, reusable and valuable for projects.
The EGF project provides two default generation portfolios:
- The first one is an enhancement of the EMF Generation which enables to customize the EMF generation.
- 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
The complete EGF documentation is available from the EGF Wiki page:
- Project's general information
- Documents and presentations
- Tutorials and use cases
- Download information
- Portfolio information
- Complementary resources and useful links
The EGF Javadoc is available here (from the Juno build).
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 of heterogeneous languages (e.g., Java, Ant, Jython), tools (e.g., Jet, ATL), and factory component.
Testing & Packaging
EGF uses a Buckminster-based system to build and promote versions.
Each new build is tested at least with Eclipse 3.8 (Juno).
Core plugins are provided with dedicated test plugins checking their valid behavior.
EGF is integrated into the Juno Release Train since the M1 release.
EGF is also part of the Amalgamation Modeling Package for Juno.
No EGF component is deprecated so far.
EGF bugs can be found here on Bugzilla.
EGF does not implement any standard.
EGF intends to conform to the User Interface Guidelines.
EMFT EGF is a "+3" project in the simultaneous release
Schedule respected by EGF is the following:
- M2 09/26/2011
- M3 11/07/2011
- M4 12/12/2011
- M5 01/30/2012
- M6 03/19/2012 (API Freeze)
- M7 05/07/2012 (Feature Freeze)
- RC1 05/21/2012
- RC2 05/28/2012
- RC3 06/04/2012
- RC4 06/11/2012
- Juno 06/27/2012
EGF was presented at different conferences during 2011-2012:
Communication on PlanetEclipse is used for the EGF news.
EGF is identified as a component of the Polarsys IWG.
The two EGF portfolios was selected to attract the modeling community with the EMF Generation extension, and users from other communities with the Build portfolio.
EGF stats are provided in the following table.
The Eclipse IP Process has been strictly followed and all plugins contain the appropriate about.html and license files.
The EGF IP Log is available from http://www.eclipse.org/projects/ip_log.php?projectid=modeling.emft.egf EGF is released under the EPL licence.
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 manage 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.
The current project plan is available from here. 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