tag:blogger.com,1999:blog-57493746201251864142015-03-11T04:06:42.728-07:00Model Driven BloggingCédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.comBlogger82125tag:blogger.com,1999:blog-5749374620125186414.post-25477426883124712732014-10-16T02:57:00.000-07:002014-10-16T03:10:30.875-07:00Sirius 2.0 : Under the HoodThis summer was quite intense for the Sirius team. Sirius 1.0.0 was barely out that development of the 2.0 stream started while report from adopters which are not part of the Eclipse Release train started to appear.<br /><br />That represents fixing <a href="https://bugs.eclipse.org/bugs/buglist.cgi?chfield=resolution&amp;chfieldfrom=2014-06-26&amp;chfieldto=Now&amp;chfieldvalue=FIXED&amp;list_id=10278667&amp;product=Sirius&amp;query_format=advanced&amp;resolution=FIXED">more than 100 tickets</a> since the end of june, a few for Sirius 1.0.1 which got published a few weeks ago (and is part of Luna SR1). From those tickets 82 are targetting Sirius 2.0 (over a current perimeter of 101 tickets), we are currently validating the changes and closing the gap. As a sidenote more than one third of the tickets implemented in this version are directly funded by end users (hint : <a href="http://www.obeo.fr/en/services/support-maintenance">this might be you</a>).<br /><br />Sirius 2.0 will be released just before EclipseCon Europe , most of the 21 enhancements in this scope are already implemented and are under validation: &nbsp;<i>now might be a good time<a href="https://wiki.eclipse.org/Sirius/Update_Sites"> for giving a look</a></i>.<br />These enhancements are mostly focused on the diagram editor user experience, fixing long standing issues inherited from the default behavior of the GMF runtime and bringing nice features for intensive users of diagrams. But we'll tell more about that in a specific post, lets focus on the "not so visible changes" for now :<br /><h3></h3><h3>Performances and Scalability</h3>Another strong focus of the 2.0 version was performances and scalability : finding bottlenecks and taking them down.<br /><br />We worked on the basis of EcoreTools 2.0&nbsp;with a "big enough" model to detect such bottlenecks and mostly focused our efforts on the CPU usage (for now but memory will also be important at some point too). &nbsp;1.5Go heap was the target, as long as the scenario were doing fine within this bound we did not investigate.<br /><br />What is a "big enough" model you will ask, it is composed of 500 000 model elements (here EClasses, EAttributes, EPackages ...). 20 000 representations are created on top of those, 2 of them representing hundreds of EClasses.<br /><br />The test data is reverse engineered from the Sirius source code itself which make it quite "close" to a sensible Ecore model. Such a model makes it easy to identify bottlenecks: places where your code have a complexity relative to the number of model elements, or places where you are doing too much work on the UI thread.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-aPl8i1qF2YA/VD5FOW3PYpI/AAAAAAAAWl0/ymclmtIGllE/s1600/ecoretools-bigmodel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-aPl8i1qF2YA/VD5FOW3PYpI/AAAAAAAAWl0/ymclmtIGllE/s1600/ecoretools-bigmodel.png" height="323" width="640" /></a></div><br /><br />This has proven to be a very efficient way to identify problems and to fix them. Having a consistent installation of EcoreTools&nbsp;+ Sirius is quite easy, opening <a href="https://github.com/cbrun/org.eclipse.ecoretools.performance/tree/master/plugins/org.eclipse.emf.ecoretools.design.tests.perf/projects">the test project become a breeze then</a>&nbsp;and&nbsp;anybody in the team can reproduce the problem and measure for himself.<br /><br />And <a href="https://bugs.eclipse.org/bugs/report.cgi?x_axis_field=target_milestone&amp;y_axis_field=resolution&amp;z_axis_field=&amp;no_redirect=1&amp;query_format=report-table&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Sirius&amp;longdesc_type=allwordssubstr&amp;longdesc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=performance%2C+&amp;bug_id=&amp;bug_id_type=anyexact&amp;votes=&amp;votes_type=greaterthaneq&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;emailtype3=substring&amp;email3=&amp;chfieldvalue=&amp;chfieldfrom=&amp;chfieldto=Now&amp;j_top=AND&amp;f1=noop&amp;o1=noop&amp;v1=&amp;format=table&amp;action=wrap">here we are </a>:<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-e6QuqxZ5h0w/VD454uF1lPI/AAAAAAAAWlo/Ce4vhBFNUBM/s1600/sirius-perfo-2.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-e6QuqxZ5h0w/VD454uF1lPI/AAAAAAAAWlo/Ce4vhBFNUBM/s1600/sirius-perfo-2.0.png" /></a></div><br /><br /><div class="separator" style="clear: both; text-align: center;"></div>We fixed 16 tickets tagged "performances" for the 2.0 release, here is the list of improvements :<br />- Sirius is initializing itself quicker (notable on <b>startups and first usage)</b><br />- Many calls from the UI threads which were scaling poorly when you have thousands of representations are now way faster<br />- <b>Delete</b> have seen a big boost and is now scaling based on what you specify and how many things have changed during the execution of your tool <b>independently of the size of the model</b><br />- Diagram having <b>lists with many elements</b> are created and refreshed quicker (the improvement is noticeable has soon as you have lists with hundreds of elements)<br />- <b>Select All</b> used to have an irritable lag when you were working on a big model, it is now instantly completed.<br />- <b>Tree Editors</b> defined using Sirius are now more efficient in refreshing the SWT Components.<br /><br />But more things have been identified often with partial patches which have not graduated yet to the stage of "reviewed and regression tested" but will in the next releases. Expect some improvements in the way "save" is handled when you have hundreds of resources.&nbsp;This is a constant effort but one which has great pay-off: any improvement in Sirius itself brings improvements in the dozens of tools which are relying on it.<br /><br />Performances are always a tricky issue for a generic framework or technology, so many things will depend on how its used and in which context and the most innocent change can dramatically impact the properties of your tool. The #1 rule is : have test data which are representative of what you want to achieve, make sure it can be used and migrated easily from version to version.<br /><br /><h3>Headless - aka reuse the plugins with no UI</h3><br />Another area which have seen improvements is about using Sirius in "other contexts".<br /><br />A first batch of changes has been merged so that some of the basic services offered by Sirius are now able to run without any UI. Things like loading a representation resource, creating a diagram, &nbsp;refreshing it, modifying the model and saving can now be used as a server-side or continuous integration process for instance.<br /><br />Here is a scenario which will work in headless :<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-TMET9lupLCQ/VD5uKk3RsRI/AAAAAAAAWmE/Yo8vcz0aStM/s1600/sirius-headless.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-TMET9lupLCQ/VD5uKk3RsRI/AAAAAAAAWmE/Yo8vcz0aStM/s1600/sirius-headless.png" /></a></div>&nbsp;<span class="Apple-tab-span" style="white-space: pre;"> </span><br />I'm pretty excited about this release and I'm looking forward to see these improvements in the tools already adopting Sirius. Of course these are just a few more steps closer to the goal, Sirius 3.0 planned for June will bring even more !<br /><br />Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-56514621191413001922014-09-25T02:12:00.000-07:002014-09-25T02:12:56.500-07:00What makes EclipseCon Europe a good conference ?<a href="http://2.bp.blogspot.com/-4lWOBVP_3Ew/VCAbyge940I/AAAAAAAAWKA/Xclhb38hAcc/s1600/10552643724_92108f6723_z.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://2.bp.blogspot.com/-4lWOBVP_3Ew/VCAbyge940I/AAAAAAAAWKA/Xclhb38hAcc/s1600/10552643724_92108f6723_z.jpg" height="213" width="320" /></a><a href="https://www.eclipsecon.org/europe2014/">EclipseCon Europe 2014</a> is getting close and it will only get harder to book hotel rooms and flights. It's probably time to decide whether you come or not. Let me tell you what you can expect from such an event :<br /><br /><br /><b>Getting in touch with the technology,&nbsp;</b><b>&nbsp;the people behind it and its&nbsp;</b><b>users.</b><br />I would argue that this is the main point of such a conference. Those 3 days are filled with presentations either from the project commiters giving a glimpse of what you could expect, or from users of the technology giving experience reports about how it helped them and what you might want to keep an eye on. Furthermore, presenters are sticking around during the conference and the friendly spirit makes it very easy to start a discussion and learn more.<br />This content is something you won't find anywhere else.<br /><div><br /></div><br /><b>A lot of Modeling content</b><br />If you are into modeling or using it at work, going to this conference should be a no brainer. <a href="https://www.eclipsecon.org/europe2014/program/sessions/accepted?keys=xtext&amp;field_experience_value=All">Xtext</a>, <a href="https://www.eclipsecon.org/europe2014/program/sessions/accepted?keys=sirius&amp;field_experience_value=All">Sirius</a>, EMF Compare and<a href="https://www.eclipsecon.org/europe2014/program/sessions/accepted?keys=modeling&amp;field_experience_value=All"> many more</a> technologies are represented during those days.<br /><br /><b>Speakers are good</b><br />In the last five years we have seen an impressive boost of quality regarding the talks and the way they were given. Most of the talks are kept in a 35 minutes slot and with the Program Commitee we worked hard to make sure the sessions will have good content but also good speakers.<br /><br /><b>Tutorials, &nbsp;Unconference</b><br />3 hours sessions are planned so that you can get your hands dirty using some of the Eclipse Technologies. IoT,Cloud , Java, OSGi, EMF or Xtext are covered for the 2014 edition of the conference. Not only that but rooms are booked for the "Unconference" &nbsp;so that working groups can collaborate or projects can setup a "mini hackaton", that's a rare chance to gather people from different countries to work with.<br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-nilgnFOfwNM/VCAb8pJciEI/AAAAAAAAWKI/Ctkl5LaMPbY/s1600/10650623705_75a22fbff9_z.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-nilgnFOfwNM/VCAb8pJciEI/AAAAAAAAWKI/Ctkl5LaMPbY/s1600/10650623705_75a22fbff9_z.jpg" height="243" width="320" /></a></div><b>Social Events&nbsp;</b><br />The Circus, the concert, the receptions. Many occasions to enjoy yourself <b>and</b> to meet the Eclipse family.<br /><br /><br /><br /><br />If you haven't registered yet you might consider doing it <a href="https://www.eclipsecon.org/europe2014/registration">now</a>&nbsp;as the price will rise at the end of the month. &nbsp;<i>I'm looking forward to meet you there !</i><br /><div><br /></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-40926394465443121472014-06-20T01:49:00.000-07:002014-06-20T01:49:13.830-07:00EcoreTools 2.0 - The Luna Revival<div class="separator" style="clear: both; text-align: center;"><a href="https://www.eclipse.org/ecoretools/images/intro.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="228" src="https://www.eclipse.org/ecoretools/images/intro.png" width="320" /></a></div><br /><br /><br />With Eclipse Luna comes a complete re-implementation of <a href="http://www.eclipse.org/ecoretools">EcoreTools</a>, the diagram editor for Ecore. This is an important piece of news because EcoreTools is often the first step our adopters have to go through. Users are expecting to have a diagram editor to design a domain model. They are expecting this because they are used to this notation, they learnt it at school or university and even just this ubiquity makes it powerful in itself.<br /><br /><br /><br /><br />And that's why EcoreTools matter. And that's why EcoreTools matter even more for an organization like <a href="http://www.obeo.fr/">Obeo</a>.<br /><br />But then what happened ? Why did this project have been stale for years ?<br /><br /><h4>How it all started</h4><br />Let's come back to the creation of this project. The proposal has been submited in 2007, and in 2008 EcoreTools 0.8 was shipped with Ganymede.<br />At that time building such a graphical modeler was quite costly, even with the GMF runtime and Tools which were leveraged by the original team, going from a very basic diagram editor to a complete tool with a consistent user experience was a lot of work. And they tackled this work and had progress from version to version up to the end of 2009 when the company behind this effort got acquired and changed its focus. The project entered hibernation then.<br />Because it was a key component of the whole modeling eco-system, Ed Merks and I stepped up to take care of the project, leading it through the bare minimum so that it can be part of the release train and still exist. The plan at that time was to find other people interested in investing in it, unfortunately it did not happen and I can't blame them, as I said that was costly, an investment you could not do without clear gains to expect.<br /><br />Then Thales and Obeo open-sourced <a href="http://www.eclipse.org/sirius">Sirius</a> within Eclipse : a complete tooling and framework designed to build rich modeling environment efficiently, also designed on our experience with the shortcomings of the GMF Tool project. <b>Creating an Ecore modeling environment then became barely more work than maintaining its build</b>. I already had a starting point as we built an Ecore modeler with Sirius before, but many things in this tool were not quite exactly as I wanted it. That lead me to rethink all the interactions to provide a tool which actually assist you in design a <b>good</b>&nbsp;Ecore model easily.<br /><br />I started by inspecting the usages of <i>"EcoreTools 1"</i> or our own commercial modeler internally. At Obeo we are designing Ecore models all the time. We have customers which do need to design Ecore models often, we do consultancy projects in which the Ecore model is the backbone of all the tooling we are building, yet EcoreTools 1 was not used at all and our commercial modeler was almost exclusively used to produce diagrams for the documentation and deliverables. And when I digged deeper, I realized the tool was just barely helping compared to the tree editor provided by the EMF Project itself, and sometime was even "getting into the way".<br /><br />I also wrote down scenarios of usage for the tool using <a href="http://en.wikipedia.org/wiki/Persona_(user_experience)">personnas</a>. Both these efforts have been enlightening : I could clearly identify usability problems and expectations regarding the tool. I came up with a few key points to focus on :<br /><br />1 - making sure EcoreTools was providing more value to users knowing Ecore than the Ecore Tree Editor.<br />2 - making sure that EcoreTools will not make you "look bad" when using it with a customer<br /><br /><h4>Ecore Support</h4>EcoreTools 2 obviously allows you to design Classes, Datatypes, References and all the classical Ecore constructions, but Ecore is way more than that. There are different concerns involved in expressing your domain model: documenting, reviewing the referencing mechanism of elements, identifying business constraints, exploring the model... Specific tools have been implemented for these concerns and most of them are "opt-in" in a given diagram through the activation of a dedicated layer.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://www.eclipse.org/ecoretools/doc/pasted-images/9496bdbf6570c41c40fdc84c34520726.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://www.eclipse.org/ecoretools/doc/pasted-images/9496bdbf6570c41c40fdc84c34520726.png" /></a></div><h3>Documentation</h3><div>Your Ecore model represents your domain. It's all about picking good names, but names are not nearly enough. Documenting your Ecore model is important and EcoreTools assists you with a dedicated layer named "Documentation" and a table editor to quickly go through all of your elements and document them.</div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-wiOCx1aYAOQ/U5rktYDI3pI/AAAAAAAAT6U/5wUJULzGSNU/s1600/ecoretools-doc-note.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-wiOCx1aYAOQ/U5rktYDI3pI/AAAAAAAAT6U/5wUJULzGSNU/s1600/ecoretools-doc-note.png" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-xeCKv39esCA/U5rlAJ-o_EI/AAAAAAAAT6c/7tRB4GMs5TM/s1600/ecoretools-doc-table.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-xeCKv39esCA/U5rlAJ-o_EI/AAAAAAAAT6c/7tRB4GMs5TM/s1600/ecoretools-doc-table.png" height="38" width="320" /></a></div><br /><h3>Bi-directional references</h3><div><br /></div><div>With 2.0 the bidirectional references (also known as EOpposites) are displayed using the well known notation which comes from UML Class Diagram.</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-sUKr1Wmi0PU/U5rltkNt-II/AAAAAAAAT6k/_C7MjwVitxI/s1600/ecoretools-eopposite.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-sUKr1Wmi0PU/U5rltkNt-II/AAAAAAAAT6k/_C7MjwVitxI/s1600/ecoretools-eopposite.png" /></a></div><br /><h3>Constraints</h3>Domain constraints can be listed directly from the diagram once you activate the "Constraints" layer. EMF will then use this information to generate all the required plumbing so that you just have to fill a java method to implement the actual check.<br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://www.eclipse.org/ecoretools/images/features/ecoretools-constraints.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="314" src="https://www.eclipse.org/ecoretools/images/features/ecoretools-constraints.png" width="640" /></a></div><br /><br /><h3>Generics</h3><br />Ecore has been supporting Generics for quite a few years already, EcoreTools allows you now to express Parameter types and use them in references or operations.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://www.eclipse.org/ecoretools/doc/pasted-images/2634caf68113d7bd3b1e85e1df5c4aff.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://www.eclipse.org/ecoretools/doc/pasted-images/2634caf68113d7bd3b1e85e1df5c4aff.png" /></a></div><br /><h3>Packages Dependency Analysis</h3>Often domains have relationships to other domains, and this is reflected in Ecore models through direct referencing. But keeping track of those dependencies between domain packages proves to be hard in practice, you have to digg through every Class to see if it refers to something which is external. EcoreTools provides a diagram which is dedicated to see and analyze those dependencies.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://www.eclipse.org/ecoretools/doc/pasted-images/ae061e611b11578818a2e2a2c4c847d8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://www.eclipse.org/ecoretools/doc/pasted-images/ae061e611b11578818a2e2a2c4c847d8.png" /></a></div><br />And also a dedicated decorator for classes which are from another package.<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-Q7_8NZTQAtA/U5r8ttqnKYI/AAAAAAAAT7A/lNiktGhRRmM/s1600/ecoretools2-external.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-Q7_8NZTQAtA/U5r8ttqnKYI/AAAAAAAAT7A/lNiktGhRRmM/s1600/ecoretools2-external.png" /></a></div><br /><h4>Productivity</h4>To be productive the tool needs to be at your fingertips. EcoreTools provides many shorctuts to make your life easier, especially regarding references and attributes. Typing "1" will make the reference or the attribute mandatory. Typing "*" will make it a "many". Just typing a name will only change the name, but typing ": someTypeName" will set the type.<br /><br />You can't really discover those shortcuts on your own, so feel free to have a look on the documentation, but once you'll know them you'll be quicker in designing your Ecore using the diagram editor compared to the classical tree editor.<br /><br />Many more things have been done to make sure the tool doesn't get into the way. All the references can be reconnected graphically, the modeler can be used in "full screen" with no other Eclipse views around while keeping a good usability, EcoreTools will take care of your GenModel too by reloading it when necessary.<br /><br /><br /><h4>Design and Feedback</h4>From a graphical point of view I tried to keep the original visuals, only make them slightly more appealing. Colors have been aligned to the Eclipse Standard palette. Classifiers now have rounded borders, icons and text style are used to convey the difference between Classes, Abstract Classes and Interfaces.<br />Boldness is used for anything which is mandatory, blue for anything which is derived.<br />These are the kind of things you can think of if you can quickly turn-around and try in your graphical modeler, and Eclipse Sirius enables that.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://www.eclipse.org/ecoretools/doc/pasted-images/35ed765cb8af3fb4ab1a95cd3803fe94.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://www.eclipse.org/ecoretools/doc/pasted-images/35ed765cb8af3fb4ab1a95cd3803fe94.png" /></a></div><br /><br />A tool is helpful when it is giving you the right information at the right time. This is all about feedback.<br />EcoreTools 2 is highlighting in red any construction which is not valid. You want to know that as soon as possible.<br /><br />But feedback is not always immediate, only if you enable the "documentation" layer to annotate your model, then the red borders will be used so that you can quickly identify elements which have no documentation.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-xtwqNYk2QAk/U5rJ6Ebz6HI/AAAAAAAAT6I/BUWWz2w09CQ/s1600/1000000000000224000001DC6EB0E8B4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-xtwqNYk2QAk/U5rJ6Ebz6HI/AAAAAAAAT6I/BUWWz2w09CQ/s1600/1000000000000224000001DC6EB0E8B4.png" /></a></div><br /><br /><h4>How much work was that ?</h4>Of course it is slightly biased because I know Sirius really well. I was actually part of the team building it for years now so anything I want to do in EcoreTools I can quickly see how I'm going to do it leveraging Sirius.<br /><br />Nevertheless here is a typical change introducing the constraints support in EcoreTools, this is mostly about expressing, in the Viewpoint Specification Model of Sirius, what you want to achieve.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-8zJt1QbM-PI/U5rIcuRNDdI/AAAAAAAAT6A/3b-q_Xt2iW0/s1600/10000000000003A800000245D6DB46FF.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-8zJt1QbM-PI/U5rIcuRNDdI/AAAAAAAAT6A/3b-q_Xt2iW0/s1600/10000000000003A800000245D6DB46FF.png" height="395" width="640" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />No code generation is involved, my plugin defining the modeler is just a standard Eclipse plugin, I can use JUnit, SWTbot, Tycho, nothing fancy here is imposed to me by Sirius. Here are a few stats :<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-3CReEIHXojo/U5rvaSjXBtI/AAAAAAAAT60/bedFuaWpE7M/s1600/ecoretools2-codestat.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-3CReEIHXojo/U5rvaSjXBtI/AAAAAAAAT60/bedFuaWpE7M/s1600/ecoretools2-codestat.png" height="152" width="640" /></a></div>The diagram and table editors of EcoreTools 2 are representing less than 2700 lines of code.<br /><br /><h4>Now what ?</h4>This is the 2.0 version, freshly built for you. I think the net gain compared to the 1.x stream is already huge but of course the paint is slightly fresh, you might find issues and if you do<a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Ecoretools"> please report a bug</a>. If you like it, please tell me through <a href="https://twitter.com/bruncedric">twitter</a>,<a href="https://plus.google.com/+C%C3%A9dricBrun"> google plus</a> or the <a href="https://www.eclipse.org/forums/index.php/f/165/">Eclipse Forums</a>, this will be appreciated.<br /><br />You can install EcoreTools using the <a href="http://marketplace.eclipse.org/content/ecoretools-ecore-diagram-editor#.U5sZznVJXyQ">Eclipse Marketplace</a>, you will also find it in the <a href="https://www.eclipse.org/downloads/">Modeling Package </a>which is shipped with Luna.<br /><br /><br />Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-19334873367948312132013-11-19T07:07:00.002-08:002013-11-19T08:43:28.562-08:00Eclipse @Devoxx<a href="http://2.bp.blogspot.com/-MbJbW4xhG38/UoN2Acq60cI/AAAAAAAANW8/MzO6kEyrda0/s1600/IMG_20131113_130202.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-MbJbW4xhG38/UoN2Acq60cI/AAAAAAAANW8/MzO6kEyrda0/s320/IMG_20131113_130202.jpg" width="320" /></a>I'm back from a full week at Devoxx in Antwerpen- Belgium. I was there to present the Sirius project and <br />Eclipse Modeling at the Eclipse Foundation booth. (by the way, thanks again to the foundation staff !) <br />It was quite fun to be there with Jelena Alter, Marcel Bruch, Julien Vermillard and Gael Blondelle, we had a good mix of things : Marcel for the Java developpers with Code Recommender, Julien for M2M stuff (which was very hot at Devoxx this year) Jelena and Gael for the Eclipse Foundation itself and me with fancy graphical modelers.<br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://farm8.staticflickr.com/7348/10851443223_42c39a30b9_o.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="213" src="http://farm8.staticflickr.com/7348/10851443223_42c39a30b9_o.jpg" width="320" /></a></div><br /><br /><br />Here are a few random notes :<br /><br />The conference organization and setup is quite amazing. Wifi worked very well, the venue is a theather complex which means you always get to sit very confortably and the screens are just huge. There was some hacking spaces with peoples hanging there all the time, voting was easy thanks to a bunch of arduino modules installed in each room. Interactions were encouraged with tweets being displayed on every screen in between the sessions, "free to use" whiteboards were positionned in the hallway leading to some wild polls. I liked these small things which are triggering more involvement from the audience.<br /><br /><a href="http://1.bp.blogspot.com/-9_h3XTAoDv4/Uot-hQwlE7I/AAAAAAAANiU/VktZI8fuaaU/s1600/IMG_20131114_094825.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="240" src="http://1.bp.blogspot.com/-9_h3XTAoDv4/Uot-hQwlE7I/AAAAAAAANiU/VktZI8fuaaU/s320/IMG_20131114_094825.jpg" width="320" /></a>The content was good or very good in general but could not attend many sessions as I had many things going on at the booth too, but overall I was impressed. It's not perfect though, I had my share of "sexy looking talks" which did end up being very badly presented.<br /><br />In the end I have seen only a few Java talks, many sessions were related to web dev, cloud, or the now famous "Internet of Things".<br /><br /><br /><br /><br />I was there as an Eclipse guy and believe me, the Eclipse hoodie is like a secret weapon to get to talk to pretty much any programming rock star. On the other hand there is this trend going on in the Java community about Eclipse being really bad compared to the competition which made me a bit reluctant first, will people attack me there ?<br /><br />After speaking with many Java developpers during the conference here is my report : most of them are loving Eclipse, as an IDE.<br />Juno was a lot of pain though and they did not understood why it got released with such poor performances and behavior. They like Eclipse Kepler way better but it's still not exactly on par with what they used to expect, and they expect a lot from Luna, in particular :<br /><br /><ul><li>Performances and responsiveness</li><li>Quality and reliability, no more ui glitches in the workbench.</li><li>Java 8 support.</li><li>Maven integration (Many people have given up on this one starting from Juno...)</li></ul><br />In the end the differences between the major IDEs are quite small and we have room for improvements in several points, but users have pain with IntelliJ too.<br /><br />What about innovative features ? Actually Code Recommender in itself impressed many peoples, and the others could quite easily be impressed with features which have been around for years through specific plugins they did not knew about.<br /><br />In a way that was kind of a relief for me to see that our work was not completely rejected by the community and that people could say things like: <i>"Eclipse is the best for this, or that" </i>(for instance having support for multiple languages in the same IDE). &nbsp;Also, several sessions presenting very cool stuff that could not have existed without Eclipse.<br /><blockquote class="twitter-tweet" lang="fr"><p>The Crazyflie quadcopter is made with oss tools. Eclipse is one of those, kudos to the Eclipse community ! <a href="https://twitter.com/search?q=%23devoxx&amp;src=hash">#devoxx</a> now demo time</p>&mdash; Cédric Brun (@bruncedric) <a href="https://twitter.com/bruncedric/statuses/400618965191643136">13 Novembre 2013</a></blockquote><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script><br />But on the other hand it is very hype to reject and bash Eclipse when you want to brag as a speaker.<br /><br />Of course it was also a great occasion try a few ideas discussed here and there lately. I realized that :<br /><br /><ul><li>"Code Recommender" in itself makes people wanting to use Eclipse again for Java.</li><li>most of them don't understand what they are downloading from Eclipse.org and the whole idea behind the release train. They could not really figure out which "thing" they should download between "Classic", "Java" or "JEE".</li><li>most did tell me they downloaded "Eclipse" (which means, for instance, the Java package) and were surprised that it was not having the X or Y feature - which actually is part of the release train. &nbsp;They just have no clue how to discover that.</li><li>nobody wanted the <b>"uber package"</b> : that would make an un-usable IDE and they don't want feature they don't use to interact with others (and the bloat)</li><li>the "let's display fake wizards which are provisionning the IDE on demand" was midly received. Most people I talked too want to be sure they won't need to install something more once they prepared their setup.&nbsp;</li><li>a "configurator wizard" opening up the first time so that the developpers gets to pick what kind of langage support he wants, which SCM integrations, which bug tracker and so on, kinda excited the crowd. They see that as the perfect way to provision <b>just</b> the Eclipse they want withouth needing to figure out what all these weird feature names are meaning and knowing this is a selection of high quality plugins, all of them being open-source.</li><li>only a few would be willing to pay for Eclipse, even if it is a special version, and even if it's a very low price. They are used to Eclipse being free and are more willing to click donate than to buy the binary. By the way, they feel like when they click on this donate bouton, they are already helping the development of Eclipse as an IDE.</li><li>many features of Eclipse, even if they can be installed through the release train and can be usefull for a developper, are not known at all. (the configurator wizard could help here too). This is, again, probably the smallest effort on our side to have the highest impact.</li><li>several were using Eclipse as a platform, to build applications or tools, and they could not find the same level of flexibility and extensibility in any other platform out there.</li></ul><div><br /></div><div>This is it for "Eclipse as an IDE".&nbsp;</div><div><br /></div><div>Regarding Sirius, I had very good feedback. People were either curious about it or left with the idea of trying it in their own context, which was more than I could expect from such a conference !<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://farm8.staticflickr.com/7298/10851011866_d536c4ce30_o.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="http://farm8.staticflickr.com/7298/10851011866_d536c4ce30_o.jpg" width="400" /></a></div><br /></div><div><br /></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-51752240560837567102013-10-02T06:34:00.000-07:002013-10-02T06:34:28.508-07:00Eclipse Modeling Package - The Road to LunaSince the<a href="http://model-driven-blogging.blogspot.fr/2010/06/modeling-survey-results.html"> last public survey</a>, my primary focus for the modeling package was :<br /><br /><ul><li>to include Ecore related technologies, or companion technologies with a<b> low UI profile</b></li><li>to only include components which are used largely enough to consider them as<b> stable (and not in incubation)</b></li><li>to ease the <b>discovery and installation </b>of the other Eclipse Modeling technologies</li><li>to include what is necessary <b>(Git,Java and plugin development, sdks</b>) to develop your own specific tooling using Eclipse Modeling.</li></ul>As the package was fairly large at that time one of my primary course of action was to<a href="http://dev.eclipse.org/mhonarc/lists/amalgam-dev/msg00059.html"> try to keep it slim</a>. Not that I think the size matters that much in the end, but the more we add in the package, the less things works as expected and as testing and validating the package is a one man effort, I had to make choices based on that too.<br /><br />Several people chimed in lately with other components to include - and as we are starting the Luna cycle I think it is a good time to have another survey and learn about what you expect as an end user.<br /><br /><b>Please, take a few minutes to answer the following survey, tweet about it, share<a href="https://docs.google.com/forms/d/1-wIPrgNvO5EMwNJMm4fX89VcI1JVRxAldRvqAPBVGjA/viewform"> the link</a> on google plus or whatever </b>so that I can get data to push things forward.<br /><br /><iframe frameborder="0" height="1800" marginheight="0" marginwidth="0" src="https://docs.google.com/forms/d/1-wIPrgNvO5EMwNJMm4fX89VcI1JVRxAldRvqAPBVGjA/viewform?embedded=true" width="730">Loading...</iframe>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-90860281579931602082013-09-19T01:05:00.000-07:002013-09-19T01:19:00.739-07:00Will you be Sirius at EclipseCon Europe ?We've been in some sort of <i>"Stealth mode"</i> since the proposal for Eclipse Sirius got accepted. It did not makes sense to us to communicate on Sirius as long as it's not there, in Eclipse. That said, the summer actually was quite intense, I'll start by a quick status report :<br /><br />Pierre-Charles worked on preparing the move to the Eclipse infrastructure and the Foundation IP Team reviewed the code. We just got the green light from Sharon (kudos to her!) and the code was commited by Stéphane Bonnet (Thales) two weeks ago . The code is now hosted on <a href="http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/">git.eclipse.org</a>. <a href="https://hudson.eclipse.org/sirius/">Continuous integration</a> and <a href="https://git.eclipse.org/r/#/q/org.eclipse.sirius,n,z">gerrit</a> are operationals though builds are not published on Eclipse.org yet.<br /><br />Right now the team is &nbsp;working on 6 different streams to prepare for upcoming releases, notably Obeo Designer 6.2 and service releases for Obeo Designer 6.1 and 6.0. The team will progressively ramp up on the Eclipse.org infrastructure as our 6 different streams are delivered.<br /><br />We are also taking the opportunity of this big namespace change to clean-up some long deprecated APIs and to rethink the way Sirius is modularized. See the <a href="http://wiki.eclipse.org/Sirius/Modularization">wiki for more details</a> but in the end, the APIs we are publishing right now will probably move quite a lot until the 1.0 release.&nbsp;We are soon going to <a href="http://projects.eclipse.org/projects/modeling.sirius">draft the plan </a>for the 0.9 and 1.0 releases and officially announce our participation to Eclipse Luna.<br /><br />In the meantime the Obeo Marketing and Communication team is working on giving the project a visual identity. I can't wait for it!<br /><br />In a nutshell, <b>everything will be ready for EclipseCon Europe</b>, we'll have RC quality builds of Sirius 0.9 by then, a website, more content on the wiki, published downloads, Obeo and Thales will be actively working on the Eclipse git repository and bugzilla.<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.eclipsecon.org/europe2013/sites/all/themes/europe2013/logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="140" src="http://www.eclipsecon.org/europe2013/sites/all/themes/europe2013/logo.png" width="640" /></a></div><br />You'll get to see the Sirius in action during EclipseCon Europe, we worked on a few cool talks for you :<br /><br /><a href="http://www.edurobot.ch/site/wp-content/uploads/2012/02/Arduino_Uno_Angle.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="200" src="http://www.edurobot.ch/site/wp-content/uploads/2012/02/Arduino_Uno_Angle.jpg" width="200" /></a>It will start on Tuesday at 15:00, right after the keynote. Mélanie will &nbsp;<b>turn Eclipse into an Arduino Programming platform for kid</b>s, providing a visual programming environment not unlike <a href="http://blog.ardublock.com/">Ardublock</a> (you bet, based on Sirius). How can we tweak the Eclipse user experience so that even kids can use it ?<br /><br /><br /><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-asUjxaqCoTw/T_bY3g_4a6I/AAAAAAAADUo/OGjbAN7psnc/s1600/esa2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="159" src="http://3.bp.blogspot.com/-asUjxaqCoTw/T_bY3g_4a6I/AAAAAAAADUo/OGjbAN7psnc/s320/esa2.png" width="320" /></a></div>On Wednesday at 14:30, <b>Sirius, Changing the Game of Systems Architecture</b>, a sponsored talk presented by Etienne and Frederic in which you'll get to learn about a collection of Sirius case studies from a space agency to an insurance company and for each of them how Eclipse Modeling - and Sirius - have been effectively combined.<br /><br /><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-jDMI4_5_774/Ujm28hSpuZI/AAAAAAAAMTI/p1uuYCH4aBE/s1600/sirius-ecf.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="240" src="http://2.bp.blogspot.com/-jDMI4_5_774/Ujm28hSpuZI/AAAAAAAAMTI/p1uuYCH4aBE/s320/sirius-ecf.png" width="320" /></a></div>At 16h15 Stéphane Bonnet (Thales) and Pierre-Charles will present <b>Sirius By Example : Build Your Own Diagram, Table and Tree Editors in 20 minutes</b>. This talk will give an overview of the main Sirius features, and show how to use it to create custom tooling around a given technology. You will also learn about the origin and history of Sirius and how it has been deployed in operational and intensive contexts within Thales. It was given at EclipseCon France, the room was packed and we had a very good feedback about it.<br /><br /><br /><br /><a href="http://3.bp.blogspot.com/-fkZmmnpZTvE/UjG99L_ybyI/AAAAAAAAMIo/jeEJoifnweg/s1600/ecoretools2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="188" src="http://3.bp.blogspot.com/-fkZmmnpZTvE/UjG99L_ybyI/AAAAAAAAMIo/jeEJoifnweg/s320/ecoretools2.png" width="320" /></a>Right after this talk, at 17:00, I will present <b>EcoreTools 2.0 : The Making-Of</b>&nbsp;or <i>"How to transform a GMF based modeler to a Sirius based one".</i> You will discover how I used Sirius's features - some of them quite advanced - to re-design the user experience of EcoreTools.<br /><br /><br /><br /><br /><br /><br />Then the team will gather for a <b>Sirius BOF</b> (to be announced) . You get to ask any question about Sirius and we will be glad to coach you in getting started with the technology.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-3QTcB2iPqTE/Ujm39xfYJCI/AAAAAAAAMTQ/hJU0306SSOY/s1600/booth-ece-france.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="213" src="http://4.bp.blogspot.com/-3QTcB2iPqTE/Ujm39xfYJCI/AAAAAAAAMTQ/hJU0306SSOY/s320/booth-ece-france.jpg" width="320" /></a></div>Last but no least, Obeo will have a booth during the whole conference, feel free to come by to ask questions or even just to have a chat. We are always eager to learn about use cases or experiments.<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />I'm looking forward to it. If you're interested in modeling and did not register for EclipseCon Europe yet, <a href="http://www.eclipsecon.org/europe2013/">consider doing it,</a> I guarantee you'll learn a lot !<br /><br /><br />Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-74666171623194744112013-03-19T10:16:00.000-07:002013-03-22T03:44:44.418-07:00Introducing Eclipse SiriusYou might have noticed some signs of excitement from us lately, one being the following tweet :<br /><br /><blockquote class="twitter-tweet" lang="fr">4:45 pm : I'm clicking on "send" and it's gonna rock.<br />— Cédric Brun (@bruncedric) <a href="https://twitter.com/bruncedric/status/309331351579009024">6 mars 2013</a></blockquote><script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script> <br /><div class="separator" style="clear: both; text-align: center;"><br /></div>What was sent at 4:45pm? a<a href="http://www.eclipse.org/proposals/modeling.sirius/"> new project proposal</a> for Eclipse, one which, in my opinion, is a major event.<br /><br />Let me introduce you to <b>Eclipse Sirius</b> !<br /><br />Have you ever wanted a nice graphical environment customized for your domain data but been discouraged by the complexity of all the technologies needed to create one? Maybe you compromised and decided to use an existing format or notation, even if it does not completely fit your needs, just to benefit from the associated tools. Fear no more! Instead of adapting your needs to some existing tool, with Sirius the tooling adapts itself to you, as it should be. And you don't even need to learn about the Eclipse Modeling stack, we did it for you.<br /><br /><i>That said, if you want to tweak something you can always plug your customization in through the underlying frameworks, namely : GMF, GEF, EMF and the Eclipse Platform.</i><br /><br /><br class="Apple-interchange-newline" /><span style="font-weight: bold;">How did it all start ?</span><br /><br />It's no vaporware. We started the development of Sirius a few years ago with Thales. We've set-up together a great team to build this technology, known as Doremi at that time.<br /><br /><br />Thanks to this collaboration, we've reached a very high <a href="http://fr.wikipedia.org/wiki/Technology_Readiness_Level">level of maturity</a>: Sirius is used in many very large projects within Thales and it's been around in Obeo Designer for a few years already. It is also the foundation of several tools you can already find in the Eclipse Marketplace,&nbsp;<a href="http://marketplace.eclipse.org/content/database-designer-indigo-version#.UUc2InFHq2A">some</a> <a href="http://marketplace.eclipse.org/content/graal-designer-indigo-version#.UUc2J3FHq2A">of</a> <a href="http://marketplace.eclipse.org/content/risk-analysis-designer-helios-version#.UUc2M3FHq2A">them</a> being installed by more than<a href="http://marketplace.eclipse.org/node/622477"> 2000 users a month.</a><br /><br /><br />We are not kidding.<br /><br />This contribution to Eclipse means a whole new team will become commiters. They have been working on Sirius for years and you already know them as contributors. You will now see those guys from Thales and Obeo co-leading and working in the open.<br /><br /><b>What about Obeo Designer ?</b><br /><br />Sirius is one Obeo Designer's components. Once published via Eclipse the Sirius open source version will be included in Obeo Designer.<br /><br />Sirius being open-source doesn't change much besides strengthening Obeo Designer by significantly growing the user base of one of its components. This means more diverse usages, more tests "in the wild" and potentially more designers to reuse or extend.<br /><br />Obeo Designer remains a commercial product : a strong and open platform to build and deploy your modeling environment with well integrated and tested components. It is the perfect companion for professional usage by bringing collaborative modeling and support.<br /><br /><b>Why ?</b><br /><br />First because it is in our DNA, we strive to build great products in the open. And our partners are supporting us on this, especially Thales, since Sirius is the result of many years of a joint and rich collaboration with Obeo.<br /><br />Secondly to unleash the energies in Eclipse Modeling. There is a lot of interest in this domain, &nbsp;companies are in dire need of solutions but the cost to fill the gap between what they need and what Eclipse Modeling provides right now is too high. We are reducing this gap with Sirius and this will trigger more usage and more funding for Eclipse Modeling as a whole.<br /><br />We also want to work with you, fellow commiters and OSS tool providers, in building the best tools ever. We are building a great component, but having a non open-source runtime may slow down its adoption. This last barrier is now gone.<br /><br /><b>Have some questions ?</b><br />I'm sure you have tons of them. Please use the <a href="http://www.eclipse.org/forums/index.php?t=thread&amp;frm_id=202">dedicated Eclipse forum.</a><br /><br /><b>Want to know more ?</b><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.eclipsecon.org/2013/sites/all/themes/econ2013/logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://www.eclipsecon.org/2013/sites/all/themes/econ2013/logo.png" /></a></div>I'll be at EclipseCon Boston next week<a href="http://www.eclipsecon.org/2013/sessions/your-custom-modeling-environment-definition-made-easy-last">. At 1:30 pm On Tuesday</a>&nbsp;.<br /><br />I'll present the project with Stephane Bonnet from Thales in the session :<br /><br /><b><span style="font-family: inherit; font-size: large;">"Your custom modeling environment definition made easy. At last !"</span></b><br /><br />During this session you'll learn about the project, its goals, its current deployments and you'll see it in action with live demos.<br /><br />I will also introduce the project during the <a href="http://www.eclipsecon.org/2013/sessions/modelling-symposium">Modeling Symposium</a> later the same day !<br /><br />Sirius brings you the ability to quickly define your dedicated editors : diagram, tree, tables, it would be a shame not to show you what you can do with it :<br /><br /><a href="http://4.bp.blogspot.com/-sdiNF9QpU08/UUcpF4VHxcI/AAAAAAAAGgs/QkCmFrnnfkk/s1600/entities.jpg" imageanchor="1" style="clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="361" src="http://4.bp.blogspot.com/-sdiNF9QpU08/UUcpF4VHxcI/AAAAAAAAGgs/QkCmFrnnfkk/s640/entities.jpg" width="640" /></a><br /><a href="http://1.bp.blogspot.com/-AV7tHyCJ8a8/UUcpMYRgHpI/AAAAAAAAGg0/TJTzQb4-F5c/s1600/safety-iso26262.png" imageanchor="1" style="clear: left; display: inline !important; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="369" src="http://1.bp.blogspot.com/-AV7tHyCJ8a8/UUcpMYRgHpI/AAAAAAAAGg0/TJTzQb4-F5c/s640/safety-iso26262.png" width="640" />&nbsp;</a><br /><br /><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-wptPEEvYEvY/UUcvgtefsQI/AAAAAAAAGhc/hKj7crM-QGc/s1600/flow-topography.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="237" src="http://1.bp.blogspot.com/-wptPEEvYEvY/UUcvgtefsQI/AAAAAAAAGhc/hKj7crM-QGc/s400/flow-topography.jpg" width="400" /></a></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-uiFDcG4UR14/UUcp7BQxGKI/AAAAAAAAGhU/yDFtkWGwVn8/s1600/sequence-global.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="196" src="http://1.bp.blogspot.com/-uiFDcG4UR14/UUcp7BQxGKI/AAAAAAAAGhU/yDFtkWGwVn8/s320/sequence-global.png" width="320" /></a><a href="http://3.bp.blogspot.com/-9lH_D5XFUM8/UUcv3EG_3cI/AAAAAAAAGhk/ZEGNEMSEHcc/s1600/marte-multi_view_points.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="193" src="http://3.bp.blogspot.com/-9lH_D5XFUM8/UUcv3EG_3cI/AAAAAAAAGhk/ZEGNEMSEHcc/s320/marte-multi_view_points.png" width="320" /></a><a href="http://2.bp.blogspot.com/-8etUZ7N9_C8/UUcpwCExCwI/AAAAAAAAGhE/8jXBNX9bGc0/s1600/SysML_RequirementsCrossTable.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a><a href="http://1.bp.blogspot.com/-uiFDcG4UR14/UUcp7BQxGKI/AAAAAAAAGhU/yDFtkWGwVn8/s1600/sequence-global.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><br /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-8etUZ7N9_C8/UUcpwCExCwI/AAAAAAAAGhI/vYzpF5OagzM/s1600/SysML_RequirementsCrossTable.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="184" src="http://3.bp.blogspot.com/-8etUZ7N9_C8/UUcpwCExCwI/AAAAAAAAGhI/vYzpF5OagzM/s640/SysML_RequirementsCrossTable.png" width="640" /></a></div><a href="http://2.bp.blogspot.com/-8etUZ7N9_C8/UUcpwCExCwI/AAAAAAAAGhE/8jXBNX9bGc0/s1600/SysML_RequirementsCrossTable.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="188" src="http://4.bp.blogspot.com/-6C9c-5m6gaQ/UUc8OtN-vgI/AAAAAAAAGh0/2ZSqv8xFLtc/s400/od6_feat_customstyles.png" style="text-align: center;" width="400" /></a>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-31480171635238759602013-03-13T14:12:00.003-07:002013-03-13T14:12:59.868-07:00Learning from the sourceI don't know about you, but at Obeo we're preparing for EclipseCon North America. Eclipse Conferences are great, so many things are built on top of Eclipse or within the Eclipse projects. Tooling of course, but also rich applications, runtimes, you can get a clear vision of what's going on in these areas in just a few days being there. &nbsp;You could think : <i>"all right, but he is an Eclipse commiter, of course Eclipse conferences are interesting to him"</i>. Actualy I'm also CTO at Obeo and when Obeo comes at EclipseCon it's not a one man trip.<b> Seven people from Obeo </b>will go this year to Boston, it's not unusual, and for a company like us it's no small investment.<br />So, with my CTO hat (and not the Eclipse commiter one) let me give you a hint : its worth it !<br /><br />During a few days your team is getting to <b>learn from the source</b> ! The community is so diverse, they will learn about developping mobile apps, web apps, rich applications, runtimes, but also about product management, tooling, business intelligence, quality, processes. They will learn tips and tricks on using technologies and in our world these tips are making the difference between a successful project and a complete failure. The knowledge you'll get is high quality: &nbsp;you'll learn either from people using the technology day to day or from people actually building the technology !<br /><br />Looking back at the few years the company have been around, there is no doubt Eclipse conferences had the most profound impact on how we use technology and how we develop products.<br /><br />I'll take a few samples from what we are presenting there but make sure you <a href="http://www.eclipsecon.org/2013/program/session-schedule">have a look on the program yourself</a>.<br /><br /><a href="http://www.eclipsecon.org/2013/sessions/emfcompare-20-scaling-millions">EMF Compare 2.0 : Scaling to Millions</a> : performance and scalability related talks are in general giving a lot of insight into a technology. Here Mikaël will describe by which mechanisms Compare is now able to produce diffs from models too huge to even be completely loaded in memory and merge these diffs while keeping the model integrity.<br /><br /><a href="http://www.eclipsecon.org/2013/sessions/emfedit-force-unleashed">EMF.Edit : the Force Unleashed</a> : how EMF brings a flexible command support, and how you can use it even not how of an Eclipse context in for instance, a JavaFX application. <span style="font-family: inherit;">&nbsp;<i>"<span style="background-color: #fefefe; line-height: 19px;">This talk is dedicated to EMF rookies that know EMF as a generator of JavaBeans on Steroids and want to<b> know more about steroids</b></span><span style="background-color: #fefefe; line-height: 19px;">&nbsp;"</span></i></span><br /><br /><a href="http://www.eclipsecon.org/2013/sessions/documentation-driven-testing">Documentation Driven Testing </a>: if you think documentation is an important part of your software but you don't want to spend time doing it for nothing.<br /><br /><a href="http://www.eclipsecon.org/2013/sessions/buildroot-eclipse-bundle-powerful-ide-embedded-linux-developers">Buildroot Eclipse Bundle : a powerful IDE for Embedded Linux developers </a>: see how Eclipse tools can help in building your complete embedded Linux system.<br /><br /><a href="http://www.eclipsecon.org/2013/sessions/stop-throwing-you-doc-away-agile-documentation-mylyn-intent">Stop Throwing your doc away : Agile Documentation with Mylyn Intent </a>: you might learn there how the tools from Eclipse can save you a lot of time telling you where your documentation is not up to date.<br /><br />And thats a tiny extract of the conference which has<b> 7 parallel tracks</b> during 3 days&nbsp;+ &nbsp;a full day of&nbsp;<a href="http://www.eclipsecon.org/2013/program/session-schedule/tutorials">3 hours tutorials</a>.<br /><br />And I am not even mentioning&nbsp;the discussions, the BOF sessions and the keynotes.<br /><br />Well, of course you won't be able to send all your developers there. Just make sure to send those who are good at sharing knowledge with the others and you'll see it will impact<b> both your software and your practices.</b><br /><i><br /></i><i>ps : &nbsp;better hurry to register</i><br /><i><br /></i><br /><br /><br />Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-68820590871898843582013-01-31T04:19:00.001-08:002013-01-31T04:22:51.759-08:00On being open and transparentWe always intend to run our Eclipse projects as real open-source projects. Being open, transparent and so on. The Eclipse Development process forces you to do so in some way, the simultaneous release brings a bit more constraints in this regards but in the end, if you want a truly open project <b>you'll need to do more.</b><br /><br />Let's take EMF Compare. It quickly jumped into the release train, adopted the Eclipse practices, got used by other components and had a <a href="http://www.eclipse.org/projects/ip_log.php?projectid=modeling.emf.compare">number of major contribution.</a><br /><br />We have two main groups of adopters: the first group is comprised of end-users, which mostly have the perception the problem itself of comparing models is quite easy and it should "just works". They tend to report bugs, UI glitches, and sometime even with patches. The second group is researchers, they know the problem is <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=399361#c3">not that easy</a> and having this component enables all kind of experiments on top of models for them. They tend to use compare in contexts we never ever envisionned.<br /><br />We had several fairly big contributions from the second group (research) among the years and have always been keen in integrating them, getting them on board in the team and in the release process. But the contributors tend to fade away when their research subject change or when they leave the academic world. &nbsp;The problem with "big" contributions is &nbsp;: we can't really maintain those over time with just the core team.<br /><br />We also participated in several google summer of code programs, but so far never really managed to transform students into day to day commiters.<br /><br />Driven by the first group of user, we rewrote many of the core code of &nbsp;Compare last year, and now is a good time to get more people aboard.<br /><br />We acknowledged that conferences, bugzilla, release reviews, and blog post were not enough, and we started a bunch of actions :<br /><br /><h3>Being visible</h3><div>Includes posting notes on the interweb about progress, new use cases. Giving talks in tech or academic conferences, and having a comprehensive documentation.</div><div><br /></div><div>With the 2.x stream, we had to go over all of our documentation anyway, the <a href="http://wiki.eclipse.org/EMF_Compare/User_Guide">User Guide</a> is now in a better shape.</div><br /><h3>A build system you can launch@home</h3>Building &nbsp;Compare is just a matter of &nbsp;<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"><b>mvn clean package</b></span><br />you can point to a specific target platform (we tend to keep the widest compatibility possible) with<br /><br /><span style="background-color: white; font-size: x-small;"><span style="font-family: 'Courier New', Courier, monospace;">mvn clean package </span><b style="font-family: 'Courier New', Courier, monospace;">-Pjuno</b></span><br /><span style="background-color: black; color: white; font-size: x-small;"><b style="font-family: 'Courier New', Courier, monospace;"><br /></b></span>or<br /><span style="background-color: white; font-size: x-small;"><span style="font-family: 'Courier New', Courier, monospace;">mvn clean package </span><b style="font-family: 'Courier New', Courier, monospace;">-Pkepler</b></span><br /><br />launching the tests is just as easy :<br /><span style="background-color: white;"><span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: x-small;">mvn clean <b>verify</b>&nbsp;</span></span><span style="font-family: 'Courier New', Courier, monospace;"><span style="font-size: x-small;">-Pkepler</span></span></span><br /><br />As you would expect, &nbsp;the builds are run on the<a href="https://hudson.eclipse.org/hudson/job/emf-compare-master/"> eclipse public server.</a><br /><br />The only part of the build which depends on the eclipse infrastructure is the signing and promote process, but those are kept in particular profiles.<br /><br /><h3>Contributor 101</h3>We describe our expectation regarding contribution in the <a href="http://wiki.eclipse.org/EMF_Compare/Contributor_Guide">Contributor Guide</a>. Our requirements regarding <b>checkstyle, API tooling, specifications documents</b> are described there.<br /><br />Setting our expectation can be seen as a new barrier to contribution, but on the other hand our expectations have always been that way and not describing it lead to a misunderstandings : your contribution is valuable, makes no mistake, but most of the time there is way more to do than just dropping a line of code in the bugzilla.<br /><br /><b>Gerrit</b> looked like a good way to ramp up, a contributor can have feedback from the commiters, but also from the automated build launched on top of his changes. &nbsp;This looks like a win win so we decided to migrate to gerrit and to<a href="https://hudson.eclipse.org/sandbox/job/emf-compare.gerrit/"> setup a build</a> which checks the tests on top of the platforms we are currently supporting. The <a href="http://wiki.eclipse.org/Gerrit">Eclipse wiki</a> is highly valuable for this, and the webmasters have again demonstrated their support in this process.<br /><br />We'll see how it goes over time, I'm not 100% buying gerrit itself which can be quite intimidating and I'm looking forward to the list of cons <a href="http://milesparker.blogspot.fr/">Miles</a> will soon publish ;), but it feels right to have this public and open staging area with constant feedback.<br /><br /><b>Documentation</b> also is a key ingredient here. Have a look on the<a href="http://wiki.eclipse.org/EMF_Compare/Developer_Guide"> Developer Guide</a>, I wouldn't say it's complete because it's not, but you can at least start and have a rough understanding of how Compare works behind the scene.<br /><br />We're not completely done here, we still have to list "<i>low hanging fruits</i>" - aka Junior Jobs or tasks which can be tackled to discover Compare's internals.<br /><br /><h3>Engage</h3><br />To engage developers - adopters which might turn into contributors and maybe at some point commiters you have to at least support them. <a href="http://eclipsemde.blogspot.fr/">Laurent</a> is checking the following channels besides the bugzilla : the Eclipse forums/newsgroup and stackoverflow. We always had a great example of that in the EMF community through Ed's relentless effort on the newsgroups.<br /><br />But to take part in the development of a project, you also need to know what's going on. We were missing a real channel for this : notifying peoples when we drafted the work we are starting and engaging them in a potential discussion about these evolutions We recently decided to use the emf-dev mailling list for that, you might have seen a <a href="http://dev.eclipse.org/mhonarc/lists/emf-dev/msg01551.html">few</a> <a href="http://dev.eclipse.org/mhonarc/lists/emf-dev/msg01553.html">examples</a> <a href="http://dev.eclipse.org/mhonarc/lists/emf-dev/msg01558.html">lately</a>, the golden rule being : <b>these mails are just a starting point for further discussions into a given bugzilla. </b>We won't turn the mailling-list as a very chatty place, on the other hand with only a dozen of threads for one year which are not related to commiter election or project meta-data I think there is room for more discussions.<br /><br />I can't say this triggered a lot of reaction so far but I'd <b>love</b> to see other projects doing that on the emf mailling list.<br /><br /><div><h3>Predictability</h3></div><div>Always set expectations. We used to have a fairly thin project plan only describing themes, we now have a detailled one :</div><div><br /></div><div><a href="http://www.eclipse.org/projects/project-plan.php?projectid=modeling.emf.compare">EMF Compare 2.1 project plan.</a></div><div><br /></div><div>One can see which bugzilla tickets we'll work on during which milestone of a given release.</div><div>In the process we cleaned up our bugzilla, closing pending tickets, often with a comment <i>"this is no longer true for 2.x, it just rocks"</i>.</div><div><br /></div><div>Also set expectations on a given issue/bugzilla, we always tend to think : "your problem is a real one, we'll <b>have</b> to tackle it at some point", and let the thing open waiting for the moment we'll get back to it. Sometimes, this moment only come months or years after the original report. Being clear wether we'll &nbsp;work right away on something you reported is important, and stating the contrary is an occasion for an adopter to get onboard.</div><div><br />As a side note, there are times that we look at a bug, think that "this is a totally stupid mistake" ... but then simply forget about it (we're working on something else, we're not on the good branch to tackle it directly...). Do not hesitate to ping us if we do not answer to trivial bugs (such as <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=367527">https://bugs.eclipse.org/bugs/show_bug.cgi?id=367527</a>) in a timely manner.</div><div><h3>Conclusion</h3></div><div>We already have a fairly good track records of openness with many contributions in the history of the project, we'll see if doing so much more efforts will have an impact and I'll sure get back to you then.&nbsp;</div><div><br /></div><div>I can only assure you one thing : &nbsp;it takes a bit more time, it takes commitment, but it <b>feels good.</b></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-79667826338355119572013-01-22T12:55:00.000-08:002013-01-22T12:55:54.311-08:00Obeo Designer 6.1.0 - no 4.x platform... yet !<a href="http://2.bp.blogspot.com/-1wNygO34348/UP72VPmjoyI/AAAAAAAAF6c/pDinTtBPmqU/s1600/unicorn.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-1wNygO34348/UP72VPmjoyI/AAAAAAAAF6c/pDinTtBPmqU/s320/unicorn.jpg" width="230" /></a>We've been quite buzzy in the last few months at Obeo : building and releasing a brand new product <a href="http://www.obeosmartea.com/">dedicated to EA</a>, celebrating our seventh birhtday, building almost&nbsp;<a href="http://marketplace.obeonetwork.com/">20 modeling environmen</a>ts based DSLs and/or standards, bringing model comparison<a href="http://fr.slideshare.net/mikaelbarbero/emfcompare-20-scaling-to-millions"> far beyond </a>the competition, tackling the issue of software and design documentation with a <a href="http://www.eclipse.org/intent/">novel approach in the Mylyn project</a>&nbsp;and step by step getting closer to our perfect development process, our <b><a href="https://www.eclipsecon.org/2012/sessions/98-days-1-our-continuous-deployment-pivot">unicorn</a></b>.<br /><br /><b>And</b>&nbsp;working on Obeo Designer :&nbsp;we just released 6.1.0 bringing among other things :<br />&nbsp;- compatibility with Eclipse <b>3.8</b> &nbsp;(and Indigo, and Helios)<br />&nbsp;- a ready-to-launch <b>server</b> for live and instant collaboration on models with fine grained locks<br />&nbsp;- <b>token/floating licenses</b>, &nbsp;meaning you can now buy license for, let's say, 30 simultaneous users, no matter who.<br />&nbsp;- a better packaging, documentation and examples<br />&nbsp;- updated versions of all its OSS components : Acceleo, ATL, &nbsp;EEF, EMF Compare.<br /><br />Rougly 160 tasks have been closed for this release not counting the work done on the OSS components, it's quite hard to summarize but you can find<a href="http://www.obeodesigner.com/features/whatisnew"> a few highlights here</a>.<br /><br /><b>Why Eclipse 3.8 ?</b><br /><br />We worked on bringing the 4.2 compatibility &nbsp;for the product (and are still working on it) but we got hit by <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=366528">some limitations </a>of the compatibility layer. &nbsp;It was detected late as the problem came when we decided to rely more on the plaftorm mechanisms to get <a href="http://www.obeodesigner.com/features/whatisnew#extensible_tab_bar">more extensibility</a>... It's not trivial to fix, we are trying to help the platform team as much as we can to implement this either in the 4.2 or 4.3 stream.<br /><br /><br />What does that mean ? It means on Eclipse 4.2 you don't get the diagram contextual toolbar, also known as <i>TabBar</i>:<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-ENp5g23D8OY/UPlV1KchUUI/AAAAAAAAF4k/gZhUZcBbguc/s1600/graal-e4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="http://4.bp.blogspot.com/-ENp5g23D8OY/UPlV1KchUUI/AAAAAAAAF4k/gZhUZcBbguc/s400/graal-e4.png" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><a href="http://www.obeodesigner.com/images/stories/od60_feat/od6_feat_08.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" src="http://www.obeodesigner.com/images/stories/od60_feat/od6_feat_08.png" /></a><br />This prevents end users to enable/disable graphical layers or to switch to the "layout mode" (a.k.a. VI for diagrams).<br /><br />That's quite a big loss for end users, you get used to this ability to apply layers on your diagram, but as I said, we're working on it.<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />Obeo Designer is an integrated platform to build modeling environment. Using it you can quickly and easily leverage the power of the whole Eclipse Modeling eco-system : EMF, CDO, Xtext, GMF, Acceleo, ATL, Compare.... It's packaged, tested and includes additional components to create richer modeling environments, quicker.<br /><br />The problem with such a product is - as it's a base for you to build things - getting what you can achieve with it can be hard. &nbsp;One example (among many on the Eclipse or <a href="http://marketplace.obeonetwork.com/">Obeo Marketplace</a>) of what you can do is the UML Designer. &nbsp;You can install it from the marketplace, and you can have a look at the&nbsp;<a href="https://github.com/ObeoNetwork/UML-Modeling">sources here</a>. We've already seen 580 installations in the last 5 days, yeah !<br /><div><br /></div>Well, ok, But <b>what's really new in your product</b>&nbsp;?<br /><br />Many changes are not directly visibles in this version, we streamlined the CDO and collaborative support, worked on performances, and introduced a few nice features. Go have a look on the<a href="http://www.obeodesigner.com/features/whatisnew"> *new and noteworthy*</a> page. This blog post is already filled with sentences making me sound like a boastful person. Ok. Just a small glimpse...<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.obeodesigner.com/images/gallery/system_engineering/timing_selection.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="198" src="http://www.obeodesigner.com/images/gallery/system_engineering/timing_selection.png" width="400" /></a></div><br />You can now use a new construction in your diagram definition : &nbsp;<b>Brackets</b><br /><br />Using those you can easily represent intervals in a diagram. &nbsp;You can use it in a sequence diagram just like here, but also in any other diagram.<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.obeodesigner.com/images/stories/od61_nn/od-html-export.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="178" src="http://www.obeodesigner.com/images/stories/od61_nn/od-html-export.png" width="320" /></a></div>HTML Export : publish your model. You can browse <a href="http://obeonetwork.github.com/UML-Modeling/export/index.html">through an example here</a>.<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />The complete new and noteworthy (with more pics !) <a href="http://www.obeodesigner.com/features/whatisnew">is available here.</a>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-30198778020212068752012-10-17T07:01:00.000-07:002012-10-17T07:47:27.400-07:00EMF Core does not change, but ..<a href="http://3.bp.blogspot.com/-v3t2J3zS9_o/UH63qQBN-yI/AAAAAAAAD9A/EC4RXRMOZlw/s1600/emf_logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" src="http://3.bp.blogspot.com/-v3t2J3zS9_o/UH63qQBN-yI/AAAAAAAAD9A/EC4RXRMOZlw/s1600/emf_logo.png" /></a>Using EMF sometime lead to frustration : any relevant change into this core framework means breaking client code and this is a No No !<br /><div><br /></div><div><i>EMF Core does not change.</i></div><div><br /></div><div>In a world of technologies coming and going, new infrastructures poping up here and there, new practices revolutionizing the way we build software ...</div><div></div><div><i>EMF Core does not change.</i></div><div><br /></div><div>New adopters, from tool vendors, to service provider, industrials, consultants, students...</div><div><br /></div><div><i>But EMF core does not change.</i></div><div><div><br /></div><div>Not changing in IT means being dead, right ? &nbsp;So is EMF dead ?&nbsp;</div><div><br /></div><div>EMF Core <a href="http://ed-merks.blogspot.fr/2008/04/teflon-programming.html">always</a> has been about giving value and <b>making sure it's long term</b>.&nbsp;One could be worried : but nothing new happens ? I'm gonna miss the NoSQL / documentDB / graphDB revolution &nbsp;? I'm stuck with XML and POJO Java APIs from the previous decade ? My software will only be a single-user desktop application ? What about the cloud ?</div><div><br /></div><div><b>Stability</b>, <b>Predictability</b>, <b>Compatibility</b> are the key words explaining the success of EMF : others can innovate on top of it, on a solid base, bring it in another space and focus on the value. "Others" here are stands for the "EMF Ecosystem", frameworks, tools which agreed &nbsp;to access each others data reflectively, to refers to data using URIs&nbsp;by being built on top of EMF&nbsp;and then to provide even more services for the very same ecosystem.<br /><br />This leads to an innovative and versatile ecosystem, and that's what I'm going to talk about.</div><div><br /></div><div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-y8xwV8h5G0s/UH6vkWyDQjI/AAAAAAAAD8w/_OLib2uUDBo/s1600/schedule.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="167" src="http://4.bp.blogspot.com/-y8xwV8h5G0s/UH6vkWyDQjI/AAAAAAAAD8w/_OLib2uUDBo/s320/schedule.png" width="320" /></a></div>15 projects, from tools to work efficiently with Ecore to frameworks to build software applications. Some of them being a few classes, others a whole bunch of Jars, but each one useful in my opinion.&nbsp;&nbsp;During<b> 25 minutes, at EclipseCon Europe on Wednesday just before lunch.</b><br /><br />Technologies for NoSQL, document DB, concurrency, distributed architecture, crowdsourcing and much more, all of them on top of EMF.<br />More than just a list, for each of them an example of usage in a bigger application and my feedback using it.<br /><br />&nbsp;I can only say I already had a lot of fun preparing it and I can only hope you'll enjoy the talk.</div><div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0Carquefou, France47.296241 -1.48681247.253103 -1.565776 47.339379 -1.407848tag:blogger.com,1999:blog-5749374620125186414.post-48041479918453284152012-07-03T07:09:00.000-07:002012-07-03T07:09:58.541-07:00EclipseCon Europe - Time to hurry up !<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"><tbody><tr><td style="text-align: center;"><a href="http://farm5.staticflickr.com/4058/4293345633_d5e13e2927_o.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://farm5.staticflickr.com/4058/4293345633_d5e13e2927_o.jpg" width="219" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;"><i>Picture by Alan Cleaver</i></td></tr></tbody></table><br />It's summer, the Juno release is over and you all deserve to rest and &nbsp;enjoy your vacations... but hey, you might have missed it but the submission deadline for Eclipse Con europe is very close !<br /><br /><b><span style="font-size: large;">Only 11 days</span></b> before the early birds deadline.<br /><br /><a href="http://www.eclipsecon.org/europe2012/program/sessions/submissions">others already submitted proposals</a>, if you want to share your experience, demo the latests hot features of your project or if you have other cool stuff, <span style="font-size: large;">go ahead and <a href="http://www.eclipsecon.org/europe2012/ecesubmissions">submit</a> !</span><br /><br /><div style="background: #000; font: 0px sans-serif; height: 260px; text-align: left; width: 350px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" height="240" id="cdtw" style="outline: none;" width="350"><param name="movie" value="http://cdn.countingdownto.com/c/w.swf" /><param name="flashvars" value="eid=96517" /><param name="allowscriptaccess" value="always" /><param name="bgcolor" value="#000000" /><embed name="cdtw" src="http://cdn.countingdownto.com/c/w.swf" flashvars="eid=96517" type="application/x-shockwave-flash" width="350" height="240" allowscriptaccess="always" bgcolor="#000000" style="outline:none"></embed></object><br /><a href="http://countingdownto.com/" style="color: #444444; font: bold 8px Arial; padding-left: 19px;">FREE COUNTDOWN WIDGET</a></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-80197699099122908432012-06-28T07:58:00.000-07:002012-06-28T08:48:52.185-07:00Eclipse DemoCamp Nantes - Live Broadcast<div class="separator" style="clear: both; text-align: center;"><a href="http://live.eclipse.org/files/images/eclipse_live_logo_header.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://live.eclipse.org/files/images/eclipse_live_logo_header.jpg" /></a></div>Hi,<br /><br />we are seting up a live broadcast of the <b>Eclipse DemoCamp Nantes</b> event (using Google+) , feel free to attend :<br /><br /><a href="https://plus.google.com/110344710078245747120/posts">https://plus.google.com/110344710078245747120/posts</a><br /><br />It's in french and it should start at 17:30 (UTC+2)<br /><br /><br /><div style="font-family: Arial, sans-serif; line-height: 24px; margin-bottom: 10px; margin-top: 0.4em; text-align: left;">5:30PM - 5:45PM:&nbsp;<i>Registration/Introduction</i></div><div style="font-family: Arial, sans-serif; line-height: 24px; margin-bottom: 10px; margin-top: 0.4em; text-align: left;">5:45PM - 6:05PM:&nbsp;<a class="external text" href="http://www.eclipse.org/orion" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://wiki.eclipse.org/skins/eclipsenova/external.png); background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;" title="http://www.eclipse.org/orion">Orion: Tools for the Web, on the Web</a>&nbsp;(Stéphane Bégaudeau, Obeo)</div><div style="font-family: Arial, sans-serif; line-height: 24px; margin-bottom: 10px; margin-top: 0.4em; text-align: left;">6:05PM - 6:25PM:&nbsp;<a class="external text" href="http://wiki.eclipse.org/Intent" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://wiki.eclipse.org/skins/eclipsenova/external.png); background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;" title="http://wiki.eclipse.org/Intent">Mylyn/Intent: Tooling for writing useful and synchronized documentation</a>&nbsp;(Alex Lagarde, Obeo)</div><div style="font-family: Arial, sans-serif; line-height: 24px; margin-bottom: 10px; margin-top: 0.4em; text-align: left;">6:25PM - 6:45PM:&nbsp;<a class="external text" href="http://code.google.com/a/eclipselabs.org/hosting/search?q=label%3aModeling" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://wiki.eclipse.org/skins/eclipsenova/external.png); background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;" title="http://code.google.com/a/eclipselabs.org/hosting/search?q=label%3aModeling">Eclipse Labs for improving DSL development</a>&nbsp;(Hugo Brunelière, AtlanMod Team)</div><div style="font-family: Arial, sans-serif; line-height: 24px; margin-bottom: 10px; margin-top: 0.4em; text-align: left;">6:45PM - 7:00PM:&nbsp;<i>Break &amp; Discussions</i></div><div style="font-family: Arial, sans-serif; line-height: 24px; margin-bottom: 10px; margin-top: 0.4em; text-align: left;">7:00PM - 7:20PM:&nbsp;<a class="external text" href="http://www.eclipse.org/eclipse4" rel="nofollow" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://wiki.eclipse.org/skins/eclipsenova/external.png); background-origin: initial; background-position: 100% 50%; background-repeat: no-repeat no-repeat; color: #3366bb; padding-right: 13px; text-decoration: none;" title="http://www.eclipse.org/eclipse4">Introduction to Eclipse 4, the next generation Eclipse platform</a>&nbsp;(Xavier Seignard)</div><div style="font-family: Arial, sans-serif; line-height: 24px; margin-bottom: 10px; margin-top: 0.4em; text-align: left;">It's started !&nbsp;https://plus.google.com/u/0/110344710078245747120/posts/2RUaaEdk2GB</div><div style="font-family: Arial, sans-serif; line-height: 24px; margin-bottom: 10px; margin-top: 0.4em; text-align: left;"><i><br /></i></div><br /><br /><br /><br />Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0E.n.s.m.n, 4 Rue Alfred Kastler, 44300 Nantes, France47.282315 -1.52055547.2607715 -1.5600370000000001 47.3038585 -1.481073tag:blogger.com,1999:blog-5749374620125186414.post-91077754197168562502012-05-14T09:08:00.002-07:002012-05-14T09:08:59.781-07:00Upcoming Events<br />With Juno's arriving to the end of the release cycle Eclipse Day's are popping up everywhere in the world. <br />If you are not too far from France, you should consider joining us next week for <a href="http://www.eclipsedaytoulouse.com/">Eclipse Day Toulouse</a><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://farm5.staticflickr.com/4152/5162576672_6495db458e.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="216" src="http://farm5.staticflickr.com/4152/5162576672_6495db458e.jpg" width="320" /></a></div><br />Great content, very low price (20€) and Toulouse is so sunny it can only be nice !<br /><br />I will be there presenting Eclipse Modeling. A 101 session leading you to the jungle of one of the most diverse top level project in Eclipse, describing some of the main components and how you can use them in your day to day work.<br /><br /><a href="http://www.eclipsedaytoulouse.com/en/registration/">Register now</a>, this event takes place next week!<br /><br /><hr /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.breizhcamp.org/_/rsrc/1321870214151/config/customLogo.gif?revision=9" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="136" src="http://www.breizhcamp.org/_/rsrc/1321870214151/config/customLogo.gif?revision=9" width="320" /></a></div>It is said the west of France is less sunny but I'm pretty sure its a myth spread by the Bretons frighten tourists. &nbsp; The <a href="http://www.breizhcamp.org/">2012 breizhcamp</a> will be the occasion to confirm my belief.<br /><br />This is a Java/Webapps event during two days with more than 50 speakers ! I will be representing Eclipse there along with Stéphane. We will give an Acceleo tutorial.<br /><br />And here is the Breizh Camp trailer :<br /><br /><div class="separator" style="clear: both; text-align: center;"><object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/h4RNpCBuLBE/0.jpg" height="266" width="320"><param name="movie" value="http://www.youtube.com/v/h4RNpCBuLBE&fs=1&source=uds" /> <param name="bgcolor" value="#FFFFFF" /> <embed width="320" height="266" src="http://www.youtube.com/v/h4RNpCBuLBE&fs=1&source=uds" type="application/x-shockwave-flash"></embed></object></div><div class="separator" style="clear: both; text-align: center;"></div><hr /><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://www.eclipsecon.org/europe2012/sites/eclipsecon.org.europe2012/files/europe2012_logo.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://www.eclipsecon.org/europe2012/sites/eclipsecon.org.europe2012/files/europe2012_logo.jpg" /></a></div>The EclipseCon Europe<a href="http://www.eclipsecon.org/europe2012/ecesubmissions"> call for paper is ou</a>t ! You should consider to start preparing your submission. &nbsp;The &nbsp;conference tracks are :<br /><br /><ul style="background-attachment: initial; background-clip: initial; background-color: white; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: Verdana, Helvetica, Arial, sans-serif; font-size: 13px; line-height: 19px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 20px; margin-left: 1em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Eclipse Technology</strong>.&nbsp;</li><li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Building Industry Solutions</strong>.</li><li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Community and Collaboration</strong>.</li><li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">OSGi</strong>.</li><li style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"><strong style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;">Other Cool Stuff</strong>.</li></ul><br />Lets make this the best EclipseCon ever!<br /><br />Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-22904245034357074622012-03-22T07:36:00.002-07:002012-03-22T07:37:50.741-07:00Preparing EclipseCon US 2012<br />We are <i>pretty active</i> in Eclipse:<br /><br /><ul><li>building the technology to <a href="http://www.eclipse.org/acceleo">generate code or text from models</a></li><li>lowering the&nbsp;<a href="http://wiki.eclipse.org/Intent">"system" versus "doc" barrier</a></li><li>providing a cool UI generation technology to<a href="http://www.eclipse.org/modeling/emft/?project=eef">&nbsp;pimp your editors</a></li><li>enabling&nbsp;<a href="http://www.eclipse.org/atl/">model to model transformations</a></li><li>building the&nbsp;<a href="http://www.eclipse.org/modeling/amalgam/">Modeling package</a></li><li>enabling<a href="http://www.eclipse.org/emf/compare/">&nbsp;team work on models</a>&nbsp;using your favorite SCM&nbsp;</li><li>making sure graphical Ecore modeling is<a href="https://twitter.com/#!/bruncedric/status/169342129745829889"> still a reality </a><i>(HELP WELCOME)</i></li><li><a href="http://wiki.eclipse.org/Architecture_Council">mentoring</a>&nbsp;new projects</li><li>reporting and fixing bugs on several&nbsp;<a href="http://www.eclipse.org/cdo/">other</a>&nbsp;<a href="http://www.eclipse.org/modeling/gmp/?project=gmf-runtime#gmf-runtime">projects</a>.</li><li><a href="http://www.acceleo.org/wiki/index.php/Eclipse_Acceleo_Day">organizing</a>&nbsp;or&nbsp;<a href="http://www.eclipsedayparis.com/">sponsoring</a>&nbsp;Eclipse related events</li></ul><br />I'd love to show all these things during EclipseCon, especially considering things are happening for &nbsp;every single project listed here(*). There is just not enough time and many other interesting things to cover in such a short event but <b>feel free to come and talk to us </b>during the conference. On the other hand we are giving several talks worth mentionning :<br /><br /><br />You did not knew Acceleo was an implementation of an OMG standard ? &nbsp;Stéphane will present it during the Eclipse/OMG Workshop on Sunday.<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.omg.org/news/meetings/tc/dc-12/special-events/Eclipse.htm"><img border="0" height="179" src="http://1.bp.blogspot.com/-lFxxLfkAB-s/T2se2VegPnI/AAAAAAAAAw8/zEFZ2kiNV0U/s320/teasing.png" width="320" /></a></div><i>Meet Stéphane on Sunday,&nbsp;<span style="font-family: Arial, 'Sans Serif'; font-size: 9pt;">15:55 – 16:20</span></i><br /><br /><br />Eclipse is a best platform to build tools. Eclipse Modeling makes things even easier, but why would you need tools ? Aren't they available already &nbsp;? Well, generic tools suitable for any use case are hard to make, &nbsp;you might want to use a given technology and not having any tool. &nbsp;Good news is Eclipse Modeling enables you t<b>o build a dedicated tool in no time</b>.&nbsp;We'll start the EclipseCon conference with a tutorial so that you learn how, leading you through an example tool to build a web app powered by &nbsp;localstorage, Backbone.js and, JQuery.<br /><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://www.eclipsecon.org/2012/sessions/creating-tools-simplify-your-application-development-chrome-app-example"><img border="0" height="170" src="http://1.bp.blogspot.com/-cAQdFqE_rDU/T2smEnvhw8I/AAAAAAAAAxQ/PBZeqKmOHJY/s640/tutorial-ban.png" width="640" /></a></div>We're preparing the tutorial content in a way that you should be able to replay or present it when you'r back home. All the steps are &nbsp;documented through <b>eclipse cheatsheets</b> and you'll get an <b>all-in-one</b> update-site.<br /><i><br /></i><br /><i>Meet Stéphane and me on Monday,&nbsp;<span style="font-family: Arial, 'Sans Serif'; font-size: 9pt;">13:00 – 16:00 in Lake Anne B&nbsp;</span></i><br /><br />If you're interested in industrial collaboration to provide long term and very long term support for Eclipse technologies, <a href="http://www.eclipsecon.org/2012/sessions/how-polarsys-addresses-long-term-support-and-develops-ecosystem-eclipse-tools-critical-embe">the Polarsys talk on Tuesday is for you.</a><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.eclipsecon.org/2012/sessions/how-polarsys-addresses-long-term-support-and-develops-ecosystem-eclipse-tools-critical-embe"><img border="0" height="240" src="http://www.airbus.com/fileadmin/media_gallery/nice_images_you_might_need/aircraft_galleries/a380_gallery/A380_On_Ground.JPG" width="320" /></a></div><br /><br /><i>Meet Gael on Tuesday,&nbsp;<span style="font-family: Arial, 'Sans Serif'; font-size: 9pt;">17:00 – 17:50 in Reston Suites B</span></i><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"></div><br />If you're more interested in technologies, modularity and dynamicity, Mikael is sharing an experiment on bringing EMF in a multi-tenant and dynamic world while trying to reduce API breakages to a minimum.<br /><a href="http://www.eclipsecon.org/2012/sessions/3mf-emf-infinity-and-beyond">3MF : EMF To the infinity ... and beyond !</a><br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.eclipsecon.org/2012/sessions/3mf-emf-infinity-and-beyond"><img border="0" height="242" src="http://4.bp.blogspot.com/-AWP1weuXk9M/T2s3OM8SYWI/AAAAAAAAAx8/4OZnhFlxJlE/s320/buzz.jpeg" width="320" /></a></div><br /><br /><h1 class="title" style="background-color: white; clear: both; color: #1b3664; font-family: verdana, arial; font-size: 24px; letter-spacing: -2px; line-height: 28px; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"> <i style="color: black; font-family: 'Times New Roman'; font-size: medium; font-weight: normal; letter-spacing: normal; line-height: normal;">Meet Mikael on Tuesday,&nbsp;<span style="font-family: Arial, 'Sans Serif'; font-size: 9pt;">17:00 – 17:50 in Lake Thoreau</span></i></h1><br /><br />If you're into Agile and ALM and don't want to give-up on design documentation, Alex will present the Mylyn Intent project :<br /><br /><div class="separator" style="clear: both; text-align: center;"><img border="0" height="297" src="http://1.bp.blogspot.com/-8WCh_GhWujs/T2srwBl0NBI/AAAAAAAAAxc/-kBoluxbHhI/s400/IntentALM_v1.0.0.png" width="400" /></div><br /><h1 class="title" style="background-color: white; clear: both; color: #1b3664; font-family: verdana, arial; font-size: 24px; letter-spacing: -2px; line-height: 28px; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"> <i style="color: black; font-family: 'Times New Roman'; font-size: medium; font-weight: normal; letter-spacing: normal; line-height: normal;">Meet Alex on Wednesday,&nbsp;<span style="font-family: Arial, 'Sans Serif'; font-size: 9pt;">10:30 – 11:15 in Regency Ballroom A</span></i></h1><br />In a nutshell, it's <b>gonna be legendary</b> :)<br /><br />(*) I guess I'll should also blog more to share what's happening.<br /><br />Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-44514085714244735802012-03-05T12:44:00.001-08:002012-03-06T00:51:17.320-08:00Graphical, textual, table, trees, its your call, to us its just EMF models<span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;">Lately I've been making sure the upcoming Designer 6.0 release still plays well with Xtext.&nbsp;</span><br /><br /><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;">Results : fairly good. The newly introduced "Modeling Project" let you behave with your Xtext models just like any other kind of models. Everything is synchronized, you can edit using the Xtext Editor, or using the Graphical modeler and the other one gets automatically refreshed. It just feels right.</span><br /><br /><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;">One identified glitch so far : Xtext DSL's having references to JVM types might need a bit more work.</span><br /><br /><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;">CDO, Xtext, Acceleo ... the product allows you to leverage the Eclipse Modeling ecosystem while having a huge productivity boost defining modeling environments. Of course we can still argue whether the state machine is more readable using the text or the diagram ;)</span><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-OUgEFoeYaCA/TzPVDnJTqrI/AAAAAAAAAuw/hnvoqTJZ6cg/s903/od-xtext.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="339" src="http://4.bp.blogspot.com/-OUgEFoeYaCA/TzPVDnJTqrI/AAAAAAAAAuw/hnvoqTJZ6cg/s640/od-xtext.png" width="640" /></a></div><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;"><br /></span><br /><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px;">Some niceties are visible for those who want to have a deeper look :</span><br /><br /><ul><li><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px;">the State "Soon" has a specific grayish style <b>because it's not linked</b> to transition (incoming or outgoing)</span></li><li><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px;">the Transition to Event blue dash link uses the "<b>Edge on Edge</b>" new feature for 6.0.</span></li><li><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px;">and the "Connect" tool in the palette is smart enough to "<b>do the right thing</b>" depending on where you clic : from State to State or Transition to Event. One tool to bind them all !</span></li></ul><br /><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;">But where does the "<i>PlanningTheTravel</i>" to "<i>InThePlane</i>" edge comes from ? I created this transition using the graphical modeler.</span><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px;">&nbsp;Xtext won't allow to save the model in this state because of the textual syntax, that's why the graphical modeler has been specified in a way which lead to the edge being red.</span><br /><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;"><br /></span><br /><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;">When building the basis of the modeler takes minutes of work, you have enough time to think about user experience and focus on providing<b> the right feedback, at the right time.</b></span><br /><span style="font-family: arial, sans-serif; font-size: x-small;"><span style="line-height: 18px;"><br /></span></span><br /><br /><span style="background-color: white; font-family: arial, sans-serif; font-size: 13px; line-height: 18px;">I'm quite proud of what's cooking for this 6.0 release :)</span><br /><br class="Apple-interchange-newline" />Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com3tag:blogger.com,1999:blog-5749374620125186414.post-46969372030045905692011-12-16T09:55:00.000-08:002011-12-16T09:55:56.778-08:00Do you want to discard this editor's changes ?If you've used EMF editors you probably already have seen this kind of dialog :<br /><br /><br /><img border="0" src="http://1.bp.blogspot.com/-szwzJ2BUbF0/Tut-vdDEJiI/AAAAAAAAAt8/za8cESn5shU/s1600/discard-changes.png" style="color: #0000ee; text-align: center; text-decoration: underline;" /><br /><br />This happens when you did change your model and some external changes (aka somebody else changed your file) happened before you pressed "save". &nbsp;This is not only an EMF problem, any editor has kind of problematic. Either way the end user have a very hard time undestanding why he has to pick one or the other version as <b>most of the time these changes are not conflicting </b>!<br /><br />Is that the best we can do ? &nbsp;Another option is to compare both versions, detect conflicts, and if there is no conflicts, just merge the changes.<br /><br /><a href="http://1.bp.blogspot.com/-yqQuDcAzzk4/Tut-ufaNoRI/AAAAAAAAAto/PZfnYD-Matc/s1600/step2-unsync.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://1.bp.blogspot.com/-yqQuDcAzzk4/Tut-ufaNoRI/AAAAAAAAAto/PZfnYD-Matc/s1600/step2-unsync.png" /></a><br /><br />Here I changed the number of pages in the EMF Book from the model, and changed the title through the textual editor. When going back on my editor, the comparison, conflict detection and then merge process happens and I get this :<br /><br /><a href="http://2.bp.blogspot.com/-BgtHrJ-QBnI/Tut-tqAEiWI/AAAAAAAAAtk/YpMPaCjnRss/s1600/step3-merged.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="http://2.bp.blogspot.com/-BgtHrJ-QBnI/Tut-tqAEiWI/AAAAAAAAAtk/YpMPaCjnRss/s1600/step3-merged.png" /></a><br /><br />And when I have conflicts? &nbsp;Then the editor can't do much, right, at least it can helps you and show you the conflict :<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-_4iGi009OPc/Tut-sOWRh3I/AAAAAAAAAtU/-P16KEkbz5k/s1600/step6-conflict-resolution.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br class="Apple-interchange-newline" /><img border="0" src="http://4.bp.blogspot.com/-_4iGi009OPc/Tut-sOWRh3I/AAAAAAAAAtU/-P16KEkbz5k/s1600/step6-conflict-resolution.png" /></a></div><div><br /></div><br /><br /><br />How is it implemented ? That's fairly easy using emf and it's <a href="http://www.eclipse.org/emf/compare/">diff/merge support </a>:<br /><script src="https://gist.github.com/1487029.js?file=gistfile1.java"></script><br /><br />The general process is : the editor tells the WorkspaceSync class when it got saved (or freshly loaded) . This WorkspaceSync keep a copy of the state of the editor as "ancestor". When an event comes from the workspace, the editor version and the workspace versions are compared using the original copy as a common ancestor to detect conflicts. If there is no conflict, it merges, if there is at least one conflict it asks user.<br /><br />&nbsp;&nbsp;The drawback is clear with this implementation : you're keeping around - in memory - a copy of your model to be able to detect conflicts later on. &nbsp;As such that solution is not for every case.<br /><br />Other options are possible and might be great ways to exercise your EMF skills, if you try something, tell me !Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-27439142647759465972011-12-06T07:33:00.000-08:002011-12-06T07:33:00.571-08:00Eclipse Day Paris 2011<br /><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"></div><br /><a href="http://1.bp.blogspot.com/-Cp4j-QDC-Ec/TqkcojmCR0I/AAAAAAAAAoM/2aXp5AYReZM/s1600/eclipsedayparis.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;"><img border="0" height="119" src="http://1.bp.blogspot.com/-Cp4j-QDC-Ec/TqkcojmCR0I/AAAAAAAAAoM/2aXp5AYReZM/s320/eclipsedayparis.png" width="320" /></a>Eclipse Day Paris took place a few weeks ago, every year it is scheduled the week after Eclipse Con Europe. I had the chance to attend the 2011 edition and it was a <b>real pleasure</b> for several reasons.<br /><br /><br /><br /><span class="Apple-style-span" style="font-size: large;">1 - Organization rocked</span><br /><br />The event was perfectly organized. Proxiad and Zenika did a great job, timing was perfect for the presentations, the content was interesting and the french touch for food and wine have been highly appreciated&nbsp;!<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.eclipsedayparis.com/2011/uploads/images/Gallery/EDP2011/IMG_1379%20(Custom).JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://www.eclipsedayparis.com/2011/uploads/images/Gallery/EDP2011/IMG_1379%20(Custom).JPG" width="320" /></a></div><br /><a href="http://www.proxiad.com/">Proxiad</a> and <a href="http://www.zenika.com/">Zenika</a> are fairly original service providers : highly technical and active in open source communities, it's always a pleasure to collaborate with them.&nbsp;<b>Congrats to the organizers </b>!<br /><br /><span class="Apple-style-span" style="font-size: large;">2 - Diverse content</span><br /><br />The talks were very diverse, from Ralph and the <b>Eclipse</b> <b>Foundation</b> to <b>UI testing</b> going through <b>modeling</b>, <b>OSGi</b>, <b>Scout</b>, <b>BI</b> and<b> industrial feedback</b>. A nice combination.<br /><br /><span class="Apple-style-span" style="font-size: large;">3 - Wide and Diverse audience</span><br /><br /><div style="text-align: right;"><a href="http://4.bp.blogspot.com/-dnCvddjY6G8/TsrAjVp5s3I/AAAAAAAAAtI/z27QhXs4BBA/s800/IMG_1154+%2528Custom%2529.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-dnCvddjY6G8/TsrAjVp5s3I/AAAAAAAAAtI/z27QhXs4BBA/s320/IMG_1154+%2528Custom%2529.JPG" width="213" /></a></div><div style="text-align: left;">The event was free and attracted a<b> wide and diverse audience</b>. That was perfect for me as I was there as "Eclipse Modeling Evangelist", helping people understand what kind of technologies we are building in this project and how they could benefit from it with a very low cost or risk.</div><br /><a href="http://www.eclipsedayparis.com/2011/uploads/slides2011/CedricBrun_EclipseModeling.pdf">Slides (in english) are available here.</a><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><a href="http://www.eclipsedayparis.com/2011/uploads/images/Gallery/EDP2011/IMG_1164%20(Custom).JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="213" src="http://www.eclipsedayparis.com/2011/uploads/images/Gallery/EDP2011/IMG_1164%20(Custom).JPG" width="320" /></a><br />The room was crowded and actively listening. I had many interactions after the talk. The Eclipse Modeling project is very hard to understand from the outside, it is <b>highly fragmented and poorly publicized</b>. I'll try to give more talks of this kind in the future.<br /><br /><br /><br /><br /><br /><span class="Apple-style-span" style="font-size: large;">4 - Hands on</span><br /><br />Afternoon we had an "hands on" session with Obeo Designer, timing was short but all the attendees managed to build a DSL and a graphical modeler during the session.<br /><div class="separator" style="clear: both; text-align: center;"><a href="http://www.eclipsedayparis.com/2011/uploads/images/Gallery/EDP2011/IMG_1419%20(Custom).JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="213" src="http://www.eclipsedayparis.com/2011/uploads/images/Gallery/EDP2011/IMG_1419%20(Custom).JPG" width="320" /></a></div><br /><br />It's always <b>enlightening for us </b>to interact directly with users trying the technology. It helps us identify very small things which are making a huge difference at the end. Obeo Designer 6.0 will bring a lot of good stuff in this regard, stay tuned !<br /><br /><br /><br /><br /><br /><br />In a nutshell I really liked this event which is a<b> good complement </b>to other Eclipse events like democamps or eclipse conferences. I'm looking forward to it for next year and can only advice you to book the dates !Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com2tag:blogger.com,1999:blog-5749374620125186414.post-89287941636828359132011-12-01T11:41:00.000-08:002011-12-01T11:41:14.389-08:00SysML Comparison and Contributions<br /><span class="Apple-style-span" style="font-size: large;">Community and Ecosystem</span><br /><span class="Apple-style-span" style="font-size: large;"><br /></span><br />The Juno release cycle has been very interesting for EMF Compare - <b>as a project</b>.<br /><br />Discussions started through the &nbsp;Modeling Platform working group lead to the <b>sponsorship</b> of a bunch of new features (<i>we covered those before but in a nutshell : &nbsp;UML dedicated support, UI enhancements, Graphical comparison support and Logical Model for EGit).&nbsp;</i><br /><br />Meanwhile we took a number of actions to make this project a <b>more welcoming area</b> for contributions and to ease adoption, some of these actions are technical (documentation, build, tests and continuous integration) and others are focused on community grow (transparency, communication, <a href="http://www.iwmcp.org/2011/">discussions with academic researchers</a>).<br /><br />We <b>are not done yet </b>and have several remaining actions but we can already see some results :<br /><br />-<b> new adopters</b> appeared and contacted us through the bugzilla with use cases we had not envisionned, trying to keep the answering delay reasonable helped a lot in converging to a patch. Within Eclipse itself we've seen several new projects adopting the technology.<br />-<b> new features contribution</b> : &nbsp;thanks to Arthur from Atos a <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=360757">dedicated support for SysML</a> model just got integrated and is now built. In those cases where timeframe is obviously bigger than a simple patch, git helps a lot.<br />- discussions with academics helped us drafting<b> powerful new features </b>for 2.0 like fingerprints based matching (<i>a complete blog post about this will come soon</i>)<br /><br />EclipseCon US will be a great place to share our experience, I if you're interested or would like to see a specific topic within this scope,<a href="http://www.eclipsecon.org/2012/sessions/models-and-scm-eclipse-bright-future"> feel free to add a comment.</a><br /><br /><span class="Apple-style-span" style="font-size: large;">More about SysML ...</span><br /><br />The SysML contribution is built on top of the UML dedicated support, it just got integrated and built.<br />It never got released so it might be a bit rough, and we still have some issues we<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=365285"> want to fix for 1.3</a> but if you feel adventurous, <a href="http://download.eclipse.org/modeling/emf/compare/updates/interim/1.3/">go get the bits here </a>!<i>(update site)</i>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-64921949885265438782011-11-07T07:56:00.000-08:002011-11-07T07:58:45.417-08:00Follow the White Rabbit ...at Eclipse Day Paris !<br /><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-oYL86NtznB4/Trf-jbYoqJI/AAAAAAAAApI/cSwQ2ghyGMg/s1600/title.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="481" src="http://3.bp.blogspot.com/-oYL86NtznB4/Trf-jbYoqJI/AAAAAAAAApI/cSwQ2ghyGMg/s640/title.png" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">If you're always wondering why we are so excited about Eclipse Modeling Technologies, if you'd like to understand how technologies relates to each others and how they can be used, stop by at <a href="http://www.eclipsedayparis.com/">Eclipse Day Paris</a> tomorrow :</div><div class="separator" style="clear: both; text-align: left;"><i><br /></i></div><div class="separator" style="clear: both; text-align: left;"><span class="Apple-style-span" style="background-color: white; font-family: Verdana, 'DejaVu Sans', 'Bitstream Vera Sans', Geneva, sans-serif; font-size: 12px; line-height: 16px;"><i>"Modeling" . Behind this simple word lies strong opinions, misconceptions, obscure acronyms, meta-things and marketing campains far from the reality of developping an application. But if you look more closely, this forest hides a fairly small set of simple, powerful yet flexible concepts. If you zoom in again, you'll see awesome technologies. While some "dreamers" are giving more and more abstract discourses about modeling, on the field these technologies are pervading, even close to the bare metal in the Eclipse platform itself. In 2011, you might already know you can generate rich applications, but what about web technologies, PHP, C ?&nbsp;</i></span></div><div class="separator" style="clear: both; text-align: left;"><span class="Apple-style-span" style="background-color: white; font-family: Verdana, 'DejaVu Sans', 'Bitstream Vera Sans', Geneva, sans-serif; font-size: 12px; line-height: 16px;"><i><br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" />This talk will start by taking a step back about what is all this modeling stuff, what it isn't and what technologies the Eclipse Modeling project brings in this regard. The focus will be placed on tools and components useful to build any kind of application and not just Eclipse based ones : EMF, Acceleo. You'll come back with examples of how you could leverage those technologies for your own project.</i></span></div><div class="separator" style="clear: both; text-align: left;"><br /></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com1tag:blogger.com,1999:blog-5749374620125186414.post-34862931010815529452011-10-27T02:00:00.000-07:002011-10-27T02:00:24.275-07:00Obeo @ Eclipse Con EuropeObeo invests a lot in Eclipse projects ( yes, we are a&nbsp;<a href="http://www.eclipse.org/membership/showMembersWithTag.php?TagID=strategic">Strategic Member</a>&nbsp;of the Eclipse Foundation), we're building, in the open the modeling platform we need for our <a href="http://www.obeodesigner.com/">product.</a><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://eclipsecon.org/sites/all/themes/themes/europe2011/images/logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://eclipsecon.org/sites/all/themes/themes/europe2011/images/logo.png" /></a></div>Conferences like the upcoming Eclipse Con Europe are great time for our team, we get to <b>meet</b> people we usually interact with using mails or bugzilla, adopters which are using our technologies, we get to have an <i>insider</i> sight of what is going on here and there, and we're pleased to show to others what we did in the generic technologies or how those pieces are used for domain specific needs.<br /><br />This year the Obeo'ers are co-presenting or presenting numerous talks covering a wide spectrum :<br /><span class="Apple-style-span" style="background-color: white; color: #56726e; font-family: Arial, Helvetica, 'URW Gothic L', sans-serif; font-size: 12px;"><br /></span><br /><table><tbody><tr><th>Time Slot</th><th>Presenter</th><th>Title</th><th>Session Type</th></tr><tr><td>2 November 09:00 - 12:30</td><td>Mariot Chauvin</td><td><a href="http://www.eclipsecon.org/sessions/what-every-eclipse-developer-should-know-about-emf" style="color: #ce7100; font-weight: bold; text-decoration: none;">What every Eclipse Developer should know about EMF</a></td><td>Tutorial [3.5 hours]</td></tr><tr><td>2 November <br />16:30 - 17:00</td><td>Stéphane Bégaudeau</td><td><a href="http://www.eclipsecon.org/europe2011/sessions/and-you-thought-you-knew-template-based-generators" style="color: #ce7100; font-weight: bold; text-decoration: none;">And you thought you knew Template Based Generators?</a></td><td>Standard [25 minutes]</td></tr><tr><td>3 November 09:00 - 09:30</td><td>Goulwen Le Fur</td><td><a href="http://www.eclipsecon.org/europe2011/sessions/scientific-application-redesign-oil-industry-eclipse-modeling" style="color: #ce7100; font-weight: bold; text-decoration: none;">Scientific application redesign in oil industry with Eclipse Modeling</a></td><td>Standard [25 minutes]</td></tr><tr><td>3 November 10:30 - 11:30</td><td>Mariot Chauvin</td><td><a href="http://www.eclipsecon.org/europe2011/sessions/collaborative-modeling-new-deal" style="color: #ce7100; font-weight: bold; text-decoration: none;">Collaborative Modeling : the New Deal</a></td><td>Extended [55 minutes]</td></tr><tr><td>3 November 11:30 - 12:00</td><td>Gaël Blondelle</td><td><a href="http://www.eclipsecon.org/europe2011/sessions/making-opees-industrial-working-group" style="color: #ce7100; font-weight: bold; text-decoration: none;">The Making of the OPEES Industrial Working Group</a></td><td>Standard [25 minutes]</td></tr><tr><td>3 November 15:30 - 16:00</td><td>Frédéric Thomas</td><td><a href="http://www.eclipsecon.org/europe2011/sessions/eclipse-railway-safety-engineering" style="color: #ce7100; font-weight: bold; text-decoration: none;">Eclipse for Railway Safety Engineering</a></td><td>Standard [25 minutes]</td></tr><tr><td>3 November 16:00 - 16:30</td><td>Mikaël Barbero</td><td><a href="http://www.eclipsecon.org/sessions/what-heck-are-logical-models" style="color: #ce7100; font-weight: bold; text-decoration: none;">What the heck are logical models?</a></td><td>Standard [25 minutes]</td></tr><tr><td>4 November 11:30 - 12:00</td><td>Alex Lagarde</td><td><a href="http://www.eclipsecon.org/europe2011/sessions/create-useful-documentation-mylyn-intent-step-further-application-life-cycle-management" style="color: #ce7100; font-weight: bold; text-decoration: none;">Create useful documentation with Mylyn Intent : a step further in Application Life-cycle Management</a></td><td>Standard [25 minutes]</td></tr><tr><td>4 November 15:00 - 15:30</td><td>Mikaël Barbero</td><td><a href="http://www.eclipsecon.org/europe2011/sessions/emfcompare-improvements-fulfilling-requirements-modeling-platform-working-group" style="color: #ce7100; font-weight: bold; text-decoration: none;">EMFCompare improvements: fulfilling requirements of the Modeling Platform Working Group</a></td><td>Standard [25 minutes]</td></tr></tbody></table><br /><div>Take this chance to discuss with the team !&nbsp;</div><div><br /></div><div>Unfortunately I won't be able to make it this year. I'll celebrate the 10th birthday of Eclipse through Twitter/G+, <b>so pleeeeease, tweet-it </b>!</div><div><br /></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Cp4j-QDC-Ec/TqkcojmCR0I/AAAAAAAAAoM/2aXp5AYReZM/s1600/eclipsedayparis.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="119" src="http://1.bp.blogspot.com/-Cp4j-QDC-Ec/TqkcojmCR0I/AAAAAAAAAoM/2aXp5AYReZM/s320/eclipsedayparis.png" width="320" /></a></div><div>On the other hand I will present at <a href="http://www.eclipsedayparis.com/">Eclipse Day Paris </a>: &nbsp;<b>What the heck is Eclipse Modeling and why should you care ?</b></div><div><br /></div><div>I'm looking forward to meet you there !</div><div><br /></div><div><br /></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-62965178779974412892011-10-18T08:37:00.000-07:002011-10-18T08:47:56.157-07:00Model Transformation PreviewLet's say you have a model to model transformation, and you want to provide the ability, for the end-user, to<b> see and control what is going to be applied on the target model</b>. How could you do that ? EMF compare might do the trick..<br /><br />Here is a trivial model transformation, renaming all Classes which are "abstract" by adding a prefix to their name :<br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><br /></span><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"></span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;">public class ModelTransformer {</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public void process(Resource res) {</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Iterator<eobject> it = EcoreUtil.getAllProperContents(res, true);</eobject></span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>while (it.hasNext()) {</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>EObject eobj = it.next();</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>if (eobj instanceof Class) {</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>renameifAbstract((Class)eobj);</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>private void renameifAbstract(Class eobj) {</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>if (eobj.isAbstract() &amp;&amp; !eobj.getName().startsWith("Abstract")) {</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>eobj.setName("Abstract" + eobj.getName());</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;">}</span><br /><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><br /><div>The orchestrator of this process has the following responsabilities : loading the original models, transforming those, and then opening the comparison preview, here is the code coming from an action :</div><div><br /></div><div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;">protected void transformModelsAndOpenComparison() throws InterruptedException, PartInitException,</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>InvocationTargetException {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>ResourceSet future = new ResourceSetImpl();</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>for (URI uri : selectedURI) {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>future.getResource(uri, true);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>ModelTransformer transformer = new ModelTransformer();</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>for (Resource res : future.getResources()) {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>transformer.process(res);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>new DifferencePreview(future).compareWithExisting();</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div></div><div><br /></div><div><i>Future</i> contains all the models <b>after</b> they have been transformed. &nbsp;Now the interesting part is in the DifferencePreview class :</div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;">public class DifferencePreview {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>private ResourceSet now = new ResourceSetImpl();</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>private ResourceSet future;</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public DifferencePreview(ResourceSet output) {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>future = output;</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public void compareWithExisting() throws InterruptedException, PartInitException,</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>InvocationTargetException {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>for (Resource futureRes : future.getResources()) {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>now.getResource(futureRes.getURI(), true);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>MatchResourceSet match = MatchService.doResourceSetMatch(future, now, Collections.EMPTY_MAP);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>DiffResourceSet diff = DiffService.doDiff(match);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>ComparisonResourceSetSnapshot snap = DiffFactory.eINSTANCE.createComparisonResourceSetSnapshot();</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>snap.setDiffResourceSet(diff);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>snap.setMatchResourceSet(match);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>ModelCompareEditorInput input = new ModelCompareEditorInput(snap);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>CompareServices.openEditor(input, Collections.EMPTY_LIST);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;">}</span></div></div><div><br /></div><div><i>Now </i>contains the state of the models as it's serialized on the filesystem. &nbsp;We starts by constructing the <i>Now</i> resourceset getting all the resources which are present in the <i>Future</i> one. Then we call emf compare to compute the required <b>match</b> and <b>diff</b> , forge an editor input and open it.</div><div><br /></div><div>How does it look like then ?&nbsp;</div><div class="separator" style="clear: both; text-align: center;"></div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-y0egF8rjm6Y/Tp2YUkJLHFI/AAAAAAAAAn4/U-tzStIFPJY/s1600/compare-transfo-uml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="http://4.bp.blogspot.com/-y0egF8rjm6Y/Tp2YUkJLHFI/AAAAAAAAAn4/U-tzStIFPJY/s640/compare-transfo-uml.png" width="640" /></a></div><div><br /></div><div><br /></div><div>Pretty easy huh ?&nbsp;</div><div><br /></div><div>Now let's say you want to allow the end user to customize your output model and allow him to see when the changes coming from the transformation are in conflict with his customizations. Its getting more interesting : &nbsp;to do so you will need to have a version of the model which <b>has been untouched by the end user</b> and use it as the ancestor. You need to decide where to keep this data and how to prevent the end user to edit it. It's up to your use case, it might be a file next to the output file, it can be in the Eclipse metadata.. Here for the example we'll just use files with <i>a ".ancestor" suffix (see getAncestorURI) .</i></div><div><br /></div><div>Anyway, then you'll need to move to<b> three way comparison </b>:</div><div><br /></div><div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;">public class DifferencePreviewWithConflictDetection {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>private ResourceSet now = new ResourceSetImpl();</span></div><div><span class="Apple-tab-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"> </span></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span><b>private ResourceSet ancestor = new ResourceSetImpl();</b></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>private ResourceSet future;</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public DifferencePreviewWithConflictDetection(ResourceSet output) {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>future = output;</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>public void compareWithExisting() throws InterruptedException, PartInitException,</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>InvocationTargetException {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>for (Resource futureRes : future.getResources()) {</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>now.getResource(futureRes.getURI(), true);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span><b>ancestor.getResource(getAncestorURI(futureRes.getURI()),true);</b></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div><div><span class="Apple-tab-span" style="white-space: pre;"><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"> </span></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>MatchResourceSet match = MatchService.doResourceSetMatch(now, future,<span class="Apple-style-span" style="color: red;"> <b>ancestor</b></span>, Collections.EMPTY_MAP);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>DiffResourceSet diff = DiffService.doDiff(match,<b><span class="Apple-style-span" style="color: red;">true</span></b>);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>ComparisonResourceSetSnapshot snap = DiffFactory.eINSTANCE.createComparisonResourceSetSnapshot();</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>snap.setDiffResourceSet(diff);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>snap.setMatchResourceSet(match);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>ModelCompareEditorInput input = new ModelCompareEditorInput(snap);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>CompareServices.openEditor(input, Collections.EMPTY_LIST);</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><br /></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><span class="Apple-tab-span" style="white-space: pre;"> </span><b>private URI getAncestorURI(URI uri) {</b></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><span class="Apple-tab-span" style="white-space: pre;"> </span>return uri.appendFileExtension("ancestor");</b></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><span class="Apple-tab-span" style="white-space: pre;"> </span>}</b></span></div><div><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;">}</span></div></div><div><br /></div><div>And now what happens if the user decides to update the name of an abstract class, here <b>LibraryElement</b>&nbsp;got renamed in <b>AnyElement</b>&nbsp;...</div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-unvCHxpBwNQ/Tp2YWL4V92I/AAAAAAAAAoA/uUeXdcbz3yY/s1600/compare-transfo-uml-conflict.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="312" src="http://2.bp.blogspot.com/-unvCHxpBwNQ/Tp2YWL4V92I/AAAAAAAAAoA/uUeXdcbz3yY/s640/compare-transfo-uml-conflict.png" width="640" /></a></div><div><br /></div><div>That's right, <b>we have a conflict </b>!&nbsp;</div><div><br /></div><div>It's a pretty simple example of what you can achieve using emf compare and how you can reuse it in your tooling. The model comparison editor which opens then is slightly different from the one you have &nbsp;using SCM operations and has less features (it does not provide the latest capabilities regarding diff filtering). It is also probably not the best fit for end users if many conflicts have to be handled, you might want a wizard in these cases. These are open subjects left as an exercice to the reader. &nbsp;We are clearly missing building blocks regarding ui so far.</div><div><br /></div><div>On the newsgroup, bugzilla or during conferences we are often amazed to see how adopters are re-using the technology for their use case, <b>keep telling us</b><i>,</i> we like to know !</div><div><br /></div><div>Next steps ? Plugging this with an <a href="http://eclipse.org/atl/">ATL</a> transformation or using the scoping mechanisms (<i>IMatchScope</i>) to ignore parts of the model we don't want to check, we'll see.. Stay tuned.</div><div><br /></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-77766969377516583122011-10-10T07:59:00.000-07:002011-10-10T08:24:41.271-07:00Model Comparison : Logical Model, UML, Papyrus, EcoreTools and GMF Integration<a href="http://www.eclipse.org/modeling/emf/images/emf_logo.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://www.eclipse.org/modeling/emf/images/emf_logo.png" /></a><br /><br /><br /><br />We&nbsp; just promoted an EMF Compare 1.3 integration build providing all the latests developments regarding EMF Compare, in a nutshell:<br /><br /><br />-<b> Logical Model</b> support for team operations (more especially with the eGit team provider)<br />- <b>UML</b> semantic comparison with dedicated management of profiles, stereotypes, and <b>dependencies across changes</b><br />- <b>GMF</b> generic bridge for graphical comparison<br />- <b>Papyrus</b> specific bridge for UML diagrams comparison<br />-<b> EcoreTools</b> specific bridge for Ecore diagrams comparison<br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-QnuIRtATUd4/TpMMEWrcVpI/AAAAAAAAAnQ/a0o0Y8f99tE/s1600/graphcompare-screen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="378" src="http://4.bp.blogspot.com/-QnuIRtATUd4/TpMMEWrcVpI/AAAAAAAAAnQ/a0o0Y8f99tE/s640/graphcompare-screen.png" width="640" /></a></div><br /><br />The build is here :<br /><br /><a href="http://download.eclipse.org/modeling/emf/compare/updates/interim/1.3/">http://download.eclipse.org/modeling/emf/compare/updates/interim/1.3/</a><br /><br />(subsequent updates will be pushed here too)<br /><br />Depending on what you are trying to install you might need the orbit update site (google collection):<br /><br /><a class="moz-txt-link-freetext" href="http://download.eclipse.org/tools/orbit/downloads/drops/R20110523182458/repository">http://download.eclipse.org/tools/orbit/downloads/drops/R20110523182458/repository</a><br /><br />The Indigo one (papyrus, gmf and Ecoretools):<br /><br /><a class="moz-txt-link-freetext" href="http://download.eclipse.org/releases/indigo">http://download.eclipse.org/releases/indigo</a><br /><br />Please if you are interested in any of this change, go grab the build and have a try, we will welcome your feedback <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=EMF&amp;component=Compare">through the bugzilla</a>.Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-57852030106889621622011-09-28T03:36:00.000-07:002011-09-28T03:36:00.168-07:00Synchronizing data : Dropbox-like based on open-source stackI had to find a solution for my <b>backup/cloud drive</b> needs lately. <a href="http://www.dropbox.com/pricing">Dropbox</a> works just fine, but the pricing is going high to fast as you want more space.<br /><br /><div>A 1To / 100Mbs dedicated server is <a href="http://www.kimsufi.com/">not that expensive</a> and provides the nice perspective of more server/web oriented hacks later on.</div><div><br /></div><div>After trying a few open source projects in this regard (<a href="http://www.syncany.org/">Syncany</a>, <a href="http://www.csync.org/">Csync</a> or <a href="http://sparkleshare.org/">SparkleShare</a>) and keeping away from the desire of building my own, here is my short list :</div><div><br /></div><div><ul><li>Sparkleshare is very nice for things which I want to keep versions of. I really like the fact that it's keeping everything in a git repository, any file manager providing git integration will then allow me to dig through the history of files. As I'm not interested in the fact that it works on multiple platforms (linux, mac and soon windows) I still have to check if a&nbsp;script launching automatic <span class="Apple-style-span"><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">git add . &amp;&amp; git commit &amp;&amp; git pus</span>h</span> is not going to be as reliable as SparkleShare while being lighter.</li></ul></div><div><ul><li>For non versioned directories, <a href="http://linux.die.net/man/1/inotifywait">inotifywait</a> + csync are just fine. (incron, a cron-like tool but using filesystem events as an input did work but is not supporting recursive watching)</li></ul></div><div><br /></div><div>I also considered Syncany but did not liked the fact that server side chunks of data are used which have no standard way of being accessed beside Syncany. I quickly had the feeling that git would do just fine in this regard, especially with a few <span class="Apple-style-span">git gc --aggressive</span> from time to time.</div><div><br /></div><div>I'm<i> pretty sure</i> using the new <a href="http://thecodersbreakfast.net/index.php?post/2011/05/18/Filesystem-notifications-with-Java-7">Java 7 filesystem notifications </a>+ <a href="http://eclipse.org/jgit/">jgit</a> one could very quickly build an highly efficient and multi-platform solution. I managed to refrain myself trying it, but if you do or know someone who did, please let me know ;) <b>edit</b> : <i><a href="https://github.com/mbarbero">Mikael</a> did start such a thing on <a href="https://github.com/mbarbero/backgitup">github</a>&nbsp;</i></div><div><br />If you are an OpenSuse user here is the <a href="http://download.opensuse.org/repositories/network:/synchronization:/files/openSUSE_11.4/">magic repository.</a><br /><br /></div><div>We'll see in a few month if I'm still happy with this solutions.<b> Feel free to add a comment if you have other options </b>!</div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0tag:blogger.com,1999:blog-5749374620125186414.post-58296101683216350302011-09-21T02:16:00.000-07:002011-09-21T02:16:00.094-07:00Textual Adventures in Ecore + Graphical ModelerI was cleaning up my <span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">${HOME}</span> folder today and found a set of demos I prepared two years ago. <br /><div><br /></div><div>I did this for a modeling course given at<a href="http://www.polytech.univ-nantes.fr/"> Polytech'</a> . The course was about Model Driven Engineering, toward the end the student have to build a domain specific model for textual adventure games and then generate the corresponding Java app. Some students tend to go very far on this exercice buidling a fairly complex DSL.</div><div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div>The following demos are here to given an idea to the student of what can be done in a few minutes : a simple Ecore model<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-56zFyxZPdGE/TmnW6PBNBsI/AAAAAAAAAmw/G9dwegS5FJI/s1600/adventure-domain.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="214" src="http://1.bp.blogspot.com/-56zFyxZPdGE/TmnW6PBNBsI/AAAAAAAAAmw/G9dwegS5FJI/s320/adventure-domain.png" width="320" /></a></div><div><br /></div></div><div><br /></div><div><br /></div><div><br /></div><div>And then a graphical modeler :<br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-KBdnBr8qWVI/TmnXTKacAQI/AAAAAAAAAm0/i7sYvoicPjk/s1600/adventure-modeler.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="190" src="http://2.bp.blogspot.com/-KBdnBr8qWVI/TmnXTKacAQI/AAAAAAAAAm0/i7sYvoicPjk/s320/adventure-modeler.png" width="320" /></a></div><br />And then we build Acceleo generator templates to directly map a game instance into its running Java code. It's a very interesting exercise, students are staying <b>focused</b> because it's about game, and at the same time it's a great example of the power of <b>specific modeling</b>. You don't design a game with an UML diagram, but building your own langage and using it you're quickly getting results and can <b>evaluate many designs</b>.<br /><br />Building the complete tooling is a matter of minutes, not hours, here are the live demos :<br /><br />Designing the Domain Model : <a href="http://ks360939.kimsufi.com/~cedric/data/AdventureGameEcore.htm">vidéo</a><br /><br />Specifying while running the Graphical Designer : <a href="http://ks360939.kimsufi.com/~cedric/data/GameModeler1.htm">part1 </a>and <a href="http://ks360939.kimsufi.com/~cedric/data/GameModeler2.htm">part2</a><br /><br /></div><div><br /></div><div><i>As a sidenote, these flash demos are based on a pretty old version of Obeo Designer, if you're interested, have a look on the latest versions which are even better &nbsp;!</i></div><div></div>Cédric Brunhttps://plus.google.com/110344710078245747120noreply@blogger.com0