MDE Collaboration

Temporality and Ergonomy in the Cloud, the GenMyModel Solution


Vincent Aranega, Axellience, France

Presentation Anatomy

  • GenMyModel: Quick Overview

  • Present (concurrent)

  • Past (non-concurrent)

  • Future & Future Work

  • Finally

skel

Collaboration and MDE?

vincevega
  • Modeling together: concurrent model modifications

  • Modeling together: non-concurrent model modifications

  • "Multi-Level" collaboration

GenMyModel: Quick Overview

Aug. 2012 - Web-based modeling

Oct. 2012 - Model transformation chain engine

Early 2013 - Model versioning

Mid. 2013 - Collaborative modeling

Feb. 2014 - User Model transformation chain from Github

Sep. 2014 - Reverse engineering

GenMyModel: Technos

Client side
  • GWT-2.7 (soon 2.8, perhaps 3.0!)

  • EMF and EMF-GWT

  • Antlr4-GWT

Server side
  • Tomcat Server

  • EMF

  • QVT-o, Acceleo…​


NO JavaScript (almost)

Present

Scheduling the present

Collaboration & Ergonomy Problem

  • How to work on the same resource?

  • Which collaboration protocol/topology?

  • How should I modify my model?

  • Should I be able to make mistakes?

User and Transformations

User

Real person performing "atomic" model modifications on a same resource (create…​)

In-place (in-out) M2M

Program performing "complex" model modifications on a same resource (set of create…​)

User and inout model transformations are not so different

Atomic modifications

  • Partially based on EMF commands (API Rest & client exec)

  • Single modification/command (set, add…​) on a model element

setadd

Group of modifications

  • Gather many single Atomic modifications at once

  • Regarding the domain model, a group can be considered as "Atomic"

groups

Collaborations topology

  • Conflict resolution is (kinda) easy

Concurrent modifications

  • The client "ask" for a modification → server plays it first. If it approve, the modification is sent to each client.

User and Transformation again

  • manual modifications VS the shell (OCL-ish based M2M)

Conflicts?

  • Ressource access → mutual exclusion

  • Ergonomy → no client lock (transparent)

Concurrent vs Non-Concurrent

Past

Understand the past

Collaboration & Ergonomy Problem

  • How can I see past modifications?

  • What information do I need?

Fine grain traceability

History

history

In the real world of true real reality

Back to reality

289.604 users, 345.127 projects (281.845 active projects)

Back to reality

Security

Performances

Cost

  • model access

  • modifications

  • code

  • network latencies

  • server load

  • server (performances)

  • db (backups…​)

Solutions

cloud & REST API → at least 3 machines (1 Main API, 1 Editor, 1 Generation Engine) & adaptive configurations

Efficient Collaboration?

handshake

Future (work)

Tame the Future

  • Sometimes main version is the holy model (correct semantic)

  • Need a way of modifying elements without touching the holy model

holymodel

Branch Management

  • Give the proper tools to handle future modifications

  • Differentiate actions with a domain specific semantic (ex: ui moves)

Multi-level Collaboration

  • Collaboration on same project but different resources

Soooo…​ git? (1/2)

Present

share modification

  • git commit/push

  • git pull

Past

view history

  • git lg

Soooo…​ git? (2/2)

Future

work on branch

  • git checkout -b

  • git commit/push

  • git merge(tool)

Modifying the Past

build a new present

  • git branch b sha1

  • git commit/push

  • git merge(tool)

Yes, but

  • Always atomic modifications (user)

  • More complex modifications (transformations)

  • Semantic-full traceability

  • Opens new perspectives for Multi-level Collaboration

Finally

  • API for collaborative modeling based on basic commands

  • User ~= Transformation

  • Will release some parts as open-source (WIP)

  • Large public models DB ready for analysis (used by some Universities)

Questions?

obama listens Putin listens