Mylyn Intent: the Shape of Things to Come

Posted on in Blog

Hi guys, I know it’s been a while since I’ve talked about Intent, but don’t worry, William and I are working hard!

This post will give you an overview of some of the features that will be provided for the Kepler release.

Reminder: What the heck is Intent and why should I care?

Intent is a documentation environment providing tooling for keeping your doc synchronized with your technical artifacts (models, code, plug-in dependencies…). Any time you make a change on the code, Intent will display synchronization issues showing the sub-parts of your doc that needs to be updated, leaving you the choice to update the doc right away, or later (e.g. just before a release). By giving your doc the ability to react to changes, Intent turns your doc into a true Agile Documentation. Please find all usefull informations (tutorials to get started, talks transcripts, example videos…) on the Intent wiki. Do not hesitate to spam us with questions or remarks on Intent forum.

What are we working on and what should you expect for the next Intent release ?

Since the Eclipse Juno release, we tried to use Intent on concrete industrial use cases, to determine which features were missing to make it efficient and usable.

For example, we used Intent to document models describing Enterprise Architectures, computed through the use of the Obeo SmartEA Modeling Tool. In the Design phase, models were quickly evolving and it was a good chance to test how Intent can help us keeping the doc up-to-date with those changes.

Let’s have a look at the features we have been working on and the upcoming ones for the Kepler release.

1. Tooling to quicken documentation update

We developped additional tooling, like quick-fixes and Drag-and-Drop support, so that you’ll never have to update your model fragments manually.

This improves significantly the time needed to update a documentation when your code evolves. Now you just have to: 

- See the doc parts that are outdated in the Problem View - Open an Intent editor on those parts (in one click)- Update your textual documentation- Apply a quick-fix that says to Intent “ok, I dealt with this synchronization issue”

Want to see those quick-fixes in action? Just take a look at the demo presented during EclipseCon Europe.

2. Live collaboration around Documentation thanks to CDO

According to us, documentation is a social task, which would benefit from real-time feedbacks and reviews. Behind the scene, Intent has been created as a client/server architecture: you have a central repository, in which we store the Intent document and other useful informations (synchronization/compilation issues, traceability informations…). Around this repository, many clients communicate through a notification mechanism. The Eclipse editor is just one client among others: any time you modify the Intent document and save your editor, modifications are commited on the Intent repository, which notifies all listening clients.

As this Repository concept is totally abstract, you can use many technologies to implement it. If the default implementation uses a hidden folder inside your Intent project, we can also imagine developping a CDO-based Intent repository. If you’re not familiar with the CDO technology, go take a look on its website. In a nutshell, CDO allows several users to share the same models. If a user modifies a model element and commits, all the listening clients integrate those changes in real-time. A CDO-based Intent repository allows several users to share the same document, and any time a user updates the documentation, all other user see those changes in real-time.

Not convinced? See a video demonstration of Intent collaborative features.

This is still a work-in-progress, but the CDO integration will be fully functionnal for the Keppler release.

3. To code synchronization and beyond

Although I’ve got some really great feedbacks from the EclipseCon Europe talk about Intent, many people are waiting for code synchronization capabilities (see the questions asked during the talk) before using Intent. 

Of course, this is within Intent scope, but we decided to improve the tooling stability and performances before adding new sync. capabilities. So up until now, Intent only allowed you to synchronize your models with your code.

However, by using Ariadne, a tool that allows to represent many technical artifacts (java code, manifests file, mylyn contexts, bugzilla issues, git repositories & commits, hudson builds, projects meta data…) as models, Intent will be able to synchronize your doc with your java projects.

This is also in Kepler scope, and Stephane and I plan to present the Ariadne/Intent integration at EclipseCon Boston.

4. And don’t forget: YOU’ve got the power!

Although we have a strong vision of what we want for the Kepler release, we are willing to postpone any feature if YOU think there is something missing to answer your needs. Intent is an open-source project, and we are open to any outside contribution, whether it is a feature request or code contributions. Please, spam us on the Intent forum with questions, ideas, feedbacks… We’ll be happy to discuss with you, even if you don’t agree with some of our choices!

If you’re interested in Intent, please do not hesitate to send us contributions, and we willl gladly welcolme you as an Intent commiter. Plenty of work to do on this awesome topic! I’m convinced that Intent is the future tooling for managing our documentation. If things go well, I will have REALLY EXCITING ANNOUNCEMENTS to make in the following weeks, stay in touch…