Sunday, January 19, 2014

Literate Blogging

EclipseCon Europe 2013 Day 1: Cat Attaks



What a great day Sorry if this post is harder to read than usual, I did not have time to write it during the talks so I have to use my notes.




Single Points of Failure: The Human Element of Software Engineering Brian Fitzpatrick After warm applauses to celebrate Ed Merk's brithday, Brian gave us one of the best keynote we ever had at Eclipse Con. This is definitely in my top 3 with the EclipseCon France keynotes.



It started with a quote that well sums up the talk: "Engineering is easy, people are hard" . Although most of us has spent 5 to years learning computer science, we haven't spend one single minute to learn how to work with others. That's why we spend most of our time yelling and complaining, instead of doing what we like. By working on respect and trust, one could really improve his work conditions.



One of our biggest issue is the genius myth: most of us want to be seen as smart, because we want to look like our idols true, for me that would be Donald Knuth or Bret Viktor There is no genius or maybe once every century So this attitude only produces insecurity and inhibits progress because you're so afraid of making it wrong. I think Biran got me when he quoted Tylor Durden : You are not special. You're the same decaying organic matter as everything else. Then Brian defined the Bus factor principle, which is the number of people in your project that can be hit by a bus before your project collapses. Brian made us laugh with many stories, I loved that one : A manager loses 10 millions $ in one day. Then he gets to his office, prepares his demission letter. When called inside his CEO office, he gives the letter. Don't destroy bad habits, replace them with something better. Really a great keynote, with many concrete advices I'll definetely apply at home.



Turning Eclipse into an Arduino programming platform for kids Bats I did not attend Melanie's Talk but so many people were talking about it that I at least have to put a picture : She demonstrated how can Eclipse Sirius be used to define easy-to-access modelers to program a cat robot using arduino. The talk was definitely a success and you'll probably have a chance to see it in future Eclipse events.



Lean ALM Kersten Due to the diversity of the persons designers, managers and the artifacts doc, test, bugtracker issues, builds involved a software lifecycle, everyone uses different tools to related information. Lean development is ony lean if it is handled from end to end. Managing information in a spreadsheet somewhere in the chain and you'll fail. Thanks to the continuous integration devops, we are now able to have a lean development on the software assets. But for the other artifacts, we need a software lifecycle integration to link all this information. A good example is the gerrit mechanism in eclipse, in which hudson builds, reviewers and commiters can communicate very quickly and fail as early as possible. A similar mechanism must be made for scrum masters, managers is the keyword find a common representation to represent ALM information. Matthias Sohn , Robin Stocker Well the least we can say is that many cool stuff are coming in EGit. There's also an interactive conflict resolution during rebase, and the integration with emf compare for models, 3 way compare and mylyn links in history staging view.



Merge drivers: binary model-base merge drivers will be added to the text-based merge driver

Support for HTTP



There are also a lot of performance improvements the clone and fetch operations which went from 60s to less than 80ms thanks to the use of bitmap indexes to reduce the "counting" phase



The demo of these new features was really impressive: "c ompact tree" view, filtering, additonal Drag and Drop support to open files, completion showing previous messages and impacted files, interactive add operations and staging area manipulation way easier.



Graphical interactive rebase, although still a work in progress, is clearly impressive It has all the feature you could expect edit, squash Just select the commits you want to rebase interactively, click on interactive rebase, open the new git interactive rebase view, UI tod ecide what you want to do with each commit and just press start.



Just to let you know that we'll put the slides of our talk tonight. The talk went well, I'll let you read the slides and ask questions if you're interested.



Modeling Symposium



Always a good place to discuss with modeling enthusiasts. Many projects were presented Client Platform, EMF Rest, EFactory 2 - based on Xtext, OCL It allows the definition of fine-grained access rules on your CDO repository. For instance you can easilly forbid one user to have WRITE access on any element of a specific type.



Sirius Booth



This year is particulalry busy as we also have to be at the Sirius Booth. Many many people interested in this new eclipse project, hope to see you all at the Sirius talks and especially at the Sirius BoF, where you will be able to build YOUR modelers for your needs with the help of the team : I also had passionated discussions with Mylyn Intent enthusiasts, many exciting things should arrise in the Eclipse Luna release : Well that's it for today, see you tomorrow!



Today starts the EclipseCon Europe 2013, plenty of exciting talks events planned, as usual I'll try to sum it up with day-by-day reports.



This EclipseCon will definitely be the chance to take a walk on the wild side of Eclipse projects, with the first release of Eclipse Sirius , new major versions of awesome projects like Code Recommenders, tutorials and of course the BoFs which remain my favorite event as we actually can annoy the commiters of our favorite projects with our ideas. By the way, we're giving a "hands-on" Sirius BoF tomorrow, come with your business model and leave with awesome graphical modelers for it! It's been 2 years now that we have started this concept for companies, I'm really excited to see what the community will do with Sirius.



Just realized I did not post about this interview made for InfoQ France. This is a general presentation of Mylyn Intent principles, with useful information to quickly get started french http: We are currently working on Intent stability and performance, many improvements will be available in the Intent 0.8.1 release with Eclipse Kepler SR1 in September



And by the way, we submitted an exciting abstract for EclipseCon Europe http: Melanie will demonstrate how she used Intent to specify the behavior of UML Designer , and make sure that as soon as she modifies the behavior of the modeler, the specification is correctly updated.



Today I wanted to talk about one of the components we had to develop for Mylyn Intent: the Markup bridge, which allows to represent any Wikitext-parsable document in MediaWiki, Textile, Confluence, TracWiki and TWiki markup as an EMF model.



Notice that this component is completely independant from Intent, and only depends on Wikitext and EMF.



As explained in my previous post , we decided to represent Intent documents as EMF models. An Intent document is nothing more that a set of pure documentation zones using a Wikitext syntax and additional information between doc and Java classes, Manifest files



So to be able to represent an Intent document as a model, we first needed to represent Wikitext content as a model.



The ModelDocumentBuilder by our markup plugin intercepts those signals, and:

Changes state if needed



Sources of the org.eclipse.mylyn.docs.intent.markup plugin are available on github from the intent git repository



And for those who me enjoy EMF, the markup plugin also defines a WikitextResourceFactory, associated by default to any file with the ".textile" extension, that creates an EMF Resource from a textile file. EMF resource containing the content of the textile file as a model. We even have a prototype, the that allows to read a page from a Wiki and represent it as a model. Pretty useful for exporting the content of a wiki as a PDF for example.



Well representing information as model brings a lot of benefits, as explained in my previous post . The main one in that context may be that it is straightfoward to write new generators for Wikitext documents. The markup.gen plugin contains HTML Latex generators - contributions are welcolme : But all over benefits are interesting too: it is now easy to define validation rules on our textile documents, you can store it in databases or collaborate in real-time on textile documents According to me, being able to represent any document the time being it is just for Wikitext-compliant docs, but we can imagine doing the same thing for AsciiDoc, Latex or LibreOffice documents in an unified way allows to use the right tool for the right task.



I think it makes cense to pull-up this markup plugin in the mylyn.docs component of Intent I have started a discussion about this with the mylyn docs community, and raised a new bugzilla issue .



Hi guys,

people often ask me why on earth



I use EMF in the Mylyn Intent code. Intent has nothing to do with models first sight at least and yet I use EMF everywhere. I think this question is interesting, and shows that a lot of people still don't see the awesome benefits brought by the use of EMF the whole Eclipse Modeling Tools.



In this post, I'll try to briefly list all the benefits and drawbacks of having based Intent on EMF technologies. Storage abstraction: from workspace to database



The first benefits is that, by storing the Intent Document as an EMF model of text I can use any serialization mechanism provided by EMF. EMF binary serialization would optimize the disk space for free



using the



CDO to serialize the Intent document allows to store it inside a database H2, MongoDB, PostgreSQL for free. CDO also provides real-time sharing capabilities 5



We could perfectly imagine using a JSON-based serialization , so that my Intent Document can be interpreted by any javascript framework provide a web-based editor for instance Synchronize with any technical arfifact Compare One of the key feature of Intent is to be able to compare the technical artifacts referenced inside the Intent Document with their actual state in the workspace.



Then we use the EMF Compare project to compare the Intent Documentation with the Workspace. EMF Compare also provides nicelly integrated UI to display the differences between doc code:



And, of course, you are able to make interactive merges between the doc the code. Complete tooling to export the Intent Document Another strong benefits brought by the Modeling stack is Acceleo : it provides a nice tooling to define your own generators. So it is pretty straighfoward to write exporters for the Intent documentation: for the time being, there is only an HTML Bootstrap export available, but we are also working on a nice LaTeX export.



In addition of being easy to write, providing type checking so that you can easily update your generators when your model changes and a first class user experience refactoring the Acceleo modules are easily extensible. So if you are not 100 pleased with the default HTML export and want to customize it, you can easily extend and override the little parts you want to change.



Intent uses this framework to validate in real-time the referenced technical artifacts. So you are able to define custom constraint with richier capabilities than with checkstyle for example: you can plug a custom constraint that says that "Any Java class extending AbstractAcceptanceTest should only contain public methods entitled Any time this constraint is broken, Intent will display validation issues and provide quick-fixes can plug quick-fixes by contributing to extension points Real-time collaboration According to us, Documentation is a social task, that could really benefits from real-time feedbacks and review. Thanks to the real-time notifications provided by CDO, with a CDO-based Intent Repository 2 users can share their doc in real-time. Any time a user saves, the modificaitons are commited on the CDO Repository, and all clients that have an Intent editor opened see the changes in real-time.



How long would it take to write your own server with such capabilities? REST APIs thanks to EMF URIs



Another useful thing is that EMF allows to provide your own URIHandler, so that you can provide REST APIs. JavaClass represented as a model



So you can see that the keyword here is absraction : abstraction in storage, representation, generation, validation, comparaison The Eclipse Modeling Stack is full of tools that you can use for free to provide added value to your software. For instance, I could use the new Sirius project to define graphical modelers allowing to visualize graphically and interact with the Intent documentation. I'll have to write code migrating the old models as instances of the new 1.0 metamodel.



But this is an issue you would have had even when writing your own serialization mechanism.



Please let me know if you have reaction or question, I'll be glad to answer! 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



Like for last EclipseCon Boston, I'll try to share things I've lived and learned during those 2 days.



JavaFX tutorial



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. Check out this link to see how you can make JavaFX-based slides. RCP OSGI or e4-based application in two clicks, pretty impresive. In result you'll get an fxml file that you will be able to load using the FXMLLoader library, and Bam! JRebirth is a JavaFX framework based on the RIA pattern . Architecture seems neat, definitelly want to test that.



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 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 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. B y 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.



Jean-Luc Johson, Olivier Lacroix and Matthieu Helleboid 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.



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.



Anne-Laure Lugan Astrium and Igor Laborie shared their experience about building RCP apps, with no previous experience on the subject 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. Any developer with some UI experience without knowing SWT or JFace should learn quickly, there is a lot of tutorial regarding SWT UI. 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.



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 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.



Well I think that you already know them: OSGI provides modularity, Eclipse RCP framewok all kinds of usefull frameworks and good practices 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. How can I prevent my Eclipse RCP app from having bugs? They started by making UI functional tests 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.



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



There are many other tuff questions to answer I use EMF? To answer them, always think about your context, and the skill level of your team. As long as you are ready to refactor your code design, you will get by.



In conclusion, Igor advices to read Eclipse code is plenty of good examples think simple, and share your experience with your team.



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. ECSS even for open source 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.



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 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.



John Athorne Canada affirms that developers already use browser-based tools 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 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 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 10 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.



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.



Ignite talks



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. 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. Coap: in 2020, we estimate that there will be 20 billions of connected devices. Coap 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 on eclipse labs allowing to collaborate around DSL definition. 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.



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: dense in interesting talks, as usual great to meet people interested in your projects, wine is better than beer I won't start a troll by saying so In one sentence: Eclipse magic happened in Toulouse too!



Hi guys, once again it's been quite a long time but don't worry we are still working hard on Intent. We tried to adress in priority the features and bugs raised by the community bugzilla or during EclipseCons for example:



We simplified the syntax of the formal links, which was juged too complex by some users. To link a piece of documentation with a piece of java code, you now just have to write The old more complete syntax is still available, for those who liked to go further and be able to specify things directly inside documentation.



We wrote a basic "Getting Started" documentation cheat sheet, that will be improved soon are more than welcome



In order to improve the end-user experience for writing pure documentation, we added new completion entries, improved the rendering, added a real-time HTML Boostrap Preview of the Intent document So please, if you have feedback or negative or ideas for Intent, do not hesitate to spam us on the Intent forum or on the bugzilla , we will take time to answer.



Just for those who might not know what Intent is about, the purpose of Intent is to provide tooling for keeping you documentation synchronized with the changes you make on your code files, Manifest files, models Whenever you modify your code, Intent is able to detect the litle doc parts that need to be updated, avoiding you a painful and manual search through whole your doc You could see Intent as an Agile documentation, able to quikcly react to changes. You may want to read this Jaxenter interview about Intent .



Let's say you have a document specifying a functional Scenario Driven Testing approach and an acceptance test playing this scenario. You can drop the test method to link it with the doc : Now that doc java method are linked, you are able to:



Use hyperlinks to navigate from doc to code



Make semantic s earches on your doc to easily retrieve all the doc parts related to a java class through the quick outline O Keep the two synchronized: any time you will modify this test method, Intent will raise a synchronization issue from problem views You can visualize it graphically through a compare editor, to determine how you should update your documentation.



Everything you need to know about Intent at EclipseCon France



I'm not giving too much details here as I will make a complete presentation of Intent features extensibility at EclipseCon France .



Attend to the Intent talk and discover:

How to create a good Intent documentation from scratch



How to use Intent tooling to keep doc in sync. "Any string displayed to the end-user should be externalized", "Any Acceptance Test should be named after the functional scenario it covers" Plenty of other cool stuff, like real-time collaboration around doc



I'll be happy if after this talk you are conviced that if you want your team members users to RTFM, you must start by making a better FM!



Once again, please do not hesitate to spam me with questions if you see me at EclipseCon, I'll be more than happy to answer, even if I seem to be working, I'm most likely faking it : Stay in touch for other Intent news! Well that's sad, but on the bright side I think that this final day was one of the best ones.



As a hudge Beatles fan, I had to finish this set of posts with a Beatles song.



I think it sums up the Eclipsecon OpenSource spirit "And in the end, the love you take is equal to the love you make". Take care of your community users, and they will take care of you.



Jim Laskey showed us Nashorn, a Javascript engine for the JVM. According to Jim, bringing javascript to the VM advances the technology and atracts new developers. The nashorn javascript engine compiles javascript to byte code on demand and links the code dynamically via dynalink. Jim also created jjs, a new command line for javascript. Thanks to the javax.script api, you can interpret your javascript scripts directly inside java. Please continue the discussion on the Intent forum and I'll be glad to answer, and of course check out the Intent M6 from Kepler.



Stephane Bonnet Mathieu Helleboid from Thales gave a great presentation about how they used Eclipse Sirius and CDO to provide a user-friendly application allowing to collaborate in real-time around models, diagrams tables. Thanks to an automated fine-grained lock mechanism, any time a user makes a modification the application locks the minimal set of elements to make sure that no conflict will occur.



Really interesting, and the audience asked a lot of technical questions. Benjamin Muskalla and Holger Staudacher made a really funny talk: we had to predict the behavior of pieces of code by raising our hands.



The EEF 2 talk was pretty impresive, go check the slides if you want to see how you can define full OSGI e4 based apps working on JavaFX without having to write any code, juste define some simple models.



Closing Session



After goodies distribution I wanted that black sweater all the PMCs told us about what was going on in the Eclipse ecosystem.



And now Time to drink and have fun with the eclipse community! I'm staying in Boston for a few days, hoping to find the BBB Burger in Boston and some cool bars you know any bar that let people play music just let me know



See you at next EclipseCon in Toulouse, and in the meantime, stay tuned for more information about Mylyn Intent and Eclipse Sirius!
Full Post

No comments:

Post a Comment