Benjamin Muskalla's Posts

What the heck are logical models?

Wednesday, September 7th, 2011

Have you ever committed to the repository and got mail afterwards “Hey, this isn’t compiling!”? Likely you committed only some of the changes you made leaving out files required for a successful build. Let’s take a look at a simple example:

In this model we have a class element Some Class in my.ecore which extends AnAbstractClass in Your.ecore. In this scenario, we essentially have a dependency from My.ecore to Your.ecore. For example, renaming the class AnAbstractClass in Your.ecore also forces an update of the superclass property in My.ecore. This means we need to handle this change atomically across both files. In Eclipse, this is a called a “Logical Model”. A logical model is not necessarily related to EMF but a general concept to represent related files. While we use EMF in this example, the same applies to resources given that there is a corresponding model provider (more on that later).

In the past, using CVS or Git as your SCM of choice, committing only changes for one of these files resulted in a broken repository state. Fortunately the Eclipse Platform has had a solution build-in for exactly this problem for years. Being a platform though, Eclipse only provides the necessary hooks but not the actual implementations. While the Eclipse CVS integration already supports Logical Models, the support in EGit is currently being reviewed for inclusion in the next major release. This means, whenever you’re working with files that are part of a logical model and you’re about to operate on these files, EGit will help you to include all relevant artifacts. Let’s say are about to commit My.ecore to your repository. This will trigger EGit to reach out to the associated model providers asking the question “I want to work on file X, which files are needed to have a consistent model?”. In the case of .ecore files, the corresponding model provider is EMF Compare which answers the question and EGit shows a dialog to widen the scope of the commit operation:

This not only works when committing files to the repository but also when you replace or compare files with an older version.

The features in EGit are only one side of the equation. We also need a tool that identifies the list of resources that are related to a given set of files. In the open source Eclipse ecosystem, EMF Compare is currently the only provider that handles the notation of logical models. With the support in CVS and EGit, I hope more plugins will contribute model providers to help users keep their repositories stable.

If you’re interested what else is coming, such as semantic model merging, please come to our talk at EclipseCon Europe about Logical models. If you want to play around with the new tools, just get an EGit nightly build and use the EMF example I pushed to Github.

Looking forward to hear your usecases for logical model support!

Mylyn visiting Skills Matter

Tuesday, May 31st, 2011

Ever wondered what is going on inside the brain of people working at Tasktop?
Skills Matter
Last week, I had to honor to speak at Skills Matter, Europe’s largest provider of open-source and agile trainings in the London area. It was a great time in London and Skills Matter was kind enough to provide a recorded version of the talk for people who could not attend.

As part of their branding, the talk was titled: “In The Brain of Benjamin Muskalla: Mylyn: Closing the Agile ALM loop with task-focused collaboration” so I thought: when you’re able to know what’s going on in my brain, I don’t even need to talk about anything. You’ll expierence some silence up to 5:20 as we forgot to turn on the microphone. As the whole talk is about 1:20h, it’s still worth watching it if you want to find out how to do task-focused collaboration with Mylyn and Tasktop. In addition, there is a quick outlook in the connectors coming up around code review with Gerrit and the Git integration for Mylyn.

You can watch the whole talk at the Skills Matter website.

Integrating Mylyn into your Git workflow

Wednesday, February 16th, 2011

In January, most of the EGit committers met at the “EGit Summit” in Walldorf, Germany. We had a blast hanging out together, planning the future direction for EGit/JGit, and implementing new features.

Thanks again to the SAP team for hosting the event.

As you can see on the whiteboard, there were numerous ideas suggested by the EGit committers who attended. We organized and prioritized the topics and then broke up into small teams. One user story that was commonly asked for was improved integration between EGit and Mylyn – Chris Aniszczyk (Red Hat), Manuel Doninger (Markant) and I (Tasktop) decided to form a team to make this improved integration real.

“EGit Mylyn (Incubation)”, a new feature that came from our activities at the Summit, allows you to have a tighter integration between Mylyn and EGit. This feature is available from the current update site.

We were fortunate to have a starting point from Manuel and others, and as result, by the end of the first day of the Summit, initial support for pre-populating the commit message from the active task was completed. This means that if you’re activly working on a task, once you fire up the commit dialog, it is prefilled with the commit message for the activated task. See the screenshots below.

The industry analysts like Forrester and Gartner have been emphasizing the importance of visibility and traceability in today’s modern development efforts. One great feature we were able to implement for achieving better traceability is support for linking between commits and tasks. With this feature, once a you fire up the History view of your git project, you’re able to open up the task corresponding to the commit with a single click. We implemented the same feature for the Git Synchronize view as well.

In the future, we want to work on an even tighter integration between EGit and Mylyn. One idea is per-task branching. This essentially means that if you activate a task, EGit automatically creates a “feature branch” for your task and later it will merge it back into the master branch for pushing upstream. Manuel already has a working prototype which will hopefully find its way into the EGit master soon. If you’re interested in this idea, take look at this task.

Besides the Mylyn integration, many other new features and fixes found their way into the 0.11 stream of EGit. You may want to check out the New & Noteworthy.

If you have your own ideas for how EGit and Mylyn can work together more seamlessly, please comment on this post or open a new feature request in the EGit Bugzilla component. We always are excited to get new committers as well as new contributors to EGit who can help us make it an even better project.

Meet us at the Eclipse Summit Europe in Ludwigsburg

Friday, October 29th, 2010

Back in July, my colleagues and I discussed the hurdles of contributing to an open-source project. We hypothesized that many people are hesitant to provide patches because they might be critiqued. The brave souls that do submit patches quickly realize that this feedback is an excellent opportunity to learn. Yet, as I mentioned in my first blog post, contributing to an open-source project means much more than just submitting patches. It’s all about responsibilities, collaboration with other teams and, last but not least, traceability.

At the Eclipse Summit Europe next week Wayne and Janet from the Eclipse Foundation along with myself will try to clarify what it means to be a committer by describing a day in the life of an Eclipse committer. We will show you how to get a backstage pass to the Eclipse community, how to contribute to the ecosystem, what it means to be involved in the Eclipse community and why contributions will raise your profile.

However, I’m not the only Tasktop team member presenting at ESE. Steffen will present on the very practical topic of how to simplify update and extension install for RCP applications. You will learn how to embed p2 discovery, of Mylyn Connector Portal (see screenshot) and Eclipse Marketplace Client fame, to provide a branded UI for installing extensions. If you’d like to make your RCP application’s update and install process as easy to understand as the Firefox extension installer and updater join Steffen for this presentation.

Last but not least we’re always interested in discussing Mylyn. On Wednesday night we plan to organize a Birds of a Feather session around Mylyn. We’ll discuss the recent project restructuring, help new-comers get set up to contribute, and explore other Mylyn-related topics as there is interest. This BOF is a great chance to spend some time with part of the team that created Mylyn. Check the registration desk for an exact time and location.

We hope to see everyone in Ludwigsburg for interesting discussions! Enjoy the conference!

How Benjamin Muskalla arrived at Tasktop

Monday, October 18th, 2010

So much has happened since I joined the Eclipse community 6 years ago. Some of you may remember the pyramid from the book “Contributing to Eclipse” that depicts the path from being a pure user to becoming a contributor and finally a committer. My time as only a user of Eclipse was not that long – far too many bugs popped up and disturbed my workflow. Some people in this situation might say, “Hey, this software sucks, make it better!” But I was intrigued that the open source Eclipse platform offered another option. So I sat down one night, dug through an endless list of wiki pages and source code and began fixing the bugs that crossed my path. I became part of a community, which means much more than just fixing bugs. I was able to make meaningful contributions in collaboration with others and support other community members engaged in the effort to improve Eclipse. After some time, while still contributing to several projects like the Mylyn Google Code connector, Mylyn itself, EGit and other Eclipse projects, I took on a full time role as a committer on the Rich Ajax Platform while at EclipseSource.

Some have asked what motivates me to work on so many Eclipse projects. Take EGit, for example. In my humble opinion, Git is the future for version control systems and I want to ensure that Eclipse users, me included, can leverage these technologies seamlessly within the IDE. The motivation for my contributions to other projects is the same. Essentially, I’m driven to integrate everything I need for my workday into the Eclipse IDE and take steps toward a fully integrated interface.

Not surprisingly, Mylyn, the integration and task-focused interface framework for Eclipse, has been included in all of my Eclipse installations. In fact, my second bug in the Eclipse Bugzilla was filed against Mylyn, the most innovative and useful plug-ins for my personal workflow. I have always been mesmerized by how Mylyn helps me daily with the task management and the task-focused interface. After experiencing Mylyn, I needed to have everything I need integrated with the IDE.

Today, I’m proud and happy to announce that I’ve joined the team at Tasktop Technologies, who created and lead Mylyn. I’ll now be able to turn my full attention to the great effort to deliver a seamlessly integrated IDE experience that shows all of the information I need while focusing the UI to show only the information I need. It’s great to be a part of this exciting movement that is changing the way we work!