Hi guys! Today started the EclipseCon France in the lovely town of Toulouse. Plenty of interesting things, let me try to share my excitement with a band from Toulouse, “Zebda”. The song is called “Motivated”, which sums up my state of mind pretty well ! http://www.youtube.com/watch?v=dBpLJ4X4vJY
Like for last EclipseCon Boston, I’ll try to share things I’ve lived and learned during those 2 days. Let’s start with the morning tutorials.
I have to admit that I’m a JavaFX noob, and I wanted to seize the opportunity to learn more about that technology.
Well the first thing I can say about that tutorial is that Sebastien Bordes is really passionated by JavaFX. He develops JRebirth, a framework for JavaFX (see below). Even his slides were in JavaFX, how cool is that? Check out this link to see how you can make JavaFX-based slides.
Here are some of the technologies and framework we tried during this tutorial:
- eFXclipse that allows to create an RCP OSGI or e4-based application in two clicks, pretty impresive.
- Scene Builder which is a WISIWYG editor allowing to easily design javaFX apps, you can see it as a kind of “Window Builder” for JavaFX. In result you’ll get an fxml file that you will be able to load using the FXMLLoader library, and Bam! you’ve got the App you’ve designed :)
- JRebirth is a JavaFX framework based on the RIA pattern. It also provides lot of utility class (like Java Builders) and also simplifies multithread development. Architecture seems neat, definitelly want to test that.
(Thanks to Fanboy for the picture)
Then Sebastien showed us an impressive demo of JavaFX power and helped us to revise our multiplication tables with a Game he created :) Quite impressive rendering, although I did already have a sneak peek of JavaFX-based apps thanks to the EclipseCon Boston’s Family Freud (made by Marcel Bunch, the Code-Recommender leader).
Then we tried to modify the game to change some parts, and Sebastien shared some insights on the way JavaFX deals with Layout & Bounds (especially when using Rotation or reflection effects), detailled the way notifications are handled, showed us some advance styling with CSS, real-time image transformation and how to create animations.
So to sum things up, good tutorial, I’ll have to try JavaFX at home. By the way, did you know that EEF 2 provides a free integration with JavaFX? You may want to check it if you’re interested in JavaFX.
OSLC tool integration tutorial
Jean-Luc Johson, Olivier Lacroix (EAS) and Matthieu Helleboid (Thales) introduced OSCL to us. Complex systems design still have a lot of issues to tackle, from Collaboration between different domains to be able to handle huge amount of data. In that context, OSCL provides a REST API allowing tools to get data from other tools, so that you can use the right tool for your current task while staying compatible with others.
The tutorial allowed us to learn how to consume & provide OSLC services.
Keynote “The Humanist Perspective of Industry 4.0”
Hans-Jurgen Kugler gave us a truly inspiring keynote, I prefer not to sum it up as you should definitely check the slides. Plenty of interesting ideas and books to read, one of my favorite EclipseCon keynote ever.
I’ll just repeat one of Kugler’s favorite quote: “Some look at things and ask ‘Why?’, others imagine things and ask ‘Why not?’”
How beginners took on the RCP Framework!
Anne-Laure Lugan (EADS Astrium) and Igor Laborie (AKKA) shared their experience about building RCP apps, with no previous experience on the subject (well, Igor did come help the team every month as an RCP expert). They organized their talks around 5 questions that they had to answer during the development of their RCP application.
1. How to learn the Eclipse RCP Framework?
- Any developer with some UI experience (even without knowing SWT or JFace) should learn quickly, there is a lot of tutorial regarding SWT UI.
- The most important and first thing to learn is OSGI. Once you’ll get the major OSGI principles and begin to “think modular”, then you can go on with the UI technologies.
Igor adviced people to attend to the OSGi talk given by Michael tomorrow.
2. How to start a project with RCP newbies?
They used Agile methods, and particulary this item of the Agile Manifesto “The best architectures, requirements, and designs emerge from self-organizing teams”. So they started by not “thinking modular”, keeping core & UI in the same plugins, making this mistake on purpose as they did not feel like doing better. A few months later, they decided to split everything, but then they were ready to do so and had a better knowledge about OSGI.
So don’t be afraid of making mistakes first, and refactoring latter.
3. What are Eclipse RCP benefits?
Well I think that you already know them: OSGI provides modularity, Eclipse RCP framewok all kinds of usefull frameworks and good practices (logs, preferences…).
Reuse of existing code is also a major aspect, Eclipse having tons of snippet or open-source code to check before re-inventing the wheel.
4. How can I prevent my Eclipse RCP app from having bugs?
Of course, this goes with test automation. They started by making UI functional tests (using Squish as they wanted to be able to test QT-based apps too), but such tests are always very long to execute, and they finally managed to transform UI tests into integration tests. And of course: start writing test at the begining of your project, don’t wait.
5. 3.x or 4.x?
Ah, I wondered if they were going to talk about that :) Igor thinks that it is easier to use 3.x, 4.x introducing new concepts (e.g. dependency injection) that are tuff to understand for newcomers. Moreother, the compatibility layer will make 3.x apps working on Eclipse 4.x.
There are many other tuff questions to answer (Shall I use EMF? Shall I depend on org.eclipse.ide? …). To answer them, always think about your context, and the skill level of your team. Again, don’t be afraid of making mistakes. As long as you are ready to refactor your code & design, you will get by.
In conclusion, Igor advices to read Eclipse code (there is plenty of good examples), think simple, and share your experience with your team. I liked this talk, quite refreshing to attend to.
Software Quality: the Eclipse Way and Beyond
Software Quality is mandatory for the polarsys project, in which projects must be supported for more than 20 years. In the eclipse context, the whole stack is as strong as its weakest part. However, there is no automatic, objective and unified evaluation shared by all eclipse projects. The maturity assessment working group intends to propose a generic quality model, and enforce the quality requirements for projects included in polarsys.
There are many definitions and standards already existing for software quality (e.g. iSO 9126 or ECSS), even for open source (OSMM, Qualipso…), but they could not fit the variety of open-source projects. In the Eclipse context, it’s funny to see that there is only few quality guidelines, whereas community processes are fully defined. We could try to define quality with 3 criterias: reusability, analysability and changeability.
Data providers were implemented, giving for example the number of posts on the forum, the median time to answer, number of commits, ratio of fix-related commits, number of milestones… Datas are computed for last week, last month and last 3 months.
Thanks to all that data, we are able to produce automatically an eclipse quality model from source code, mailing lists and forum, process & SCMs. Then you are able to measure your responsiveness, reusability, support… The quality model will be published on a centralised dashboard. There are still improvments to make (add bugzilla information or download stats to the metrics for example), but I was glad to see this subject coming up and being dealt with very seriously. I’ll definitely follow what is going on with this project and invite you to do so as well.
Orion deployed: Orion goes from prototype to industrial
The most common question detractors of Orion ask is “Do developers really want to move to the cloud?”
John Athorne (IMB Canada) affirms that developers already use browser-based tools (for their mails, tasks)… Moreover, doing so will make social coding easier, and ask yourself how enjoyable was your last IDE setup experience, you should get the point :)
Orion focuses on embracing modern browser capabilities (get things fast) and goes from creating, editing, self hostring to deployment and source code control. One of its main specificity is to allow plugins from different web server to communicate in the same page. The Orion editor is one of the most popular component, probably because of its great scalability, and because editing files is so fast. But there are many other things in Orion, for instance a command-line shell, git integration, compare wizards… You can both contribute to Orion or just reuse some of its components (e.g. embed the Orion editor inside a blog post).
The Orion community is growing very fast, Firefox tools heavily use the Orion editor, HP demoed agile development tool using Orion… The downside is that expectations are getting hudge (support 10 000 simultaneous connections…). The Orion server has been improved a lot, from performances to extensibility. In regards to the client integration, they used to use a single specific JS framework, but they now decided to “going native” and use the browser capabilities. They also worked hard on client customization, so that any UI part can be modified.
I’m not personnaly a hudge fan on the “coding on the web” approach, but John really conviced me that Orion is taking a new turn and does provide interesting and unique features.
The principle of ignite talks is that speakers had to present their technologies in 20 slides and… 5 minutes! Interesting concept, and in result we learned so much in so few time. Bravo to the speakers, tuff exercice!
I did not manage to take notes for all talks, here is what was presented in one sentence:
- Swbot: the most awesome new feature is clearly the swtbot recorder, that allows to record a scenario on your app and generates the code of an swtbot test. Just add the assertions and you’ve got your test in a few minutes. As usual, Mikael made us laugh and managed to make both jokes and his point in 5 minutes :)
- Coap: in 2020, we estimate that there will be 20 billions of connected devices. Coap (constrained application protocol) is a REST protocol dedicated to M2M. It’s compact, simple to decode, includes a DTLS security protocol and provides a notification mechanism allowing to know when requested ressources change.
- Collaboro: both an approach and a set of eclipse plugins (available on eclipse labs) allowing to collaborate around DSL definition. On top of a mechanism allowing users and DSL specifiers to propose a solution, there are tools like a voting mechanism, a preview of the resulting DSL…
- RMF: I won’t talk about the requirement modeling framework as it will be detailled in a talk tomorrow, and that I’m planning on attending.
- Almathea: a model-based open-source platform for embeeded software development, including modelers and code generators. Wonder if they would be interested by Sirius :)
And now I’m going back to the hotel to work on my Mylyn Intent and Sirius talks tomorrow, hopping to see you there!
To sum up this first day: especially dense in interesting talks, as usual great to meet people interested in your projects, wine is better than beer (hoping I won’t start a troll by saying so)…
In one sentence: Eclipse magic happened in Toulouse too!