Back to the Future: Eclipse Converge & Devoxx US

Last week, Obeo sent me to San Jose, California to attend the 1st Eclipse Converge and Devoxx US which was really cool of them. It makes sense to co-locate those events as both involved Java developers and open source projects. I really believe that these communities have so many things to share that this week in California would be a great occasion to learn from each other.

Back to the Future

Eclipse Converge

I started my week by attending Eclipse Converge, a one-day event dedicated to the Eclipse community and co-located with the IoT day.

Eclipse Converge & IoT day

The number of Eclipse committers present was amazing, which was particularly noticeable thanks to the Eclipse committer swag, a cool purple hoodie!

Eclipse Committer Hoodie

One thing I noticed is that this year for the first time, they have it in women sizes! This is one of those little things which helps our community to become more diverse! Thanks Eclipse Foundation, I love it so much!

As all Eclipse events, it was a great moment of social networking, attending high quality talks, meeting the usual suspects and getting the chance to exchange with american Eclipse community members.

Devoxx US

The day after, Devoxx US started! It was a new chance for me to meet this extended community, as this was my first Devoxx ever and no doubt Devoxx is a great event. Thanks to the Eclipse Foundation for having gathered 700 attendees from 31 countries in the same place during 3 days. One of the important thing about Devoxx is that it is a vendor neutral event: not everything is related to Eclipse or a specific IDE, there’s a much wider diversity of content. Thanks to this, I’ve been able to attend many different demos based on different IDEs. This allowed me to notice some interesting differences:

I loved the clean UI of VSCode,

I appreciated the templates and the zoom in IntelliJ that allow fluent live coding demos,

I was impressed by the talk by Stevan Lemeur and Florent Benoit and the easy setup of Eclipse Che thanks to CheFile and Factories! From just clicking on an hyperlink, it will provide you a complete IDE in your browser with all the tools, projects and source code you need. This opens a really cool possibility for open source projects who want to ease the effort to start contributing.

I discovered the new stuff that will be relased in June with the next Eclipse Oxygen version. Wayne Beaton from the Eclipse Foundation and Gunnar Wagenknecht from SalesForce did an interesting talk about all these useful projects existing or arriving: Code recommenders, ECLEmma, Graphviz editor, Improved UX with a better use of screen space (margins reduced, default styling…), support of Java9 and JUnit5, and a new Generic Editor becoming particularly useful combined with the Language Server Protocol.

Eclipse Oxygen

Language Server Protocol

Until I heard about LSP, I did not realize how complex it is for language developers to get a good support and tooling of their language in all those different IDEs. A really clear introduction to LSP was given by Sven Efftinge from TypeFox who explained the origin, the status and the potential of LSP for the Eclipse community.Language Server Protocol ExplainedThanks to this talk, I now understand better the power of the LSP. Open sourced by Microsoft for VS Code, the Language Server Protocol is the new trend for language editors. In a few months, Microsoft, Red Hat, Codenvy and many others started collaborating to implement it for VS Code, Eclipse, Eclipse Che, Emacs and even Gnome builder! Only open source can create this kind of synergy and cooperation. In Eclipse, it results in three new projects that will be released with the next Eclipse Oxygen :

LSP4E: provides integration of language servers conforming to the Language Server Protocol into the Eclipse IDE.

LSP4J: provides a reusable Java implementation of LSP. It implements the types as well as the communication, including serialization to and deserialization from JSON.

Generic editor: supports easily new languages. For the next release, LSP will allow to get the same level of support for JS in Eclipse and VS Code. But even more when like me you are working on Domain Specific Language, this could be really powerful: imagine you’re developing your own DSL and you easily get support for it in all the editors. This is possible now thanks to Xtext Core. This is only the beginning, there are some remaining issues to solve around extensibility, creating a market place, supporting debug features… At the moment the LSP is dedicated to textual editors, I expect that one day it can be extended to graphical editors too!

Lessons Learned

Open source allows to gather skilled people from different companies to develop together around a common goal. A conference like Devoxx allows you to advance your personal knowledge and to become an innovation agent in your own company. The organizers define it as a “Conference for developers by developers”. I attended many talks that highlighted how important it is in our domain to learn from our peers. Marko Gargenta in his talk about Peer Learning narrated his experience at Twitter and explained that there are different ways to share knowledge, classically by organizing techie classes but not only. One of the interesting things I remember from his talk is the need to share knowledge about technical aspects, but also about the company culture, for example by recounting what he named War Stories. Ryan Sonnenberg talked about what they did to disseminate the knowledge at Uber while they scale. From his point of view, best practices shared by code reviews do not scale as an individual reviewing code cannot disseminate knowledge fast enough. The main point for him is to hook into the build system in order to enforce patterns and so eliminate the repetitive work and cumbersome manual processes: use static analysis, FindBugsInfer:Eradicatechecker framework… I attended three other good talks sharing best practices from the battlefield:

Ten simple rules for writing great test cases by Stuart Marks & Steve Poole: Rules to maximize your effort & protect investment in testsTen simple rules for writing great testcases

Prototyping mindset by Marty Haught: Invoke YAGNI whenever it makes sense and reduce the complexity of your solution!

Test Lessons from the field and Effective Unit Testing by Elliotte Rusty Harold, Simple and easy to follow advices for every day that could be summarized by:

  • Separate your Eclipse/Non Eclipse code, your GUI/Non GUI projects,
  • Test also your configuration files (plugin.xml, MANIFEST.MF, plugin.properties…),
  • One of the most obvious advice but definitely worth to be heard when you found a bug first write a test and then fix the bug.
  • And finally use Continuous Integration and code coverage tools like Cobertura or Jacoco.

Build

Build was also the topic of several excellent talks. I always use Maven just from habit and not really because I love it. That’s the case for most of us, we use it and hate it. Andy Gumbrecht proposed an intriguing ignite session by declaring I do not hate Maven. He explained that it is not useful to fight against Maven, when you have to do something with it just do it the Maven way. For him your pom hygiene is the key, it should read like a book, keep it clean and tidy. Manage your environment at the highest possible level in your top parent and invest in global properties to control it. Manage versions and not scopes. Groovy gives the ability to do anything at any stage of the build, so use it. And when you have a Maven issue, just remember that Google is your friend!

I took the time to explore what other build systems can offer. An excellent tools in action was proposed by Baruch Sadogursky & Oleg Šelajev about Maven vs Gradle, it was mostly a demo comparing the tools on the same project. At the end, my impression was that both provide the same features, it is more a matter of taste: Maven due to XML is very verbose and Gradle feels more readable/maintainable. For the ones using Eclipse like me, using the M2E plugin can help, for Gradle lovers, a thorough overview of the Gradle tooling available in Eclipse was done by Ned Twigg. To go further, and for whom performance matters, Ryan Sonnenberg during his session Building at Uber scale talked about OkBuck, a plugin to use Buck build system on Gradle project.

JDK8

I took time also to inspect some classical APIs. My first astonishment is that : Yes it is possible to do a 1h talk only about Optional! Stuart Marks did it and it was pretty interesting. Going through examples, he declaimed the following seven rules which for sure have to be pinned to my wall :Optional - The Mother of all BikeshedsOne more talk I found useful is the one about comparing the different Java Collections libraries. You know this doubt you have sometimes: should I use Java Collections? Guava? Eclipse Collections? Which one would be the most effective in my situation? The following summary can help you take a decision:Collections.compareStuart Marks again demonstrated the new features of collections in Java 8, as well as what’s coming in Java 9: Collections Refueled.

JDK9

As you guess, one of the hot topic during Devoxx was the new Java 9! Definitely, the next stop for the Java developers will be the upcoming release of the JDK9, on July, 27th. Notice that finally Oracle adjusted the versioning scheme: they will no longer be named 1.x! There were lots of Oracle talks about Jigsaw, the new modular way of coding. In fact, this is not that exciting, even more when you are working in the OSGI world as I do since many years now. For most Java developers, this seems mostly like something which looks painful as it might break everything. Trisha Gee did a great talk Anticipating Java 9 functionnality & tooling presenting what we could expect more from Java 9 and demonstrates how IntelliJ already support it. Worth mentioning that Eclipse also already has support for JDK 9 thanks to the great work done by the IBM JDT team. They announced a special Eclipse update available at the end of July to support it the day of the JDK9 official release. So what are those little and big things I await for Java9 ?

  • Better everything: memory, performance, doc, faster compilation…
  • New methods on stream API: takeWhile/DropWhile, List.of/Set.of/Map.of/Map.ofEntries
  • HTML5 Javadoc
  • Javadoc search
  • Private static methods available in interface
  • @Deprecated(since, forRemoval)
  • New process API
  • Java9 REPL: JShell
  • Flow API which means that reactive programming is an important programming paradigm now and is really here to stay. You do not know yet what it means? Have a look at the good introduction by Venkat Subramaniam about Reactive Programming in Java.

Modern web

I am not a web developer but I attended few interesting talks about modern web development as well, my top 3:

Binge streaming your web API by Audrey Neveu & Guillaume Laforge where I discovered the principle of Server-Sent Events and a great use of JSON patch.

Angular2 for Java dev by Yakov Fain which demystifies the Angular framework.

Is your JavaScript ready for enterprise ? by John Brock who tought me to resist to the hype, to rediscover HTML5 and to choose between all the JS frameworks and libraries options.

Homeworks

As usual coming back from a conference, I still have some homework to do now, I will just share what will be the next stops for me, I should have a look at:

Mockito 2 : I have to re-try this popular mock framework which can be used in conjunction with JUnit to write even cleaner tests.

Cucumber & Citrus : was not able to attend this one, I am waiting for the video.

JUnit5 : one of the best news of this week, a complete redesign of the JUnit framework, that will arrive soon and well integrated in Eclipse for the Oxygen.1 release for this fall.

Open your mind

To conclude, DevoxxUS was really impressive in terms of technical contents. There were also lots of fun and unexpected sessions. I laughed out loud during the session about the Business of Technology Business Technology by Chet Haase and the Java Posse live podcast and moreover I learned diverse things like home brewering or how to not restore a VW bus. Finally, I opened my mind to new horizons with great sessions about experiments around AI designdeep learningquantum computing! No doubt now I have to attend the other Devoxx in France, in Belgium and in US again. If you have the chance to attend Devoxx France next week, come by to say ‘Hi’ to the Obeo guys at the Eclipse Foundation booth 26. See you there in the future!Where we're going we don't need roads

Sirius 4.1 is Out! What’s Inside ? Sadness

That’s too sad! EclipseCon Europe finished yesterday.

It was again a great conference, with inspiring talks and excellent discussions with different members of the Eclipse community. These moments with our community are motivating us to prepare the future of Eclipse Sirius.

 So what’s next? What would we cook for you in Eclipse Oxygen?

3ba14416270031.5632259d47f7e.jpg

As we already said in our talk, we are already preparing the future with Sirius 4.1 when we introduce the DRepresentationDescriptor. This internal change has no impact on normal users: it was made as a first step to prepare for better scalability down the road. For specifiers and developers who wrote code that depends on the internal organisation of the *.aird files, you may need to adapt your code.

To learn more about the Sirius roadmap, be sure to not missed Cedric’s talk at SiriusCon.

I will also give a talk with Stéphane specifically about the Properties view feature, we will detail what’s possible with this new feature:

  • Let Sirius automatically create default properties views for your designer

  • Create a simple properties view description and customize it as you do for other types of representations thanks to the following widgets: label, text, text area, checkbox, radio, list, reference

  • Use the new EMF.Edit customizations provided by Sirius

  • Discover the power of the dynamic mappings to automatically create the properties view fields for the different types of elements used in your metamodels

  • Understand how to provide filters and validation programmatically

  • Learn how to contribute some custom widgets

And much more!

Do not look for excuses, SiriusCon is where you have to be if you are interested in graphical modeling: easy to come as it will be held in Paris near the tour Eiffel, it’s a one day event, and it’s free. The program promises to be interesting with talks about case studies on the morning, technical sessions by the afternoon and a clinic all the day.

I am counting on you being there on November 15th and I hope to see you soon at SiriusCon!

Sirius 4.1 is Out! What’s Inside ? Anger

Do you ever feel that? This week I often dreamt I had the gift of ubiquity… I could replicate myself and be in several places at once. It would be a really useful skill to participate to EclipseCon Europe. I am angry to not be able to see all the talks I would have liked to attend. Happily, as every year all the slides will be available on the EclipseCon website and most of the talks are recorded and will be available on the Eclipse Foundation youtube channel.

If you missed our talk yesterday, do not miss our slides available online.

Sirius 4.1 is Out! What’s Inside ? Fear

Wednesday will be a huge day for Obeo at EclipseCon Europe 2016. You will find several talks about Eclipse Sirius in the program, and one thing for you, you have to attend our talk about Sirius 4.1: Let Me Sirius That For You!

As usual when I have to give a talk I am a little frightened but in fact I love this feeling which pushes me to do my best :)

Our slides are ready, our demo is exciting, now we just need you at Theater Stage – Wednesday, October 26, 2016 – 16:00.

Sirius 4.1 is Out! What’s Inside ? Disgust

What feeling do you never want to encounter in life? For me it’s Disgust!

Nevertheless, I encounter it sometimes, in very special cases… for example when as a Java developer I have to work with the reflection API to fix some unthinkable problem.

 As the team behind Sirius, what matters most to us is to be sure that our final users never feel this about our product. That’s why in each release we work on improving the user experience by enhancing some diagram behaviours. In the new Sirius 4.1 we focused on:

  • Better zoom: In a diagram editor, the zoom with mouse wheel is now zooming on mouse location instead of center of the editor.

  • Edges improvements:

    • Straighten an edge: we have worked on some improvements on the diagram editor to offer a better experience to the end user. Sirius 4.1 comes with the possibility to straighten an edge to top, bottom, left or right. These actions are available on edge contextual menu Layout/Straighten.

      Straighten.gif

    • Display link between edge and labels: it is now possible to display an attachment link between an edge and its labels when a label or edge is selected. This is not the default behavior but it can be enabled by a preference in Sirius/Sirius Diagram/Connections preference page.

      EdgeLabelsLink.gif

    • Improve edge labels move: we also enhanced the move of compound edges with labels and connected ports. Now if you select several edges, their ports will follow the move smoothly.MoveBorderedNodes.gif

  • Snap back labels: snap back labels functionality is available on edge selection to improve snap backing speed for example on begin, centered and end labels on edges.

SnapBackLabels.gif

  • Snap to shapes border nodes: the “Snap To Shapes” feature now also exists on border nodes.

We want to hear you, we need to hear you to prepare the future of Sirius! That’s why we are organizing a Sirius BOF on Tuesday evening, join us and tell us what you think about Sirius!

Right after the Sirius BOF, I will participate to the Diversity BOF. If you are interested by this topic go also to Tracy’s talk this Tuesday afternoon.

Sirius 4.1 is Out! What’s Inside ? Joy

This week I am participating to EclipseCon Europe to present what’s new in Eclipse Sirius 4.1.

 What I feel like on monday morning: Joy!

On Monday evening I’ll be in Ludwigsburg for EclipseCon! This one is little special as it will be my first one as an official Sirius committer.

I am really happy to introduce you to the new features of the 4.1 release, especially what we did to improve the specifier experience:

  • Pre-registered service class: starting from Sirius 4.1, by default when you create a new Viewpoint Specification Project, a service class is pre-registered.

  • Improve the selection of deeply contained Viewpoint Specification Model elements: in a style property customization, the “applied on” field was used to open a popup with all styles of the VSM. As they are identified by type and color (e.g. square blue) a lot of entries are identical, making it difficult to select the correct one. Now it is more user friendly as the mapping container of the style is also presented.

StyleCustoSelection.gif

  • Properly configured I18N: we have completed our work on the internationalization, with the runtime strings being properly externalized. As a result, you can specify keys in your VSM and using a properties file you can have translated labels in your user interface, here in Japanese. Since Sirius 4.1, new Viewpoint Specification Projects are properly configured for I18N.

  • Specifier editor for properties view description: we provide also the completion, and contribute a new simplified reference widget.

I invite you to join the Sirius team tomorrow morning for the Sirius workshop to experience in live all these new improvements. See you there!

Sirius 4.1: Ready? Go!

When I was a child one of my favorite game was Puzzle Bobble, you may remember these two little dragons Bub and Bob. What I loved in this game : simple rules, easy to play and so very addictive.

This is exactly what I feel when I think about the new Properties View feature in Eclipse Sirius:

  • The rules are really simple as it is the same as the ones existing for the other Sirius representations : define your properties in the .odesign file, it is dynamic, no code generation is involved.

  • It is very easy to use as it follow habits of Sirius Specifier : use expression to go through the model, then it is flexible even for complex Ecore models.

  • And it is also greatly addictive! You will start by trying it on one of your Sirius based modeler and finally you will want to use it everywhere, even on non Sirius based editors.

The Properties View component exists from Sirius 4.0 but it was labeled as experimental. During the summer we worked hard on this topic and today we are glad to announce Sirius 4.1. Let’s go to the industrial world!

Stéphane and I will detail all the new features available in this new release at EclipseCon Europe, don’t miss it! Book the slot :  Sirius 4.1 : Let Me Sirius That For You! Theater Stage – Wednesday, October 26, 2016 – 16:00.

Also, don’t forget also to register for Fred’s funny Sirius Workshop: let’s create a graphical modeling editor for a robot! or attend Cédric’s talk about the Modeling Avengers and after all Be Serious With Sirius by coming to Etienne’s talk about Your Journey From First Experimentation to Large Deployment talk.

puzzle_bobble_3ds-6.jpg

As my favorite small dragons are used to say Ready? for Sirius 4.1 Go!

UML Designer 7.0

UML Designer 7.0 is out. This new release is based on Eclipse Sirius 4.0 and Eclipse Neon.

It provides plenty of brand new features:

  • Bi-directional link with editor (#523)
    image
  • New dashboard based on the Activity Explorer from Amalgam (#827)
    image
    image
  • Class diagram:
    • represent abstract element in italic (#758)
      image
    • represent static element underlined (#363)
      image
    • view the qualified name of a class in the tooltip (#851)
      image
    • stabilize association class (#856#854#857),
    • support N-ary association (#850#855#853)
      image
    • support qualifiers on association ends (#434)
      image
  • State machine diagram: orthogonal regions re-implemented by using the Sirius compartment feature (#125)
    image
  • Activity diagram: optional body layer (#757#846) and some bug fixes (#865)
  • Sequence diagram: clean & reorder the palette (#858)
  • Use case diagram: handle non human actor (#46)

All closed issues are available on https://github.com/ObeoNetwork/UML-Designer/milestones/7.0.0.

Try it and download it on: http://www.umldesigner.org/download/

Sirius 4.0 Gotta Catch ‘Em All: Fully operational battle station!

Finally, with Sirius 4.0, some newly introduced components are declared fully operational.

Compartments

Sirius 3.1 came with the possibility to create compartments where you can group and stack your model elements. The way your data is represented is better structured and the information is easier to understand. With Sirius 3.0, it was already possible to create compartments, but we had introduced it as an “experimental” feature since some behaviors were not supported yet. Today compartments are fully operational.

I18N

We completed our work on the internationalization. Now the runtime strings are externalized and a dedicated mechanism exists for the odesign files.
 To catch all the new features coming with Sirius 4.0 have a look to the slides of our talk at EclipseCon France! Another chance for you to join the Sirius community, SiriusCon will occur in Paris the 15th November 2016. Be sure to save the date!

Sirius 4.0 Gotta Catch ‘Em All: Super powered API

You already discovered with the previous posts that Sirius is more and more powerful.
Sirius 4.0 offers more and more possibilities to our advanced users thanks to super powered APIs.

API to control the tab-bar

The top area of all Sirius diagram editors is filled with the tab-bar, which provides access to many operations on diagrams and their elements.
From now on, Sirius provides an API to get complete control of how the tab-bar is filled: which elements to put (Sirius standard ones or custom ones) and in which order.

Better integration with EMF Edit


For the specifier, Sirius 4.0 comes with a better integration with EMF Edit. While it is only the beginning, Sirius is now contributing the EditingDomainServices service class, which can be referenced from any VSM. This class provides a large set of methods giving access to many useful features of the EMF Edit framework. It provides general editing domain related services and contributes all types of Item Providers, in a way that is directly accessible as service invocations from interpreted expressions. It also offers item property related services. A series of service methods can be used to invoke the standard EMF Commands available from and ItemProviderAdapter’s various createXXXCommand() methods. Note that contrary to the createXXXCommand() methods which simply returns a Command instance, the service methods exposed in this class will directly execute the command on the editing domains CommandStack.

To catch all the new features coming with Sirius 4.0 have a look at the slides of our talk at EclipseCon France! Another chance for you to join the Sirius community, SiriusCon will occur in Paris the 15th November 2016. Be sure to save the date!