EclipseCon Europe 2013 Day 2: Wonderland
Hi again! An intense day, as I was at the Sirius booth I did not attend all the talks I was planning to but here is a sum-up of what I saw. Quite a lot of impressing technologies today, the Oculus Rift was definitely an attractive attraction, a shame I did not have a chance to test it.
Scaling Pinterest (Marty Weiner)
Marty shared his experience in how to quickly make your software scalable. Pinterest, a web-platform, had only a few users and 3 developpers in March 2010 and gazillions of views every day in April 2012.
EMF ‘n’ Compare: Rescue Rangers (Mikael Barbero)
Mikael took us to a journey in Model comparaisons, showing how can EMFCompare compare, detect conflicts and merge your models.Based on day-to-day use cases, the talk was composed of 3 demos:1. Comparaison of 2 ant files. We discovered:- how can EMF Compare be automatically plugged to detect differences in XML files in a nice graphical way, instead of having to handle text comparaisons. Everything is integrated in the Eclipse Team Provider UI.- With the appropriate EMF bridge allowing us to raise the level of abstraction (and define concepts like targets, imports…)., the differences are way easier to understand as they use semantic concepts.
2. Detect binary compatibility breaks in our Java code. It would be great to have a tool allowing to compare 2 snapshot of a java code and detect only API breaks. With the appriorate EMF Bridge allowing to represent java projects as models, EMF Compare allows us to provide custom filters through extension points. Here we use a filter that only shows all the changes that actually break the API. I did like that Mikael did not just show an end-user demo, but actually taught us how to implement such filters through EMF Compare API.
3. Incremental transformationWe often define transformations on our models (for instance to transform our business model in a Database-oriented model).Mikael showed us how can we use EMFCompare API to define incremental transformations so that if you convert a business model B1 into a database model DB1, if you modify B1 you don’t have to relaunch all the comparaison but smartly transform only the elements that have not been created in DB1. Smart, efficient, and a good way to show how can we use EMFCompare API in standalone programs.But we still have a lot of corner cases (rename table keys when renamming the table…). Moreover, the database model may not be the direct result of a transformation (if users directly edit this database model).That is when conflict comparaison comes into play.
Mikael concluded by showing another example of customization that we can bring to EMFCompare (such as filters): the graphical comparaison.One of the EMFCompare bridges provide new graphical viewers to see the changes you made on Papyrus diagrams directly on the diagram viewers and not from a tree view. The audience was impressed :) Very interesting Q&A afterward, to sum up it was a great talk.
Statisfy your Requirements - Before your even know you have them (Eike Stepper) Eike is known to make great talks. It was the case that time too :)After having created a Metamodel according to a fake customer needs, Eike listed 10 reasons for which we were not quite ready to deliver, and for which CDO provides answers (I regrouped some of them):1. Persistence: CDO allows to store your models inside a database (of course the physical back-end technology is up to you: PostgreSQL, MySQL, DB4O, MongoDB…). CDO is compatible with several protocols so that your application can “talk” with the CDO Server (tcp, http).2. Transactions: CDO makes sure that all your model modifications occur in ACID transactions. If all your changes are accepted then they can be committed, otherwise you cannot commit a partial and invalid set of modifications.3. Collaboration: CDO provides a real-time notifications mechanism, so that when some user saves changes he made on a model element, all the other clients manipulating that element can be notified & updated in real-time. Of course there is a conflict resolution mechanism.4. Scalability: CDO provides Data Transfert Objects allowign to get rid of the strong references between model elements. This allows to garbage collect EMF objects and hence handle big models. Eike demonstrated this with a nice graph showing the objects loaded in memory, nice and clear.5. Thread safety: EMF is not thread-safe, which can be annoying if you want to do parrallel processes. CDO solves this by allowing you to open a transaction for each thread, which is cheap as all the Data Transfert Objects are shared by all transactions if identical.6. Auditing: CDO provides API allowing you to open “Audit Views”, i.e. a read-only vision of your model as it was at a certain date/commit. Eike made a demo with a slider allowing to go back in time and see the model state, Greater gods!7. Role-based security: I’ll not enter in details here as I coverred this topic yesterday.8. Fault Tolerance/Offline availability: if your connection with the server fails, CDO provides an offline mode support, allowing you to continue working, and commit the changes whenever the master Server is available again.Interesting Q&A, that allowed us to talk about the Query mechanism (to quickly query your whole database in OCL, SQL or your owns Query handlers).I’m damn proud of being a commiter on this awesome projects, and hope that I’ll help make it even better in the future :)
Sirius by Example (Stephane Bonnet, Pierre-Charles David, me)
The talk went well, I invite you to read the slides and visit Sirius website if you want more news about this new awesome eclipse project :)