vendredi 26 mars 2010

I'm a poor, lonesome cowboy ..

I'm a long long way from home.
And this poor lonesome cowboy.
Has got a long long way to roam ...

That's right, EclipseCon 2010 is over, each year it gets better and better and leaving it is always a bit sad.
I'll use this blog post as a memento of my feelings and the things I noticed during this week:

  • Many people are using EMF Compare. That should not be a surprise as it provides a key feature for anybody working with models, but still it gives me a warm feeling :) The ECon attendees provided me a lot of very relevant feedback, among others it looks like scability is not so nice when one is using a big model. Don't worry, I'll work on that (In fact I already started) and you can expect a performance boost, even for the generic engine. More of that in a future blog post with figures.
  • People are now used to the idea of e4 is going to exist, it will provide new means for writting application, I also have the feeling that people understood that e4 is going to be what WE as a community, wants it to be.
  • ATL is definitely THE model to model transformation language, it's mature, and now thanks to William's work the tooling is a bit closer to the perfection.
  • CDO is one of the most amazing framework I had the change to use, it's quite unbelivable that such a small and slim framework can provides you such a power. You need years of engineering and professionalism to achieve this. congrats to the whole CDO Team !
  • I have a lot of hope for the Mylyn Review project, the approach is simple but perfect for people like me, it will just be "yet another key feature" of the IDE. In fact the whole Mylyn project is providing, as usual, innovations.
  • The Sharks Rocks ! They blasted the Dallas Stars ! And I guess I'll be more interested about hockey now :)
  • Pascal has not been abducted by aliens, he is still the same although being transformed in a Maven guy now.
  • Modeling is everywhere. It's just pervading on everything : from your IP Log to the next generation platform you'll rely on.
  • End users really appreciated the work I did on the modeling package, Here again, thanks for your feedback.
  • Xtext was everywhere, and will be a key asset for the upcoming IDE generation.
  • The Eclipse Foundation did a tremendous work for this event, and it' s been perfect ! Thanks again !
  • Acceleo is so powerful that many people expressed their wish to use it for their code generation needs : step one on the "taking over the world" plan is validated.
  • Nasa, Rockets and Robots are cool.
  • The Architecture Council is taking more and more initiative and Martin is doing a great job driving it.
  • Now that EMF is everywhere everybody wants to use EEF
  • Huge companies like SAP or Thales are building their tooling strategy around Eclipse - not only as a platform but also as a community.
  • I already said "No" to my manager at least two times !
  • Such a conference in an hotel can work, and it's actually even better than in a Convention Center, we have nice couch, a bar, it makes discussion way easier.
  • Having tutorials in the morning during the whole week is great, then you start smoothly, learn things and code : I can fill my addiction.
  • It's possible to create a conference program of high quality (the best I had in the previous four years to my opinion), with such a diverse community. Kuddos to Oisin !
I'm pretty sure I'm forgotting things, but anyway, I really need to sleep now...

In a nutshell : the best conference ever :)

mardi 23 mars 2010

Diff, Merge and Patch your Models with Helios

Ok, you're stuck at home, you are one of the numerous budget shortcuts victims ? You did not had the chance to come at EclipseCon ? Here is some kind of transcript of the talk I just gave:

This talk will tackle team-working with models. Once you use models in your development proces, they matters as much as the source code. Don't you want to be able to diff, merge or even patch your models just like with text files ?

The good news is that unlike text files models have a semantic structure defined thanks to their ecore model, as such we're able to semantically compare the models, comparing the serialization (XMI or other..) is often meaningless.

By the way I'm the project lead of EMF compare, the project has been contributed in Eclipse in early 2007, at that time many EMF adopters realized that this piece was missing in the Modeling ecosystem and this lack was often a blocker !

So here we are, three years later. EMF Compare - in the EMF Technology project at first- graduated and is now part of the EMF project itself !

Just like Transaction, Validation or CDO, Compare is one of the many pieces you can reuse as a framework, or just as a tool. Its focus is quite narrow : comparing, merging and patching any kind of EMF model, the later being an UML model or a domain specific one.

As we graduated we've been focusing on keeping stable API you can rely on. We really think that EMF popularity is highly due to the fact that depending on it is easy as it is completely forward compatible. Working nicely as a pure Java jar library is another key asset of EMF, we tried to stick to that for the Compare project: our framework can be used as a Java jar, not depending on Equinox or any extension point.

We could phrase the Eclipse IDE spirit in : be extensible, be customizable, be integrated. We are sticking to this motto too, you can extend or customize any part of the comparison process.

The compare and merge features are completely integrated with the Eclipse Team API. When you launch a comparison from the workspace or from an history, if the file is in fact a model, EMF Compare will be opened and will show you the differences, allowing you to merge, or switch back to the serialization diff.

Let's have a look on the tool through a demo. This demo goes higher and higher in coolness, as such it's starting by comparing an old fashioned UML model on a dying CVS Repository.

A bit more cool : comparing a domain specific model on a SVN repository.

Total coolness : comparing an XText DSLsemantically, merging it, on top of a GIT repository !

That's just the tip of the iceberg, EMF Compare has a few more features and is especially useful in a lot of contexts, rather than listing all these details I'll focus now on the inside, revealing you which kind of magic make this clock ticking.

As I said at the beginning, the good news comparing models is that we've got semantic information we're not comparing plain text. There is a drawback though: models are graph and as such being able to match similar graphs is a complex and tricky problem.

The first thing we have to do for a comparison is to match the elements from both versions of the model.

If you've got ID's that part is trivial, EMF Compare will use your ID's (either business one or technical ones). On the other hand if you don't, we are providing what we call the "generic match engine", this engine uses a few statistical metrics to match the elements.

For a given element this engine will extract it's type information, the content values, its relations with other elements and its name if we can detect one. Each piece of this extraction will be compared with other elements to compute a similarity coefficient, from this one we can try to get closer and closer to the perfect match.

Once this engine has done it's job, it provides a Match Model grouping all this information and weaving the other models.

It gets more complicated, (and then more interesting) when using source control management systems. Then you have to match three versions of a model: yours, the remote one, and the common ancestor between those versions.

To do so we builds two match models, between your local version and the common ancestor, then between the remote version and the common ancestor, and we combine those two match models into one, weaving the three models altogether.

At this stage it should be obvious that the faster the match engine is, the faster you'll get a result.

To be honest the generic match engine is not so fast, having little clue about the models it's matching it spends a lot of time browsing the structure, trying to match things which probably have no possibilities of being the same..

Being aware of that we eased the definition of your own match engine specific to your Ecore model. In doing so no doubt you'll get better results and way faster.

Let's take a step back. What are we trying to do ?

We are trying to change two versions of a graph into a set of events, in reality we are trying to re-construct "a posteriori" the history of the graph: what changes have been made to transform the original one to the new one.

Match computation is done by the Match Engine, the Diff one by the Diff Engine. This processor has to provide a Diff Model from a Match Model.

In fact, when you have the MatchModel, deducing the DiffModel is not a huge task, you basically have to browse the matched elements, checking for changed attributes and reference, and then create for each "unmatched element" the corresponding deletion or addition event.

Here again, you can plug in your own diff engine, and you can even define your own diffs specific to your formalism. Instead of having a "stock value changed from 12 to 34" event you can define yours as being "stock value has been increased from 12 to 34" and even aggregate several atomic diffs in a single top-level one.

Being a first class model itself, the diff model can be leveraged through model to model or model to text transformation to publish the changes to another format.

Now you should have a basic understanding of what EMF compare is trying to solve and in which way. We've seen that stability both in term of API and code was our primary goal right now but does that means nothing new is being done in Compare ?

For Helios we fixed many issues thanks to the community feedback, support for fragmented models and matching of referenced resources has been greatly improved.

The primary feedback is bug reports, but we also had quite a few contributions among those a new API to scope the matching process and a whole new set of plugins to create model independent diffs resilent to transformations in the model you want to apply the diff on.

So many things to discuss in such a short time frame.
Give it a try, EMF Compare is part of the Eclipse Modeling Platform SDK, download the package and you're done.

I would be happy to discuss with you, either IRL or through electronic means. Please uses the EMF newsgroup, the bugzilla or the #eclipse-modeling IRC channel on freenode. We're also available and new trendy channels like Twitter : @bruncedric.

Want's more ? Have a try downloading the Eclipse Modeling Package !

Modeling Project Runaway : ATL

"Modeling Project Runaway" was the talk you had to attend to get a vision of what is going on in Eclipse Modeling and more especially how lively this community is. The talk was even too short for EEF to get in but this project had his own talk yesterday.

Ignite style event, I did a quick demo of the new features in the ATL tooling. ATL is a model to model transformation language, it's incredibly powerful and usable in many different contexts. It allows you to transform information from a formalism to another one or to refine a model.

ATL has been around for quite a long time in Eclipse and has proven to be quite mature. Nevertheless great new feature have been added this year !

The tooling editor has been reworked providing now content assist every where, hover tooltips, "open declaration" and even code templates to quickly get started.

A long awaited feature is the "refining mode", in this mode the transformation is directly applied on the loaded instances of the model, you can then use an ATL transformation as a refactoring script and integrate it in your editor, before the synchronization could only be on the Resource level, forcing you to save and then reload the model.

Acceleo is providing you a Java API to launch your code generation, ATL is now providing you the same thing ! It's then trivial to launch ATL within any other tooling, just use the Java API, furthermore you can even launch it as a standalone Java application !

Demo time !

By the way ATL is one click away from you, just install the Helios modeling package and use the discovery UI to try this out !

mercredi 17 mars 2010

Eclipse Amalgamation 2.0

I'm waiting for a nightly M6 Modeling package to get downloaded on my laptop. As I've got a few hours to wait getting it I'll use this chance to give news about the Amalgamation project.

It's a well known fact that the Eclipse Modeling Project is myriad of small focused projects, Kenn is working on sanity checks for each of those project, more than 50 ! The benefits of this organization is that you can choose which bits you want to use depending on your use case but this flexibility come to a cost: making sure there is no overlap between proposals is often tricky and making sure those projects taken as a whole are providing a consistent platform is even more challenging.
A few years ago the Eclipse Modeling Amalgamation project was created and started by providing Eclipse distros tailored for specific needs and an "All Eclipse Modeling in One Package" distro through EPP. At some point the project staled and during last October a new team gathered and I've been designated project lead.

Most users and adopters are consuming the Eclipse Modeling Project through the EPP package, one don't have to figure out how to browse and install the projects you need. But this package was including all of modeling, as such it was huge, cluttered, un-tested, and nobody could really use it.
Downloads of the package felt down and the Eclipse Modeling project has a whole probably suffered from that.

My first objective for the Amalgam project was to update the package to get a sane one : changing our big messy package to an Eclipse Modeling SDK composed of the core runtime components and framework :

EMF core and its low UI profile companions : XSD, Transaction, Validation, Mint and compare

Graphical support with GEF and GMF runtime

OCL and UML2 : you can't really live without those standards.

CDO : it brings EMF - as a framework - to another level with collaborative editing and remote model repository.

This set of features + Eclipse SDK and Mylyn is composing our new platform, and we went from almost 400 to 250Mb. It's still big but hey, it's an SDK !

Still, many more great and useful components are built within the Eclipse Modeling Project and getting those to install was painfull. Mylyn was already providing a solution to that : a discovery UI :

In the meantime during the year this discovery support has been moving from Mylyn to P2.

As a user, having this UI makes my life easier, I can install components without even thinking about where I'll find the pieces and P2 is taking care of the requirements and consistency of my Eclipse installation, I'm looking forward to hear from your feedback about it when the M6 Package will be out.

This modeling platform is a basis we'll test and polish to get a streamlined user experience and we'll have to organize ourselves to make sure to release a tested, used, and clean platform. The Eclipse Modeling Panel will be a perfect time to give your opinion and feedback, do not miss it, it's on Monday !

jeudi 11 mars 2010

Its time already !

You're a computer science or engineer student, you love open source and would like to be involved in one of the greatest OSS project of all times ?
You're lucky, the Google Summer of Code 2010 is starting and is a perfect moment to join the Eclipse community.

If you're a commiter you can throw your idea on the wiki page, if you're a student contact the development team or provide your own ideas.

I provided a few of idea, here are those who got most of the votes at Obeo :

EMF Shell, This one is geekish : providing an environement with "shell like" commands to manipulate models. One would expect wc to count model elements, grep to filter models elements, cd to move within models, ls, sed to substitute, and all the other commands which could be useful in this context.
Haven't you ever dreamed to filter the opened view of your e4 modeled workbench using grep ?

Now that SWT-QT seems to be a reality, I can't prevent myself to dream about a GEF port on QT. QT has amazing graphical capabilities and provide the best performances on every platform around there. GEF is great, but is it ready for next gen graphical modelers ?

Go and have a look on the demos. That could be a game changer for graphical modeling let's call it CuteGEF :)

Of course Modeling in general, EMF Compare and Amalgam topics are on the wiki page, you have plenty of subjects to choose from !

Please, if you're a student and are interested in participating to the GSOC, do not wait ! Work with the projects to prepare your application !

jeudi 4 mars 2010

Ecore In Colors (In Motion)

Speaking about Ecore In Colors, If you're interested in here is a small flash demo showing the kind of interactions you can specify in a Viewpoint Specification Model and the resulting modeler you get :

By the way, Freddy convinced me to join the Twitter community (at last! ) its going on here.

lundi 1 mars 2010

Unusual Propulsion System

It's been more than four years now since I joined the just founded Obeo company and started to be involved in the Eclipse Community. I had the chance to join one of the few French companies integrating the Free Software and OSS movement in its business model and plans.

At that time most companies were keeping an eye on this movement from the side, not getting involved more than by consuming what the movement was producing - that's all.

My choice was not a hard one at that time, it wasn't hard to find a job as a software engineer but it was hard to find a FOSS focused job within a company having realistic plans. Any outcome for this journey would have taught me a lot.

Since then, the river froze for many around the world, every day is providing evidences of this.

But the river being frozen and nobody going there doesn't mean you should not or could not go !

An unusual propulsion system can lead you to amazing places.

Despite the cold and without any kind of VC's heating, Obeo grew from a 4 men company to a 40 men one.

The Eclipse/Obeo relationship is a symbiosis. Obeo's involvement in Eclipse is huge : we're the unique french company being a strategic member of the Eclipse foundation, leading Amalgamation, Acceleo, SCA Tools, EEF, EMF Compare and working extensively on other key components like ATL, GMF, OCL, Papyrus, SWTBot. We're doing so in a completely open and transparent way : contributors among others.

We're working a lot for the community, but we are earning back in many ways : Eclipse is our unusual propulsion system. Thanks to everybody, from the users to the contributors and the foundation staff for making such a journey possible.

Thanks to Jean-Luc for the awesome Kayaks trek and pictures :)