2. What is Epsilon?
● Family of programming languages for model management:
○ Model querying and manipulation (Epsilon Object Language)
○ Model-to-text transformation (Epsilon Generation Language)
○ Model-to-model transformation (Epsilon Transformation Language)
○ Model comparison, merging, migration, pattern matching, validation…
● Open source project (https://eclipse.org/epsilon)
● Dev tools based on the Eclipse IDE
3. You watched this video…
You feel like trying this thing out for a spin - what to do?
4. Steep learning curve ahead
“I heard about this thing called MDE, what do I need to do?”
1. Install Java + Eclipse + Epsilon and make them play nice
2. Learn the complex UI in Eclipse (editors vs views, perspectives,
workspaces, projects, launch configurations…)
3. Learn the EMF complexity (metamodels vs models, EPackage
registration, reflective vs generated editors…)
4. Still here? Now you get to actually learn Epsilon!
5. Do we need all this
complexity?
● Webdev
community has
CodePen,
JSFiddle, etc.
● Try new things,
share them
● Real projects
come later
11. Educational use
● Easy sharing of half-done exercises to be completed
○ Much easier than “import this zipped Eclipse project to your workspace”
● Minimal (non-)working examples
○ If a student struggles with some part of an exercise, they can isolate the failing
part in a small Playground project and send it to us
● Examples during lectures
○ If a question comes up, whip up the closest Playground example and
demonstrate to students
○ After the lecture, the link to the example can be shared with students
12. High-level design decisions
● Textual input is easier to implement effectively
○ All editors come with syntax highlighting
○ Errors are limited to console view for now
● Graphical visualisations help students confirm their understanding
○ Can produce HTML code and use many good JS-based viz libs
● Standalone, not based on web-based IDE like Theia
○ Educational purpose: minimise complexity and distractions!
● Examples are configurable via JSON and an examples server folder
13. ● For metamodels, we chose Emfatic:
○ Common in Epsilon docs - Xcore / OCLinEcore could have been used, instead
● For textual models, we chose Flexmi:
○ Raw JSON / HUTN is not as forgiving as Flexmi’s “fuzzy” parsing
○ Xtext / Langium would require generating code based on metamodel
● Graphical views were kept to read-only Graphviz drawings:
○ GLSP / Sirius Web could have been used, but would increase complexity
○ Not sure how to adapt serverless approach to the above technologies
● Model management is based around Epsilon at the moment:
○ Keeps tech stack contained for the time being - could look at ATL/Acceleo
Technological alternatives
14. Scalable deployment via FaaS
● Playground is available 24/7:
“serverless” approach is
inexpensive and scalable
○ UI is static HTML/CSS/JS
○ E*L scripts / viz run in
stateless GCF functions
spun up/down based on
user demand
● /short-url uses Google Cloud
Storage to allow sharing
15. On-premises hosting: Docker
● If you want your own Epsilon Playground:
○ https://github.com/epsilonlabs/playground-docker/
● You can provide your own examples
● “Share” still requires Google Cloud Storage
● Docker image can be used with Google Cloud Run as well:
○ Instead of static webserver + FaaS, GCR simply spins up/down
Docker containers and distributes load
○ You only pay for “real” CPU time
○ Trivially scalable as the API to invoke E*L scripts is stateless
16. What’s next?
● Domain-specific visualisations for models
○ Beyond the generic class and object diagrams we have now
○ Looking at Eugenia-style annotations on metamodel concepts
● Supporting more Epsilon languages
○ ECL: model comparison
○ EML: model merging
○ Pinset: tabular dataset generation
● Smoothen the transition to a full IDE-based project
○ For now, “Download” button can generate Maven/Gradle projects on the fly
○ Future idea: migrating samples to cloud IDE (Gitpod / Theia?)
17. Thank you!
● Contact us at:
○ Dimitris: @kolovos / dimitris.kolovos@york.ac.uk
○ Antonio: @antoniogado / a.garcia-dominguez@york.ac.uk
● MDENet will host a panel on teaching modeling:
○ “Using MDE tools in teaching MDE: the good, the bad and the ugly”
○ November 8th 14:00 BST
○ Join our community: https://community.mde-network.org/