Sirius 3.1

Stronger, Faster and Smarter Diagram Editors

Presented by Maxime Porhel / @mporhel

Slides published at http://mporhel.github.io/slides/

  • Focused on domain specific modeling technologies
  • 50 people working on products and customer projects
  • Services: training, consulting and Open Innovation

“Sirius is an Eclipse project which aims at providing specific multi-view modeling workbenches through diagram, table or tree editors based on EMF.

Users can easily define their own modeling workbench, even with very little technical knowledge of Eclipse, while still being able to deeply customize it when needed.”



Stronger

A few relases

Version Date Closed Feature Requests
1.0.0(Luna) Jun 14, 2014 100 2
1.0.1(Luna SR1) Aug 14, 2014 20 -
1.0.2(Luna SR2) Jan 28, 2015 9 -
2.0.0 Oct 14, 2014 113 27
2.0.1 Nov 14, 2014 2 -
2.0.2 Dec 14, 2014 15 -
2.0.3 Jan 15, 2015 16 -
2.0.4 Feb 15, 2015 8 -
2.0.5 Apr 15, 2015 8 -
2.0.6 Jun 06, 2015 2 -
3.0.0(Mars) Jun 14, 2015 219 35
3.0.1 Sep 10, 2015 14 -
3.0.2(Mars.1) Sep 15, 2015 3 -
3.1.0 Oct 15, 2015 82 17
3.1.1 Oct 29, 2015 5 -
Total 616 81

To sum up

  • June 2014: 1.0.0(Luna)
  • October 2014: Sirius 2.0.0
  • June 2015: Sirius 3.0.0(Mars)
  • October 2014: Sirius 3.1.0

Upgrading

  • The runtime handles .odesign and .aird models for you
  • Easy process :
    1. Check release notes for user-visible changes.
    2. Change update-site, versions
    3. In case of impacting API change, re-check the release notes for instructions
(EcoreTools and UML Designer had no impact whatsoever)

Query languages

What is the type of var:source ?

Type analysis within the Action Language

Requires stronger type information from Interpreters

  • Reference support in aql:
  • Implemented in feature:, var:
  • Improvements in [/]
  • No support in legacy <%%> and ocl:

Definition Tooling : demo

  • Workspace class loading is BACK
  • Image path validation and selection wizard
  • Quick Outline
  • Prioritized sub menus
  • ...

Faster

Goal : 1 Million Model Elements

Constant improvements

Time (sec) Heap (Mb) Time Variation Heap Variation
Open Huge Project 80 276 -31,00% -20,00%
Open Big Class Diagram 11 24 -54,00% +20,00%
Refresh Big Class Diagram 0,731 0 -18,00% 0,00%
Save After Diagram Change 26 0 -23,00% 0,00%
Close Diagram 0,1 -6 0,00% 0,00%
Close Project 55 294 0,00% 0,00%

Big operations

  • Models Footprint, ~20% improvement
    • use of MinimalEObject
    • Colors transformed from full-blown EObject to Immutable DataType
    • detection and correction of leaks
    • reduce usage of Adapters
  • Save Strategy
  • Improvements in the Image cache...

Latency

  • Diagram Refresh
  • UI Runtime
    • Model Element Selection Dialogs for big models
    • Right-click latency in the explorer
    • Better integration with EEF (property views)
  • Tables
    • SWT Refreshes now done as a batch
    • Table model refresh improvements

Acceleo Query Language

Implementation specifically tailored for the Sirius use case

  • Many variables for a given expression
  • null values are common
  • Navigation with many steps aggregating data
  • Interactive use : context is constantly changing
  • Complex or custom logic : Java Services
  • Predictable ordering and performance overhead .

Language Characteristics

  • You know OCL ? Then you know AQL
  • No implicit variables

    aql:name is invalid and become aql:self.name

    aql:self.eContents()->select(name.startsWith('A')) is invalid and become aql:self.eContents()->select(i | i.name.startsWith('A')

    self.referenceWithNoValue.someOtherAttribute has no evaluation error, and returns "Nothing"

  • Classic operations : filter, collect
  • Convenient operations : eInverse(), eResource()..

Not strictly compatible* with MTL

*: but a subset of MTL works for both

Implementation Characteristics

  • Small: 100 classes of non-generated code
  • Evaluation: fast and collect errors as it goes
  • Validation: strong and precise
  • Tiny dependency surface: ease integration and deployement in other contexts
  • Compliant with dynamic use cases
  • Extensible with simple Java classes

Queries engines -- Overhead bench

Experimental feature for Sirius 3.0.0

https://wiki.eclipse.org/Sirius/Update_Sites

Recommended query language for Sirius 3.1.0

  • in preference to Acceleo 3 or OCL
  • simpler for querying EMF models
  • more concise and very easy to learn
  • improved code completion
  • improved syntax errors detection
  • Still using <%%>: consider it
  • Using [/]: prepare your queries so that upgrading get easy

Demo

Me too !

  • Performances depends on your .odesign specification
  • Focus on queries wich would depend on the number of elements in the whole model
  • Measure*, Improve, Repeat *: Sirius embedded profiler is one click away

Smarter

Diagram User Experience

Resizing a container (1.0)

Resizing a container (2.0)

Positioning Things

  • Snap To Shape enabled by default for new diagrams
  • Snape To All Shapes mode (F4)
  • Snap To Grid now used when an element is created
  • Resize no longer change ports or children's location
  • Actions to distribute shapes
  • Action to reset the diagram origin

Edges Layouting (1.0)

Edges Layouting (2.0)

Edges label instability (3.0)

Edges labels stability (3.1)

Bi-directional link with editor

Selection after tool execution

Beautiful editors

Anchor on borders 1.0

Anchor on borders 3.0

Underlined and Strike-through style for labels

Customizable border style

Compartments

Experimental

  • Full blown "Mapping"
    • fixed or dynamic number of compartments
    • leverage queries

Compartments

Complete

  • Corner cases and polish for 3.1
  • Collapse

Compartments

Complete

Demo

  • Advanced Tutorial
  • Compartments Tutorial

Roadmap

2015 / 2016

3.0 released with Mars in June

  • VSM editor improvements
  • Better performance and memory consumption
  • Experimental Compartments feature
  • Experimental AQL query engine
  • Anchors on borders (image styles)
  • Underline and strike through

3.1 just released late October

  • Diagram UX improvements
  • Compartments feature complete
  • Bullet-proof AQL query engine
  • More performance and scalability improvements
  • Partial support for internationalization: all literal strings from the runtime

Potential Themes for Eclipse Neon

  • Better SVG rendering
  • Prefered side for ports
  • Customizable rich property views and edition wizards
  • Improve the i18n Story
  • Edges from/to list elements
  • Tighter integration with the workspace
  • Scalability, Performance, Headless
  • Your priority

Take Aways

  • Sirius : "State of The Art" modeling tools.
  • Join the ~15 new authors every month on the Eclipse forum
  • Obeo Designer Community Edition : all in one package

Used Sirius already ?

  • Get your entry in the gallery through Bug 448492
www.siriuscon.org

TO BE CONTINUED...

Presented by Maxime Porhel / @mporhel

Slides published at http://mporhel.github.io/slides/

Already available from https://www.eclipsecon.org/europe2015/