Getting Started

Today I pushed the first commit to the repository at GitHub. It contains the basic project layout. I will use Maven Tycho as build system in its brand new version 0.12.0, which was released just a couple of days ago. Also it is not my first Tycho setup, the project structure and pom.xml files are based on the excellent tutorial series by Mattias Holmqvist and the Sonar IDE’s Eclipse plug-in layout.

The different projects and their responsibilities are:

  • org.eclipselab.emf.ecore.protobuf – the Eclipse plug-in
  • org.eclipselab.emf.ecore.protobuf.tests – the unit tests for the Eclipse plug-in
  • org.eclipselab.emf.ecore.protobuf.feature – the Eclipse feature containing all the plug-ins
  • org.eclipselab.emf.ecore.protobuf.releng – the releng (release engineering) project containing the parent pom.xml
  • org.eclipselab.emf.ecore.protobuf.releng.target – the releng project containing the target platform definition
  • com.google.protobuf – the Eclipse plug-in wrapping the Google Protocol Buffer API’s jar file

I have to wrap the Google Protocol Buffer API’s jar file, because the one distributed by Google is not an OSGi bundle and it is not available in a P2 repository, so it is hard to add it to the target platform definition as a dependency. The wrapping is done by the tycho-packaging-plugin with the generate-bundle goal. The required configuration is relatively small, for further details you can have a look at the pom.xml. In the future I might have to switch to the process defined by the Eclipse Orbit.

The target platform definition is based on the latest Eclipse Indigo (3.7) builds available at the following P2 repository  http://download.eclipse.org/releases/indigo/.

I would also like to regularly release builds of the project in a P2 repository at GitHub in the gh-pages branch. There are some blog posts about this, but they all involve (as far as I could see) shell scripts, which I would like to avoid in favor of some configuration in a pom.xml. If anyone reading this knows how to do it please leave a comment 🙂 .

Advertisements

Hello

… my name is Christian Kerl. I start this blog to write about my participation in Google Summer of Code 2011 (GSoC 2011). My project is called EMF – ProtocolBuffer Serialization and is mentored by Cédric Brun. It is one of the Eclipse Foundation projects this year.

In short: it’s about serializing Eclipse Modeling Framework models using Google Protocol Buffer format. To give you some more details, here is the description from the project proposal:

This project proposal comprises two relatively indepent parts for integrating Google Protocol Buffers and the Eclipse Modeling Framework.

The first part is about using Protocol Buffers for space and time efficient serialization of EMF/Ecore models. Therefore it would provide an implementation of the EMF Resource interface leveraging the dynamic capabilities of ProtocolBuffers (so no .proto file is required). This implementation could ideally be used as drop-in replacement for the existing XML/XMI Resource implementations. Its performance in terms of space and time should be compared to the existing provisional BinaryResourceImpl. This comparision might lead to improvements in both implementations and usage guidelines.

The second and more complex part would be the generation of Protocol Buffer description files (.proto) from Ecore models using model-to-text transformations. One of the challenges here is that Protocol Buffers don’t support inheritance. Besides the generation of the .proto files this part would also include a dynamic (or also generated) converter to transform Ecore model instances to their Protocol Buffer equivalents generated by the Protocol Buffer compiler (protoc). This would enable EMF to be used in heterogenous programming environments, because the data stored in EMF models can be exchanged between all the programming languages supported by Protocol Buffers.

In one of the next posts I’ll discuss this idea in more detail.

One last thing for today: all the code will be hosted in this git repository.