Towels, Models and Bundles: Eclipse DemoCamp in Hamburg
Whether it was just pure coincidence or destiny - yesterdays DemoCamp in Hamburg happened to fall on the same day as Towel Day.
Although we had quite a bunch of attendees (I counted 40), only one brought his Towel.
Thanks to our speakers, Martin and I were able to put together a really exciting program:
- Moritz Eysholdt, Patching Models and Evolving Meta Models
- Heiko Behrens, TMF Xtext
- Simon Zambrovski, Common Navigator Framework
- Marco Mosconi, Modular EMF/GMF customization with ObjectTeams/Java
- Markus Alexander Kuppe, Distributed OSGi (RFC 119) - The ECF way
Moritz presented the result of his master's thesis on the topic of metamodel evolution and explained how models can evolve together with their metamodels. This might also be of interest for data modeling.
Heiko delivered a great presentation on the upcoming version of Xtext. He used a well-known example that everybody could relate to (no, not entities and services!) so it was really easy to understand how domain specific languages work and how Xtext can help to implement a domain specific tool chain.
Simon presented on the Common Navigator Framework - a powerful framework which helps you to assemble tree views in a mostly declarative manner. Simon was bold enough to do a live coding session, but the demo gods didn't smile on him, so he showed us the prepared solution, which was still very convincing. Simon prepared an article about the CNF on his blog, so if you're interested, drop by - it's worth a read.

After the break, Marco Mosconi showed how ObjectTeams/Java can be used to non-invasively customize generated code. As a real-world example he used the UML diagrams from the Eclipse UML2Tools project. The UML2Tools project uses GMF to generate the diagram code based on the UML2 metamodel (implemented as an ECore model). A rather large number of generated artifacts have to be customized to make sure the diagrams behave correctly. Marco showed how this is especially required for associations (I find it kind of funny how everybody uses associations to explain how complicated the UML metamodel is). The UML2Tools class diagram has been customized in at least 200 different locations, so you get a big maintenance problem (generated and non-generated code are mingled). With ObjectTeams, it is possible to extract all customization code into so called teams which then are able to enhance the generated code in an aspect oriented way. In a way, ObjectTeams is like AOP on steroids.

The official part of the DemoCamp was concluded by a talk held by Markus Kuppe on Distributed OSGi. Markus briefly explained the architecture behind Distributed OSGi and gave a demo of an Eclipse RCP application that communicated with an iPhone (which ran an Equinox server). Markus used the Eclipse Communication Framework (ECF) to achieve this - ECF contains a provider for Distributed OSGi.

Eclipse DemoCamps are social events and aim at creating room for discussion and interaction. So, after the official part of the DemoCamp, we headed down to the EAST Bar to have some nice chats over some frosty beverages (I definitely recommend "Cool Mango").
Feedback has been very positive so far and I surely hope everybody enjoyed the DemoCamp as much as I did. Thanks to the Eclipse Foundation, it-agile and itemis for making this event possible by sponsoring the location and the drinks!
If you feel you missed out, drop me or Martin a mail so we can invite you the next time around.
Modeling is dead. Long live Modeling!
Although some people seem to be convinced that Eclipse and Eclipse Modeling are dead, I have been sensing quite healthy life signals of both on EclipseCon 2009 (or rather #eclipsecon).
On Monday, Bernd, Kenn and I hosted the official Modeling BOF:

The topics discussed were focussing on consumability and long-term sustainability of EMF:
Documentation and Marketing
We all agreed that the entire modeling project lacks a decent documentation. While of course all of the projects and subprojects do have their own documentation, there is so such thing as an overview documentation. Modelers as we are, we quickly realized we're lacking a documentation superstructure. The idea is to provide a guide for users (newbies and seasoned experts alike) to navigate the Eclipse Modeling world. The modeling project offers a great variety of technologies, so it is not always easy to find out which set of technologies / frameworks you might want to use - especially if you are new to EMF.
We also agreed that we need more success stories (in the form of blog entries, articles and shiny flyers for the modeling landing page). A quick poll revealed that more than 90% of all people attending have been working on projects in which modeling was successfully applied, so there should be enough material to create success stories!
Kenn mentioned the Eclipse Foundation wants to start a documentation project (much like Babel) to improve overall documentation, we might eventually join this project. In the meantime, we decided to form a working group comprised of members of the Eclipse Modeling Project that starts to create this overview documentation. The initial members of this working group will be Kenn, Bernd, Peter, Tamer, Pierre, Marcello, Thibault and Anthony (guys, please send me your email addresses). The working group will start its work on the EMF dev mailing list. You are welcome to join us there.
Consuming Modeling Technology
I think there is no other technology that causes more emotions in an Eclipse committers life than P2. So we also had our little discussion about how to best provision Modeling technology. No big news here - we just re-iterated the pros and cons of using ZIPs vs. P2 and also had a short discussion about the Friends of Eclipse Download Wizard (which, rumor has it, will allow you to assemble a custom distro by just selecting the pieces you need). Several people mentioned that Amalgamation is intended to be a place for modeling distros.
EMF 3.0
We also discussed whether we should have a new major release of EMF that allows us to break API. Though not everybody agreed that we need a new major version (because the current version works smoothly for most people) we decided to set up an additional BOF to discuss this topic in more detail. I will write about the EMF 3 BOF later (yes, I am teasing)
Miscellanea
Someone asked if we need something like a model bus, the answer was no - we've got the modeling workflow engine (MWE).
We also briefly discussed the recent change of leadership on the MDT OCL component (Christian Damus revoked his committer and component lead status recently). Everybody agreed that to lead a component, a long-term committment is needed (which has been met by Christian in the most excellent way). We also agreed that we need to make avoid situations in which a whole bunch of projects / components suddenly are without a leader. This will be a task for the PMC.

After the official part of the BOF, there still was time to chat and shake hands with people you never met in person before. I had the pleasure to shake hands with Anthony Hunter, who works for IBM. From our discussions on mailing lists and bugs, you could guess that we have a totally different view on the marketing of software, but it turns out we're actually not that far apart
BOFs are a great way to interact with like-minded people at conferences. So, next time you go to a conference, make sure you participate in a BOF to make yourself be heard and take part in the discussion.
Using Xpand in your Eclipse Wizards
At ESE, I had a nice chat with Chris (actually, I had a lot of nice chats with a lot of nice people - it was quite a challenge to attend any of the sessions), who told me that he was looking into template engines. I leave it up to you to make any assumptions on why he's interested in template engines. I happen to know at least three template engines: Velocity (which I had the joy of using in my active days at AndroMDA.org), the template, erhm, ... mechanism being used in PDE (I once fixed a bug which had been caused by this engine) and - you might have guessed it - Xpand (which I am a committer on).
So, I gave a short demo of Xtext and Xpand to show Chris how easy it is to create (model-aware) code generation templates. Xpand comes with a nice editor which makes template editing a joy - it features code highlighting, hyperlink navigation, model-awareness and other editor goodness.
Instead of letting only Chris know how that works, here's a short guide on how to write your own Xpand template and use it in a wizard. To make the example more realistic, I chose to implement a wizard that creates an Ant build.xml file for a simple project (something which is missing in Eclipse, AFAIK). So, here we go.
Prerequisites:
- Eclipse 3.5M3 (3.4 might also do)
- EMF 2.5.0M3
- EMF Compare 0.8.1
- MWE 0.7.0M3
- Xpand 0.7.0M3
How to do it
- Download and install the prerequisites.
- Create a new plug-in project named "de.peterfriese.antwizard"
- Add a New File Wizard to the project. I used the Custom plug-in Wizard to get me started.
- Brush up the wizard page and add some fields for project name, source folder and binary folder.
- We want to transfer the values entered in this wizard into our template, so we need to create an Ecore model that describes our data model.

- Add org.eclipse.emf and org.eclipse.emf.edit to the dependencies of you plug-in.
- Create a genmodel and let EMF generate the model code for you.
- Add code to your wizard that transfers the values from the input fields to your model. One might consider using databinding for doing this, I used a straight forward read'n'write approach for the time being:
public boolean performFinish() { final String containerName = page.getContainerName(); final String srcDirName = page.getSrcDirName(); final String binDirName = page.getBinDirName(); // ... } private BuildSpecification createModel(IProject project, String srcDirName, String binDirName) { BuildSpecification buildSpecification = BuildspecificationFactory.eINSTANCE.createBuildSpecification(); Project projectSpecification = BuildspecificationFactory.eINSTANCE.createProject(); projectSpecification.setName(project.getName()); projectSpecification.setBinaryFolder(binDirName); projectSpecification.setSourceFolder(srcDirName); buildSpecification.setProject(projectSpecification); return buildSpecification; } - Create an Xpand template de.peterfriese.antwizard/src/template/BuildTemplate.xpt:

In case you wonder how to get those funky characters: make sure us create this file using the Xpand editor - it has code assist (CTRL + space) for those characters. - Create an Xtend file de.peterfriese.antwizard/src/template/GeneratorExtensions.ext:

- Add org.eclipse.xpand, org.eclipse.xtend and org.eclipse.xtend.typesystem.emf to the depencies of your plug-in.
- Finally, we need to provide some code to invoke the generator:
private void generate(BuildSpecification buildSpec, IProgressMonitor monitor) throws CoreException { // get project root folder as absolute file system path IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IResource resource = root.findMember(new Path(buildSpec.getProject().getName())); String containerName = resource.getLocation().toPortableString(); // configure outlets OutputImpl output = new OutputImpl(); Outlet outlet = new Outlet(containerName); outlet.setOverwrite(true); output.addOutlet(outlet); // create execution context Map globalVarsMap = new HashMap(); XpandExecutionContextImpl execCtx = new XpandExecutionContextImpl(output, null, globalVarsMap, null, null); EmfRegistryMetaModel metamodel = new EmfRegistryMetaModel() { @Override protected EPackage[] allPackages() { return new EPackage[] { BuildspecificationPackage.eINSTANCE, EcorePackage.eINSTANCE }; } }; execCtx.registerMetaModel(metamodel); // generate XpandFacade facade = XpandFacade.create(execCtx); String templatePath = "template::BuildTemplate::main"; facade.evaluate(templatePath, buildSpec); // refresh the project to get external updates: resource.refreshLocal(IResource.DEPTH_INFINITE, monitor); }
That's it!
Taking it for a spin
- Launch a runtime workbench by selecting de.peterfriese.antwizard/META-INF/MANIFEST.MF and invoking Run As -> Eclipse Application
- Create a new Java project in the runtime workspace.
- Invoke your wizard by selecting File -> New -> Other... -> Ant -> Ant build file from existing project
- Enter the required information (project name, source folder, binariy folder)
- After clicking on finish, you should get a fresh Ant file for your project:

- Enjoy!
You can download the project here. Feedback and comments are welcome!
ESE: Building Refactoring Tools with LTK and Ludwig
Jeffrey Overbey talked about building refactoring tools using the LTK and his research work "Ludwig".
I guess you all agree with me that refactoring support is crucial for any programing language, as you need to restructure your code rom time to time.
Although Eclipse LTK offers a decent API and UI to realize refactoring tools, all the heavy lifting (parsing the text in question, analyzing the AST, creating rewrite rules) is left to you.
Jeff's research tool Ludwig can help to derive refactoring support from a BNF-style grammar very easily. Ludwig essentially derives a lexer/parser from the grammar and provides an interface to the AST which gets constructed by the parser. Which gives you the chance to walk / visit the AST and (partially) rewrite the AST.
I really enjoyed Jeff's presentation style. He used a set of slides and pre-recorded screenvideos to drive his talk. I think this is great idea, as it basically eliminates any problems you might run into if you do a live demo. Plus, it gives the presenter the chance to face the audience while demoing, instead of mumbling into the screen
Maps, Services, Relations and Reuse: Eclipse DemoCamp Hamburg
On November 10th, the Hamburg Eclipse DemoCamp took place in the stylish EAST Hotel.

We had 45 reservations and almost all of them made it to the Camp. I always get a little bit nervous 15 minutes before the event starts if no more than 10 people have shown up so far, but I guess that's alright.
Martin and I welcomed the crowd on behalf of our sponsors (Eclipse Foundation, froglogic, it-agile and itemis):

After that, Harald Wellmann of Harman Becker told us that the world is a disc. Well, at least he and his company try to make it a disc again - Harald leads a team that develops a so called "map compiler". A map compiler takes map source data and condenses that data by extracting only the relevant parts of it. As you may guess this is a long-running process which can hugely benefit from parallelization. Harald and his team use OSGi to modularize their software and make sure they use computing resources efficiently. One thing worth noting is that OSGi is even being used in car entertainment systems: Harald told us about one entertainment system which makes use of OSGi to act as an intermediate / glue layer between the UI (written in Java) and the core (written in C++).

Gerd Wütherich (Independent) continued where Harald stopped and showed us how to use Spring Dynamic Modules and OSGi in his excellent talk - interspersed with some neat demos:

Together with Nils Hartmann, Mathias Lübken and Bernd Kolb, he wrote the first German book on OSGi, so he really knows what he is talking about.
After those talks, we took a break to grab some refreshments and take the chance to get in touch with the other attending Eclipse enthusiasts. I had the impression that everybody had a good time discussing all things Eclipse - in fact Martin and I had to interrupt a lot of lively discussions for the second run of talks.
In the first talk after the break, Miguel Garcia and Rakesh Prithiviraj (both Technical University of Hamburg-Harburg) gave us an update of their research on how to integrate LINQ (Language Integrated Queries) in Java:


The final demo was deliverd by Stephan Herrmann who showed us Object Teams / Equinox, an amazing piece of software that can be used to re-use existing Eclipse plug-ins in an aspect-oriented way. To get an idea of how powerful this approach is, have a look at the following screenshot - this is the JDT, but enhanced by Object Teams in order to support their very own syntax extensions for Java:

To learn more about Object Teams, browse to their web site at http://trac.objectteams.org/ot/wiki/OtEquinox.

Everyone in the room was quite impressed with what is possible with Object Teams / Equinox, so you should check it out (it's available for free). If you can manage to go the DemoCamp in Berlin, you'll have the chance to see it live.
The feedback we received from the attendees was great - some people even sent emails thanking us for organizing the event, so I guess the DemoCamp can be considered a success!
Eclipse DemoCamps
It's that time of year again - demo time!
Being run for the third time, demo camps can be considered an integral part of the Eclipse calender of events. Attending a DemoCamp is great. If you haven't yet been to any Eclipse DemoCamp, let me briefly summarize why I think you should consider going to one:
- see cool technology in action (well, that's the whole point of a DemoCamp, isn't it)
- get to know Eclipse-minded people from your area
- have some frosty beverages and fingerfood (well, that actually depends on how the camp is organized)
- see some exciting buildings from inside (again, depends on how the camp is organized)
Oh, did I mention that Eclipse DemoCamps are free? Thanks to the Eclipse Foundation and many sponsoring member companies, you get to enjoy all those nice things for absolutely free.
Here are some of my favorite demos:
- Jingwen Owen Ou on WikiText for Mylyn
- Jochen Krause on Eclipse 4.0
- Harald Wellmann on Geodata Processing for Car Navigation Systems
- Florian Fieber and Max Bureck on From Model to Code - A Comparison of M2M and M2T Technologies in Eclipse Modeling
- Dave Savage on Newton - a distributed OSGi application runtime
- Jens von Pilgrim on GEF goes 3D: GEF3D
- Eike Steppe on CDO Model Repository
- Boris Bokowski and Eric Moffatt on the e4 Programming Model and e4 Modeled UI, respectively
- Martin Taal on EMF/Teneo
By the way, if we were to award the price of the most indefatigable DemoCamp presenter, it'd go to Wassim Melhem. You can meet him at no less than three locations: Iasi (Romania), Warszawa (Poland), Poznan (Poland).
Hope I could convince you to attend one of the many DemoCamps. I'll be at the DemoCamps in Hamburg and Leipzig, so see you there!
MDSD Today 2008 Recap
From October 15 to October 17, MDSD Today 2008 took place at the Nordakademie in Elmshorn near Hamburg, Germany. The conference, which had been organized by Frank Zimmermann (Nordakademie), Simon Zambrovski and yours truly, was intended to bring together practioners, researchers and people from both industry and business.
We were fortunate enough to aquire a number of well-known speakers, most notably Axel Uhl (SAP) and Ed Merks (of EMF fame).
On the first day, Axel and Ed delivered their excellent keynotes on the current state of affairs in modeling.
Ed commented on a number of misconceptions he has been confronted with during the last few years such as "modeling is too complicated", "modeling will just get into my way" or "modeling will limit my creativity". The bottom line of his talk was that although you might not realize it, models drive most software (just think of all the data models you're dealing with in business applications). However, using source code as a representation for your models might not always be the best solution - to gain both a better overview of your software and be more efficient with respect to software development, you should think about raising the level of abstraction, e.g. by using domain specific modeling tools that let you focus on the structure of your model instead of having to deal with (basically irrelevant) syntactical details of the target language. If working at a higher level of abstraction makes things more complicated for you, you're doing something wrong.
Axel picked up this idea in his keynote on "Current Challenges for Industrial Software Development Tools and Languages" stating that any computer program can be conceived as a model. Since models are independent of their visual representation, they can be represented in various different forms, the most common being text, trees and diagrams of any kind. The question, however, whether to choose text or the abstract model as the primary artifact for storing. A textual representation clearly has advantages with respect to diffing and merging and can be handled with commonly used tools such as CVS nd plain text editors. Using the abstract model as the primary artifact allows for overlapping partial views. Since this model can persisted in some kind of repository, access to the model very much feels like working with a database. In particular, there's no need to parse any text back and forth between the model and an editor. The decision whether to store models as text or in a repository largely depends on boundary decisions, like the availability of the repository technology, the robustness of the mapping between the textual representation and the model, language characteristics, the number of developers who need to work on the model in parallel, the size of the software system built with the model and the life cycle of the software. Axel concluded that on one hand, modeling is not that much different from coding and that, on the other hand, DSLs are becoming increasingly important due to the complexity of UML.
One of the nice thing about conferences is you get to talk to people who are interested in the same topics as you are. MDSD Today has been no different - during the breaks you could see people involved in all kinds of discussions.
Later that day, Stefan Reichert and Birger Garbe of Lufthansa Systems shared their experiences regarding model driven software projects with us. The topic of their talk was "Model Driven Software Development in Business Projects: Chance or Risk?" Their anwser to this question was that if've got the right tools, MDSD is a chance and can help you to build better software.
Thomas Stahl of b+m concluded the day with his talk on how MDSD, BMP and SOA fit together:
The second and third day of the conference were crammed with hands-on tutorials on MDSD tools like EMF, Xtext, Xpand and GMF. Quite a lot of people attended the tutorials as you can see from the pictures.
Arno had to overcome the hardship of a broken beamer, so he had to use arms and legs to explain:
Overall, the conference was a real success and I am looking forward to seeing you all again at MDSD Today 2009!
Call for Papers / Participation: MDSD Today 08
From October 15th - 17th, the second workshop on model driven software development "MDSD Today" will take place in Elmshorn near Hamburg, Germany.
The goal of this conference is to provide a platform for professionals (managers, architects and engineers alike) in the field of model driven software development to meet and exchange ideas.
The three day will be organized into the following major blocks:
- Management Day
- Research Papers and Industrial Reports
- MDSD Tutorials
The management day will feature keynotes by Dr. Axel Uhl (Chief Development Architect with SAP) and Ed Merks (of Eclipse Modeling fame).
Tutorials on various MDSD-related topics (such as model-to-model transformations, model-to-text transformations, external textual DSLs) will be delivered by members of the Eclipse Modeling Project on day 2 and day 3 of the conference.
If you use model driven software development in your daily work, please consider giving a presentation.
If you do not use MDSD and would like to hear about other's experiences, you should consider participating in the conference and take the chance to attend the MDSD tutorials. At EUR 350 for three days, that's a real bargain.
The CfPs and more information on the conference can be found here (english) and here (german).
Hope to see you there!
Eclipse DemoCamp Hamburg review
Yesterday, the Eclipse DemoCamp in Hamburg took place in the beautiful "Speicherstadt" in Hamburg:
![]() |
![]() |
We had about 50 registrations and more than 40 people actually showed up:
After a short introduction by Martin and me, Sven (itemis AG) gave an introduction to Xtext and highlighted some o the new features in the upcoming version Xtext 2.0.
Matthias Lübken of it-agile gave a talk on GWT (Google Web Toolkit) and OSGi and showed us how easy it is to build great-looking web-applications that can be dynamically enhanced by means of OSGi runtime features like loading / unloading bundles. Matthias mentioned several times that Gunnar Wagenknecht provided a patch that fixes some classloading issues in the serialization code. So Gunnar, thanks again!
Thanks to itemis, it-agile and of course the Eclipse Foundation who all sponsored the event, we could then enjoy a break with drinks and some sandwiches.
After the break, Stefan Reichert of Lufthansa Systems presented his Plug-in Wickedshell that enables you to execute shell scripts for your favourite command shell from inside Eclipse.
Reginald Stadlbauer of Froglogic gave a demo of their GUI testing tool, Squish. Besides being able to create test scripts for a wide variety of GUI technologies, Squish can also create GUI tests for Eclipse RCP / SWT applications. You can modify the scripts afterwards, and introduce conditions, which is great.
The demos were concluded by a presentation on the topic of "Generation of format adapters for SAP XI. A model driven approach." by Frank Zimmermann of the Nordakademie and two of his students, Henning Banneitz and Stefan Tanck. It very nicely showed how to use modern technology (Xtext) to tackle legacy technology (EDI / EDIFACT).
They finished just in time so all soccer fans could watch the encounter Germany - Austria, which also was a success (at least for the German team).
A big thank-you is due to our sponsors, it-agile, itemis and the Eclipse Foundation. Martin and I would especially like to say "thank you" to Arne Roock for taking care of all he organizational details!
Also thanks a lot to everyone who attended the Camp! We would to gather feedback on how you liked the camp, so pleace voice your opinion on the poll.
Here is a list of resource (slides, screencasts and screenshots) for your reference:
OOP conference: MDSD and Eclipse (update)
At the OOP conference in Munich, we demoed some model driven IDEs at the Gentleware booth. To give you an impression, we have recorded some videos of two LEGO Mindstorms robots that have been programmed in a visual development environment based on Eclipse. The IDE has been developed by two Students of the Nordakademie and their Professor, Frank Zimmermann.

















