Archive for the ‘Projects’ Category

Eclipse DemoCamp Nov 2009 in Berlin

After the Eclipse DemoCamp in Leipzig a few days ago I went to the Berlin DemoCamp and presented emf.observables a second time. “Prezing” is fun! But step by step…

We arrived just early enough to get one seat of around 60 seats and see Ralph Müller with his key note. He incited us to become a Eclipse Foundation member and to visit the Eclipse Summit Europe 2010. He hadn’t any free tickets… :-(

Ralph Müller | Key note

Kristian Duske showed us a really cool use case for GEF3D. He used it to work with GMF mapping models (which can get really complex) in a very intuitive way. This is completly different way of handling GMF complexity in comparison to GenGMF.

Kristian Duske | GEF3D based GMFMap editor

Nothing is impossible! Arc lines between connections in a GMF based editor have been implemented! For a variability editor it is an essential feature and I know from my diploma thesis that such features are really hard to achieve with GMF.

Martin Esser | Variability Editor with GMF

Xtext is a project presented since the early days of Eclipse DemoCamps and this time done by Peter Friese. There are some new features on the roadmap for the next 0.8 release.

Peter Friese | Xtext

Break: During the breaks we talked about what we have seen and raided the delicious buffet.

Despite the original order we’ve got the one and only double feature now — two presenters using two beamers. Joachim Hänsel and Jaroslav Svacina made us aware of EVOTest a framework for evolutionary testing. It uses optimization search algorithms for finding problematic input parameter.

Joachim Hänsel and Jaroslav Svacina | EvoTest
(The second beamer was too dark for the picture.)

Do I have created a good model? How does it conform to the guidelines? Answers to such queries can give Metrino which has been presented by Marcus Engelhardt. There is also an adapter for the EMF validation framework so you could see the results in the problems view.

Marcus Engelhardt | Metrino

Matthias Köster created an IDE for Clojure and used the DLTK to do that. He showed us how easy it is to get fast results with the DLTK.

Matthias Köster | DLTK based IDE for Clojure

Break: Do I have said already that the food was delicious? Thanks to Tom for organizing the DemoCamp!

Stephan Herrmann showed ObjectTeams and a adapted version of EclipseLink to persist next to the objects the associated teams and roles.

I’m sorry, the is no picture available

SMILA is system for extracting semantic information from arbitrary media. It e.g. extracts images from PDF files and makes them searchable. You can also search for similar images like with google! Presented by Igor Novakovic.

Igor Novakovic | SMILA

Now it was my turn to present emf.observables. It is my last project and generates IObservable wrapper classes for EMF model classes. The wrappers provide an easy and type save access to the EMFObservables hierarchies.

Enrico Schnepel | emf.observables

I have used “prezi” instead of some slide based software and presenting it was much fun. Creating a prezi is relative easy and intuitive but the software to do that is very feature-limited.

All in all it was a very nice evening where I have seen many interesting projects and talked to many interesting people during the breaks.

Many thanks to Lars for giving me a lift to Berlin and to Martin for the short stay.

Check also Jevopi’s blog with his retrospective!

Eclipse DemoCamp Nov 2009 in Leipzig

Yesterday itemis had organized an Eclipse DemoCamp in Leipzig once again. Like in the many Eclipse DemoCamps I have seen before – it was once again a happening with many interesting projects.

emf.observables

The planned first presenter had some technical problems with the beamer so I filled in and showed my “prezi” instead. “emf.observables” is a new project of mine and can be used to aid in the programming of RCP applications. It generates type safe wrapper classes for IObservable Objects. It was the first time that I used Prezi for my presentation and I have to admit that presenting it was fun. From the questions I had to answer and the personal chats afterwards I got the impression that it was interesting to the audience.

“Und heute generier’ ich” by Alexander Nittka

Alex showed a nice demo from a RCP application he uses for his voluntary work at the Deutscher Go Bund. He uses a DSL developed with Xtext for entering and validating withdrawals and their rejects for all associated members. It was interesting to see Xtext in an application without the generation of source code.

Break

During the break we had some time to chat to each other while eating delicious Soljanka as well as potato soup.

JPA (EclipseLink) in OSGI Anwendungen” by Karsten Voigt

Karsten got the beamer working and showed us how easy it is to use the Java Persistence API 2.0 reference implementation “EclipseLink” in an OSGI context. The Eclipse JPA tooling allows you to generate the complete JPA infrastructure from an existing SQL database and to administrate it. OSGI declarative services are used to wrap queries. It was quite interesting but I can’t use it in my current projects because they don’t use a database.

FeatureMapper by Florian Heidenreich

The FeatureMapper is a tooling to connect arbitrary existing EMF based models with features in a product line context. The existing EMF, GMF and EMFText editors are extended by the tooling and display which model objects a selected feature configuration covers. They also want to implement support for Xtext.

Konsistente Software-Dokumentation by Andreas Bartho

The DEFT (Development Environment For Tutorials) project is really interesting because it allows you to keep your documentation current as you change your code. Code snippets are copied into your documentation with code formatting. The Tuba project does the same but for models which is also very neat. They want to combine both projects and want to support screen shots from RCP applications running in a JUnit context.

I am looking forward to the next Eclipse DemoCamp in Berlin where I will talk about emf.observables too. See you there!

Copying EMF objects accross namespaces

I am currently preparing a new release for my GenGMF project. Because the new meta model contains important but incompatible changes I have migrated the GenGMF tooling to a new name space and created a migration script for converting the specific editor models. The new meta model is much smaller than the old one which results in smaller models — I’ve eliminated the need for the mapping elements in the templates. To make the migration as easy as possible I’ve created some helper functions to move corresponding attributes and references. Only the “real” changes in the meta model are migrated using a Xtend script.

To demonstrate the facilities of the CrossNamespaceCopier I’ve created a small meta model…

Demo meta model

As you see the Class2 from the “http://source.namespace” has been eliminated in the “http://target.namespace” and both attributes have been moved – attribute2 to Class1 and attribute3 to Class3. In order to migrate a model instance one has to call the CrossNamespaceCopier which copies the objects while migrating the name spaces according to rules previously set. OtherClass objects from the “http://other.namespace” will be copied as they are. All references and attributes which could not be automatically migrated need to copied in a small script manually.

extension CrossNamespaceCopier;

namespace::target::Class1 migrate(namespace::source::Class1 sc1)
:   let tc1 =
    // initialization for the copier, but the
    // let statement needs to be in the beginning
    (   crossNsInitStaticInstance()
    ->  crossNsSetupNamespaceMapping(
            "http://source.namespace",
            "http://target.namespace")
    // the content for the tc1 variable
    ->  (   (namespace::target::Class1)
            crossNsCopy(sc1)))
    // skipping Class2 in source
:   tc1.setClass3Reference(
            (namespace::target::Class3)
            sc1.class2Reference.class3Reference
            .crossNsCopy())
    // pull up attribute2
->  tc1.setAttribute2(
            sc1.class2Reference.attribute2)
    // pull down attribute3
->  tc1.class3Reference.setAttribute3(
            sc1.class2Reference.attribute3)
    // uninitializing
->  crossNsReleaseStaticInstance()
->  tc1
;

You will find the CrossNamespaceCopier as well as the demo files contained in a zip file.

GMF toolkits

GMF, the Graphical Modeling Framework supports the creation of graphical editors. For beginners it is very hard to learn. The included wizard has a lot of disadvantages, but it is o.k. for a start. Furthermore the GMF models are very complex and hard to handle. There are different solutions to shorten the time needed for creating a graphical editor:

EuGENia
… supports the development of GMF based editors using annotations in your metamodel (*.ecore) – preferably generated using Emfatic. Dimitrios Kolovos has written a nice tutorial and created a screencast.
ATLflow
Like in EuGENia – annotations in the metamodel are used to create a graphical editor. It is part of a complete tool chain for model transformations based on ATL. It is used for bootstrapping parts of ATLflow itself.
GenGMF
… uses a completely different approach. The GMF models are created from template-like tree structures. A template consist of GMF elements – just ready for duplicating for each metamodel element it is associated with. It is recommended to have some experience with the GMF models, before starting with GenGMF. I developed it to support the creation of editors with a lot of metamodel elements.

Both annotation based solutions are not able to cover all the features possible with GMF, because the GMF models are created using the information stored in the metamodel. The template based approach GenGMF offers a lot more flexibility at the cost of a more complex model.

Do you see the difference?

Do you see the difference between the following two pictures?

Pict 1 Pict 2

It was the result of the CatChaser pinning two balloons and part of one of the eight talks held at the Eclipse DemoCamp in Hamburg. A lot of interesting projects and concepts where presented. They made a video of the talks which will be available soon.

One of the intended presenters wasn’t available. They asked me to talk – as substitute – about MetamodelDoc. As I had prepared my slides for the DemoCamp in Berlin already – I agreed. The slides are – of course – available.

Update

After the event in Hamburg the event in Berlin was a success too. There are a lot of interesting projects. One of them – ObjectTeams – I will give a try. It could be described as sophisticated and object oriented AspectJ with dynamic binding (well – ehm …, the language constructs are not the same) and it integrates very nicely into the JDT environment (by replacing the JDT-core plugin :-/). An interesting feature is – you could de-/activate an aspect (it is called Team here) during the lifetime of an object and on a per object basis.

Collabarative Thinking

There is a realy cool project located at http://www.deepamehta.de/ ! It lets you work in network with visualized networks while browsing the web and gathering information from the sites.

On 21th March will be an introduction into the software in the new thinking store in berlin x-berg.

OpenUsability

Do you need money? Even if not – OpenUsability is a to-be-supported project. As el writes OpenUsability needs one hour of your valuable time in the time from 6th till 10th February for improving Wikipedia in an usability test. You will get 15 € for one hour of effort. Just write an email to el and support OpenUsability (the email address is mentioned in this blog article)!