Epsilon is a family of languages and tools for code generation, model-to-model transformation, model validation, comparison, migration and refactoring that work out-of-the-box with EMF and other types of models.

Who is using Epsilon? Download »

Epsilon Object Language (EOL)

An imperative model-oriented scripting language that combines the procedural style of Javascript with the powerful model querying capabilities of OCL (more...)

Epsilon Transformation Language (ETL)

A rule-based model-to-model transformation language that supports transforming many input to many output models, rule inheritance,lazy and greedy rules (more...)

Epsilon Validation Language (EVL)

A model validation language that supports both intra and inter-model consistency checking, and provides out-of-the-box integration with EMF & GMF editors. (more...)

Epsilon Generation Language (EGL)

A template-based model-to-text language for generating code, documentation and other textual artefacts from models. (more...)

Epsilon Wizard Language (EWL)

A language tailored for interactive in-place transformations on model elements selected by the user. EWL provides out-of-the-box integration with EMF & GMF editors. (more...)

Epsilon Comparison Language (ECL)

A rule-based language for discovering correspondences (matches) between elements of models of diverse metamodels (more...)

Epsilon Merging Language (EML)

A rule-based language for merging models of diverse metamodels, after first identifying their correspondences with (or otherwise) (more...)

Epsilon Flock

A rule-based transformation language for updating models in response to metamodel changes (more...)

EuGENia

EuGENia is a front-end for GMF. Its aim is to speed up the process of developing a GMF editor and lower the entrance barrier for new developers. (more...)

Exeed

Exeed is an enhanced version of the built-in EMF reflective tree-based editor that enables developers to customize the labels and icons of model elements (more...)

ModeLink

ModeLink comprises 2 or 3 side-by-side EMF tree-based editors, and is very convenient for establishing (weaving) links between different models using drag-and-drop (more...)

Workflow

Epsilon provides a set of ANT tasks to enable developers to assemble complex workflows that involve both MDE and non-MDE tasks (more...)

Human Usable Textual Notation

Epsilon HUTN is our implementation of the OMG standard for representing models in a human understandable format. Write models using a text editor with a Java-like syntax (more...)

Concordance

Concordance monitors and maintains an index of cross-model EMF references, and a platform for exploiting that index. We provide Concordance clients that report and reconcile broken cross-model references. (more...)

EUnit

EUnit is a unit testing framework for model management tasks. Tests are written by combining an EOL script and an buildfile, and can be used to test Epsilon and non-Epsilon model management programs. (more...)

One syntax to rule them all.

All languages in Epsilon build on top of a common expression language which means that you can reuse code across your model-to-model transformations, code generators, validation constraints etc.

Integrated development tools.

All languages in Epsilon are supported by editors providing syntax and error highlighting, code templates, and graphical tools for configuring, running, debugging and profiling Epsilon programs.

Documentation, Documentation, Documentation.

More than 30 articles, 15 screencasts, 20 examples, and a 238-page free e-book are available to help you get from novice to expert.

Strong support for EMF.

Epsilon supports all flavours of EMF, including reflective, generated and non-XMI (textual) models such as these specified using Xtext or EMFText-based DSLs.

No EMF? No problem.

While Epsilon provides strong support for EMF, it is not bound to EMF at all. In fact, support for EMF is implemented as a driver for the model connectivity layer of Epsilon. Other drivers provide support for XML, CSV, Bibtex and you can even roll out your own driver!

Mix and match.

Epsilon poses no constraints on the number/type of models you can use in the same program. For example, you can write a transformation that transforms an XML-based and an EMF-based model into a MetaEdit+-based model and also modifies the source EMF model.

Plumbing included.

You can use the ANT Epsilon tasks to compose Epsilon programs into complex workflows. Programs executed in the same workflow can share models and even pass parameters to each other.

Extensible.

Almost every aspect of Epsilon is extensible. You can add support for your own type of models, extend the Eclipse-based development tools, add a new method to the String type, or even implement your own model management language on top of EOL.

Java is your friend.

You can call methods of Java classes from all Epsilon programs to reuse code you have already written or to perform tasks that Epsilon languages do not support natively.

All questions answered.

The Epsilon forum contains more than 4000 posts and we're proud that no question has ever gone unanswered.

We're working on it.

We've been developing Epsilon since 2006 and it's not going away anytime soon.

Ready to use distributions.

Configuring Eclipse can be a pain, particularly for new users. That's why we provide complete Eclipse distributions which contain Epsilon and all its dependencies.

* Icons by http://dryicons.com