With the release of the new Acceleo stand alone front end for the compilation of Acceleo modules, I’ve started to work on a brand new maven integration in Acceleo.
Currently in Acceleo, if you need to build Acceleo modules with maven you have to use a Tycho based build with a java class generated by Acceleo to tweak the build (for example to register the metamodel(s) used in the modules). This Tycho based build will always produce an Eclipse plugin as a result.
The next major release of Acceleo will have a maven plugin dedicated to the compilation and it will bring several key improvements. Firstly, the new compilation front end brings a completely stand alone compilation. Those who want to build their Acceleo modules without having to build an Eclipse plugin will be able to do so. Secondly, this new front end support more complex project structures (with for example, multiple output folders in a same project). Thirdly, you will have the ability to contribute a class to influence the uris of the dependencies in the saved files (for example, change all the uris of the dependencies to other module to “platform:/plugins” uris that are more “eclipse plugin” friendly). Finally, it also features an improved resolution of the dependencies of a project with several options.
Your project will be able to have a dependency to Acceleo modules in another project (that should have been previously compiled). A valid Acceleo project is just a directory on the file system with at least one “source” sub-directory and one “output” sub-directory (no need of an Eclipse nature or anything like that).
This first solution is fine as long as you have the source code of the other modules but sometime you need to build something with the dependencies in jars. The maven plugin for Acceleo will let you declare a dependency to a jar containing already compiled Acceleo modules by using:
I have also put online the presentation that I’ve done during the Eclipse Modeling symposium on the new Interpreter view available in Acceleo 3.2. A video of this presentation during the symposium is available on Dailymotion.
On the latest day of EclipseCon Europe 2011, several presentations marked the day. Starting with the first european presentation of Mylyn Intent. Intent is a documentation tool letting you keep your documentation synchronized with your code and define validation rules to ensure that your work follows the development guidelines of your project. If you ever had a synchronization problem between your documentation and your code, you should give it a try.
I started the afternoon attending to Simon’s talk about Orion, the web based platform of the Eclipse Foundation. After a presentation of the state of the Orion project during which we saw its amazingly fast editor and how the Orion team fused concepts of IDEs and web based applications, we had a demonstration of how the self hosted mode can help debug problems and distribute fixes very quickly. I am looking forward for an Orion based debugger and it’s definitively a project on which we should keep an eye on.
After that, Martin Flügge realized a talk about Dawn, a framework used to create collaborative tools based on CDO. With a live demonstration of a collaborative diagram editor based on Dawn, Martin has presented how Dawn can help modeling tools to move easily a step further with real-time shared editing, conflict handling and locking. You can find Martin’s slides about dawn on the CDO website.
And finally, Mikael showed us the latest features of EMF Compare. With the introduction of graphical comparison of diagrams, protection of the consistencies of models depending from one another (such as during a commit) and a new comparison engine dedicated to UML models, EMF Compare strengthen its place as a must have tool in the development environment of any Eclipse modeling developer.
This edition of EclipseCon Europe was concluded by a closing session during which everyone had the opportunity to thank the people who worked hard organizing this EclipseCon for their great work!
During this second day of the EclipseCon Europe, several great talks were given, I won’t describe all of them but I’ll talk about some innovations from the modeling community that were presented yesterday.
The collaborative modeling talk highlighted several concerns that need to be handled by the modeling community to build a modern modeling development environment.
As such, we’ve seen some of the new features available in EMF compare and EGit to keep the consistency of models linked one to the other during commits. We also had a demonstration of the upcoming graphical comparison.
Among the many impressive technologies coming soon in Eclipse, the demonstration of the modeling integration with Mylyn was truly impressive. For those who didn’t see it previously, Mylyn’s context based workflow can now integrate Eclipse Modeling diagrams making elements disappear if they are not used for the current task. It will bring a new breath of fresh air to the graphical modeling in Eclipse.
We’ve also seen how the modeling community is getting ready for collaborative modeling with a presentation of the collaborative graphical editor of Dawn. Those initiatives will give end users the ability to edit the same diagrams in real time just like in Google Doc.
In the afternoon, Alexander has presented a great Xtext integration in GMF, GEF and JFace. It allows GMF diagrams to embed the Xtext tooling and while I believe that the Xtext tooling in a GMF editor is a bit overkill to handle the expressions visible in a diagram, the equally technically impressive JFace integration is definitely on my wish list for a future release of EEF as this level of tooling is definitely needed to edit expressions in a view.
One of most awaited talk for the modeling community was of course the official presentation of Xcore and it didn’t disappointed. We had the opportunity to catch a few glimpse of Xcore before but this presentation has demonstrated how a textual based approach to define the metamodel could help the modeling community move forward by not only defining metamodels as just data structure schemas but as real skeletons that define the structure and its behavior.
As an example, we currently can define in Ecore derived attribute that are computed from other attribute but we can’t define how those derived attributes are working in the metamodel, we have to change the generated code for that but with Xcore you can define the metamodel and embed the algorithm used to compute the value of this attribute thanks to a textual approach. For those who want to have a closer look at Xcore, you can grab it on Ed’s Github account.
Finally, I really liked Frederic's presentation of an eclipse modeling based studio for safety engineering. With a 20 min long demonstration, we could see an end user environment built on Eclipse that displayed a very efficient graphical editor that hides all the complexity to the end users while bringing them all the power of EMF.
Yesterday started the 2011 edition of EclipseCon Europe. It was a great opportunity to attend very nice talks. Unfortunately everybody cannot be there so here is a small description of the talks that I’ve seen along with links for those who want to know more.
As an Eclipse modeling guy, I’ve started the day with the EMF tutorial in which newcomers to the EMF world could learn what EMF is and taste several key EMF based technologies available in the eclipse foundation thanks to well detailed explanations from the Eclipse Source guys and speakers from the modeling community. For those who want to try this tutorial, its content is available online here and there along with the slide of the presentation.
After a good launch and an interesting keynote from David Cuartielles, I went to the virtual EMF talk. During this talk, Hugo and Gregoire have presented a new technology to manipulate several EMF models with different metamodels as one model seamlessly. After a good explanation of the concept behind virtual EMF, we had the opportunity to watch it during a demonstration using MoDisco. You can already try virtual EMF and send them your feedback by grabbing it on Eclipse labs.
Just after this talk I had to present my talk on Acceleo. Where I’ve presented how Acceleo can be used to create and maintain easily a code generator for the language of your choice. I’ll put my presentation online as soon as possible for those who missed it even if the Eclipse Foundation seems to use a very good system to register the talks and I hope that we will be able to see that way the talk we missed later.
Then I went to Jan’s talk on graphical editing in which he presented an interesting DSL based approach to create a diagram editor. He showed how starting with an EMF model, in his case in an Xtext DSL, you could use a DSL to create the mapping between your model elements and the elements displayed in your diagram and how, in a style sheet DSL, you could define the design of your diagram. With few lines of code, you end up easily with a working diagram view. For those who want to give it a try, go to Jan’s blog and github account.
This first day was concluded by a keynote from John Swainson giving us the story of the birth of Eclipse and of course a great party to celebrate the 10th birthday of Eclipse.
In this version, you will be able to see several performance improvements in the tooling and the compilation along with a brand new view in the Acceleo perspective, the Interpreter.
The Interpreter view will help you create and debug your generators by letting you evaluate on the fly Acceleo expressions. You can find a detailed presentation of this new view on Laurent’s blog or in video on youtube.
For those who want to know more, I will present a talk about Acceleo next week during EclipseCon Europe at Ludwigsburg.
Better Ant and Maven support
Acceleo 3.0 generates the necessary Ant file to compile an Acceleo project thanks to the PDE build system. Now Acceleo 3.1 adds on top of this, two Ant files for the compilation and the launch of an Acceleo generation out of Eclipse. We are also introducing the generation of the pom.xml for a tycho/maven based build of Acceleo projects.
New serialization option
Code Generation 2011
Three weeks ago I was at Cambridge for Code Generation 2011. The conference was great and I had the opportunity to meet a lot of interesting persons. I also presented a talk about Acceleo 3 and Obeo Traceability 2. The presentation has been created by re-using code from Google and since it is based on some of the latest features of HTML5, I strongly recommend Chrome to have a look at it. Those who are interested will finally be able to find those slides on the Obeo Network. A video of the presentation should be available soon.
Today we have released Acceleo 3.0.5 with some new improvements coming from Acceleo 3.1.0 for the properties files. You can learn more about those improvements in one of my previous post. You can grab this new version from the Acceleo 3.0.x update site:
A best practices guide for Acceleo 3 generators has also been released and for those who are waiting for the new version of Acceleo, it will be available next week with all the other projects from the Indigo release train.
Among all the new features available in Acceleo 3.1, you will be able to find a new system to compile and build an Acceleo generator. You could already use the Eclipse system based on PDE already described here but now with Acceleo 3.1, you will have the opportunity to build your generator thanks Maven to with the introduction of a Tycho based build.
In order to build an Acceleo generator with Tycho, there are four steps to realize.
Now let’s have a look in details at those steps.
The first thing that you have to do is to add an optional dependency with the Acceleo parser in your MANIFEST.MF file.
Then, you can use the new action to generate the pom.xml files necessary to the build. This action can be found by right-clicking an Acceleo project in the “Configure” menu.
This action will generate two pom.xml files and a Java class. The first pom.xml file is located in your project and it contains all the necessary settings to build your project. The second pom.xml files is located in the folder containing you project (by default, the root of your workspace). This file contains all the settings for a Tycho-based build with the update sites for Eclipse Indigo and Acceleo.
The Java class generated will be used for the compilation of the Acceleo modules. This class is necessary in order to give you the opportunity to register your metamodel.
Prior to the launch, you should check that all the necessary source folders are in the build.properties file since it will be used to compute the files to build.
After that, you can type a simple "mvn clean package" in a terminal opened at the root of your Acceleo project and then witness the magic of Maven and Tycho.
It’s a bit long the first time you are launching it since Maven and Tycho will download half of the internet but once it’s done, behold the awesomeness of a Tycho based build of your Acceleo generator.
You can of course complete your Acceleo project by creating an Acceleo UI project and their matching feature and an update site in order to distribute easily your generator to your final customers. Thanks to the update site, they will be able to integrate your generator in their environment very easily.
Things will change
For our next release, we want to change the way we consider Acceleo. We have always seen Acceleo as a code generator with a great tooling that we are improving year after year with new features. But this has to stop, we don’t want Acceleo to be just a software with a version number that help you with your work, we want to do more than that, we want to be more than that. That’s why, in June we will not release another numbered version of Acceleo with the 3.1 version but instead introduce our first named release. We will shift our current effort on the development of Acceleo in order to build an happiness generator. We don’t want to improve your code anymore, we intend to improve your life on a daily basis.
Introducing Acceleo Rainbow Edition
With Acceleo Rainbow Edition, we will use the color of the rainbow to help you relax and approach your life with a new perspective. We will now work on a brand new roadmap for this Rainbow Edition.
You can already have a sneak peek at this wonderful Rainbow Edition with the brand new Acceleo Rainbow Editor by grabbing the last build of Acceleo, here.
For the newcomers looking for resources about Acceleo, you can find all the informations on our wiki.
A revolution at Obeo
This new direction is introduced today with Acceleo but we will propagate it on all Obeo softwares in the months to come. Our company will now focus on the creation of relaxation software development in order to propagate peace and happiness all over the world. You can already see a sneak peek of the next Obeo product that will use the colors of the rainbow, Obeo Designer.
We hope that you can use this brand new editor in Acceleo to have a time as relaxing as we do when developing our generators.
Last Friday, I was at Toulouse for the first edition of the Topcased Days. During this conference, I had the opportunity to realize a presentation of Acceleo 3. This was a huge success and this was a great occasion to meet lots of Acceleo users. I had a great time seeing presentations from Acceleo users and watching how they are using Acceleo to generate code for satellites, planes etc. The organization was great and it was both very friendly and professional. I will put the videos of my presentation online soon for those who couldn’t be there and you’ll be able to find a link to this presentation on the Acceleo wiki.
Speaking of the Acceleo wiki, as Cédric mentioned before, it is making a fresh start with more content and an improved navigation. Now the wiki will take a main place in the Acceleo community, and you will find in one place everything needed to use Acceleo.
You will also be able to find a table of the features available in Acceleo 3 and the new things that we will work on for the next release, including a wishlist for those who want to contribute to Acceleo. Some of those subjects may be used for the upcoming Google Summer of Code. This wiki will be updated with links to videos, tutorials, and community content.
Three weeks ago, I started to work on some new features for the next release of Acceleo next year. Jonathan and Laurent told me to use Acceleo as a regular user and to find any feature that would be missing. Quickly I had some ideas to improve Acceleo and I started to work on some of them.
In Acceleo 3, we have a system to report errors to the user with red markers in the editor. Starting with Acceleo 3.1 we will have a support for new markers like warnings or informations such as the green arrow to quickly see if a template overrides another template (if you click on the green arrow, we will open the overridden template in another editor).
We will also have a support for two new tags in comments “@TODO” and “@FIXME”. Those two new tags will create new tasks in the tasks view just like with the JDT.
We will have a new block for the documentation “[** … /]” because the comment block “[comment … /]” is a bit too long. With that documentation block, we will have a new refactoring process which will allow us to quickly generate a documentation block by typing Alt+Shift+J on a query, a template, a macro or a module. Just like in the JDT, it will create a documentation block with “@param” tags for each parameters of the selected template or query.
The documentation will be saved in the “emtl” files (Acceleo modules when compiled) and this documentation will be available when the cursor of your mouse is over an element.
Or during the autocompletion.
We will also have an improved outline view with new icons in order to see the visibility of an element and new actions in order to sort elements inside the outline view or to hide non public elements, templates or queries. All imports will be put under an “import declaration” node in the outline view.
Finally we will have a support for deprecated elements with the “@deprecated” tag in documentation blocks. It will create a warning on the deprecated element (a query, a template, a macro, or a module) and if used on a module, all elements of the module will be considered as deprecated.
And the last, but definitely not the least. The AcceleoEditor will have an action to show all the invisible characters that will be generated by Acceleo. If you look carefully, you will see that after the end of the header of the “[for (attribute : EAttribute | e.eAttributes)]” the new line will not generate a new line in the generated file.
You can see most of those improvements in this screenshot and when they will be available (they won’t be all in Acceleo 3.1 M1) don’t hesitate to send us your feedback in the forum or in the bugzilla.
An introduction, that’s a good way to start a blog, isn’t it ? So, my name is Stéphane Bégaudeau and I’m a software developer, I am currently living in Nantes in France. I’m creating software for a French company named Obeo, a strategic member of the Eclipse foundation, which produce applications based on the Eclipse IDE. To be more precise I’m working on the code generator named Acceleo. It is an official projet of the Eclipse Foundation, and since its version 3, it is part of the release train of Eclipse.