tag:blogger.com,1999:blog-8246524281032241642024-03-14T09:11:46.573+01:00The GordianIf then such praise the Macedonian got<br>
For having rudely cut the Gordian Knot...Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.comBlogger58125tag:blogger.com,1999:blog-824652428103224164.post-49002106789538158282021-09-15T17:43:00.002+02:002021-09-15T17:43:22.307+02:00CDO 4.15 Is Available<p> <a href="https://www.eclipse.org/cdo/downloads/?fresh#R20210908_0655" target="_blank">CDO 4.15</a> has been released today:</p><p></p><ul style="text-align: left;"><li><a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20210908-0655" target="">Update Site</a><br /></li><li><a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20210908-0655/relnotes.html">Release Notes</a><br /></li><li><a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20210908-0655/help/index.html">Documentation</a></li><li><a href="https://download.eclipse.org/modeling/emf/cdo/drops/R20210908-0655/api.html">API Report</a><br /></li><li><a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20210908-0655/tests/index.html">Test Report</a></li></ul><p></p>Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-59855304872106312042016-10-21T12:53:00.001+02:002016-10-22T08:01:12.793+02:00Fancy Merge Support in CDOCDO's merge support has recently been enhanced in several ways. Please enjoy this 7:00 minutes screen-cast that I've recorded for you:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i9.ytimg.com/vi/V3gZDwX3r7s/default.jpg?sqp=CNTep8AF&rs=AOn4CLDz3bIWh0mFlWPsdmgs9oIiSGn4aA" frameborder="0" height="266" src="https://www.youtube.com/embed/V3gZDwX3r7s?feature=player_embedded" width="320"></iframe></div>
<br />
If you'd like to learn more about CDO come to the EclipseCon Europe next week where I'll give a session on <a href="https://www.eclipsecon.org/europe2016/session/cdo-application-programmers" target="_blank">CDO for Application Programmers</a>. I'd be happy to meet you there!Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com2tag:blogger.com,1999:blog-824652428103224164.post-56555038967010931322016-05-10T11:56:00.000+02:002016-05-10T11:56:26.005+02:00Come to the Eclipse Demo Camp in BerlinOn Thursday, May 12th, 2016 at 1:00 pm the Neon Demo Camp takes place in Berlin:<br />
<br />
<div style="text-align: center;">
<a href="https://wiki.eclipse.org/Eclipse_DemoCamp_May_2016_Berlin" target="_blank">https://wiki.eclipse.org/Eclipse_DemoCamp_May_2016_Berlin</a></div>
<br />
Of course there will be an interesting line-up of demo sessions and hopefully many other Eclipse users and makers to talk to.<br />
<br />
I'll be showing how to install preconfigured Eclipse IDEs and how to quickly customize them to your specific needs with Oomph's Eclipse Installer.<br />
<br />
If you happen to be in Berlin and have time, this would be a good opportunity to meet the directors of the Eclipse Foundation, <a href="https://www.linkedin.com/in/mikemilinkovich?authType=NAME_SEARCH&authToken=SPhw&locale=en_US&srchid=19493421462873789234&srchindex=1&srchtotal=5&trk=vsrp_people_res_name&trkInfo=VSRPsearchId%3A19493421462873789234%2CVSRPtargetId%3A149493872%2CVSRPcmpt%3Aprimary%2CVSRPnm%3Atrue%2CauthType%3ANAME_SEARCH" target="_blank">Mike</a> and <a href="https://www.xing.com/profile/Ralph_Mueller6" target="_blank">Ralph</a>,<br />
<br />
In any case, please help us to make this a great event by spreading the word to your friends and colleagues in or near Berlin!Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-86622425353099340752015-10-07T18:51:00.000+02:002015-10-08T12:26:48.824+02:00CDO 4.4.1 Is Available: New User Interface and DocumentationThe new CDO Explorer with its new user interface was already released with Mars in June 2015 and I've already blogged about it: <a href="http://thegordian.blogspot.de/2015/04/collaborative-modeling-with-papyrus-and.html" target="_blank">Collaborative Modeling with Papyrus and CDO (Reloaded)</a><br />
<br />
Now with CDO 4.4.1 the <a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20150916-0434/help/index.html" target="_blank">documentation</a> has been augmented with a beautiful <a href="http://help.eclipse.org/mars/topic/org.eclipse.emf.cdo.doc/html/users/index.html?cp=13_1" target="_blank">User's Guide</a> and an extensive <a href="http://help.eclipse.org/mars/topic/org.eclipse.emf.cdo.doc/html/operators/index.html?cp=13_2" target="_blank">Operator's Guide</a>.<br />
<br />
Please browse the <a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20150916-0434/relnotes.html" target="_blank">release notes</a> to see what else has changed.<br />
<br />
Again, special thanks go to CEA for generously funding the following:<br />
<ul>
<li>Branching and interactive merging</li>
<li>Support for offline checkouts</li>
<li>Interactive conflict resolution</li>
<li>Documentation</li>
</ul>
<div>
<a href="https://www.eclipse.org/cdo/downloads/#R20150916_0434" target="_blank">Download</a> CDO 4.4.1 and enjoy the best CDO ever!</div>
Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com2tag:blogger.com,1999:blog-824652428103224164.post-17388125541775660262015-07-23T20:36:00.001+02:002015-07-23T20:38:32.688+02:00A Good Thread PoolThe <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/package-summary.html" target="_blank">java.uti.concurrency</a> package comes with a whole bunch of classes that can be extremely useful in concurrent Java applications. This article is about the <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html" target="_blank">ThreadPoolExecutor</a> class, how it behaved unexpectedly for me and what I did to make it do what I want.<br />
<br />
As the name suggests a thread pool is an <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html" target="_blank">Executor</a> in Java. It's even an <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html" target="_blank">ExecutorService</a> but that's irrelevant for the understanding of the fundamental behavior. The only important operational method of a thread pool is <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executor.html#execute-java.lang.Runnable-" target="_blank">void execute(Runnable task)</a>. You pass in your task and the pool will eventually execute it on one of its worker threads. A thread pool is made up of the following components:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0pUfUmZVxT-lxAjk110mfMUPEQYveLAl6PtV5-KwGyYErXD9iSUpik7oKM-SGtS9MjDiOHeTD4OSOa8wSdXlhpxLpK5_Wstq89W6GWjTS2pT-8KyYTjifinkyfd2iximM3qmZQxJXmlI/s1600/ThreadPool1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0pUfUmZVxT-lxAjk110mfMUPEQYveLAl6PtV5-KwGyYErXD9iSUpik7oKM-SGtS9MjDiOHeTD4OSOa8wSdXlhpxLpK5_Wstq89W6GWjTS2pT-8KyYTjifinkyfd2iximM3qmZQxJXmlI/s320/ThreadPool1.png" width="305" /></a></div>
<br />
<div class="separator" style="clear: both;">
When you create a thread pool you must pass in a <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html" target="_blank">BlockingQueue<runnable></runnable></a> instance that will become the work queue of the thread pool. You can optionally pass in a <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadFactory.html" target="_blank">thread factory</a> and a <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/RejectedExecutionHandler.html" target="_blank">rejection handler</a>. You cannot control the implementation class of the internal worker pool but you can influence it's behavior with the following important parameters:</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
</div>
<ol>
<li>The <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html#setCorePoolSize-int-" target="_blank">corePoolSize</a> defines kind of a minimum number of worker threads to keep in the internal worker pool. The reason it's not called minPoolSize is probably that directly after the creation of the thread pool the internal worker pool starts with zero worker threads. Initial workers are then created as needed but they're only ever removed from the worker pool if there are more of them than corePoolSize.</li>
<li>The <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html#setMaximumPoolSize-int-" target="_blank">maxPoolSize</a> defines a strict upper bound for the number of work threads in the internal worker pool.</li>
<li>The <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ThreadPoolExecutor.html#setKeepAliveTime-long-java.util.concurrent.TimeUnit-" target="_blank">keepAliveTime</a> defines the time that an idle worker thread may stay in the internal worker pool if there are more than corePoolSize workers in the pool.</li>
</ol>
<br />
<div class="separator" style="clear: both;">
The Javadoc of the ThreadPoolExecutor class recommends to use the <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newCachedThreadPool--" target="_blank">Executors.newCachedThreadPool()</a> factory method to create a thread pool. The result is an unbounded thread pool with automatic thread reclamation. A look at the code of the factory method reveals that corePoolSize=0 and maxPoolSize=Integer.MAX_VALUE. The work queue is a <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/SynchronousQueue.html" target="_blank">SynchronousQueue</a>, which has no internal capacity; it basically functions as a direct pipe to the next idle or newly created worker thread.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
When you hammer this thread pool with lots of tasks the work queue will never grow; tasks will never be rejected because the worker pool is unbounded. Your JVM will soon become unresponsive because the pool will create thousands of worker threads!</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
What I really wanted is a thread pool with, let's say, maxPoolSize=100 and a work queue that temporarily keeps all the tasks that are scheduled while all of the 100 threads are busy. So I instantiated a ThreadPoolExecutor directly (without the recommended factory method), passed in corePoolSize=10, maxPoolSize=100, and a <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/LinkedBlockingQueue.html" target="_blank">LinkedBlockingQueue</a> to be used as the work queue. And here comes the big surprise: This thread pool never creates more than corePoolSize worker threads! Instead the work queue will grow and grow and grow. The tasks in it will always compete for the 10 core workers. Why is that?</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
To understand you need to know how the execute() method works. Of course it's all Javadoc'ed, but that doesn't mean it's expectation-compliant (well, I know that expectations can be subjective). The following flow diagram illustrates what the execute() method does:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcXIi-0_Jakv4Z6brKC73jTfBZW53PtNVbZnTfsIs9jWGS0sSxJYfvBfB6WR4cGqoH-Li9VsdfKWKdQniwhmz-nterv0E0rj8MMTxe-ywTB7Q0tHCzhq5GlHyK6Kk3u-QyaaAzR1JqXU4/s1600/ThreadPool2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcXIi-0_Jakv4Z6brKC73jTfBZW53PtNVbZnTfsIs9jWGS0sSxJYfvBfB6WR4cGqoH-Li9VsdfKWKdQniwhmz-nterv0E0rj8MMTxe-ywTB7Q0tHCzhq5GlHyK6Kk3u-QyaaAzR1JqXU4/s640/ThreadPool2.png" width="329" /></a></div>
<br />
There are only three different outcomes, the task can be enqueued in the work queue, a new worker thread can be created, or the task can be rejected. Three conditions are checked to determine the outcome at a specific point in time. The first condition is only relevant in the warm-up phase of the pool, but then it becomes interesting:<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;"><b>enqueue is always preferred over newWorker!</b></span></div>
<br />
That means that, with an unbounded work queue, no more than corePoolSize workers will ever be created; maxPoolSize becomes completely irrelevant. Now we have seen one pool configuration that only ever creates new workers (the default) and one that only ever enqueues tasks. Between these two evils is probably the a thread pool with both a bounded worker pool and a bounded work queue, but obviously such a thread pool will reject tasks when hammered enough.<br />
<br />
That's all not what I wanted, but wait:<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;"><b>I control the work queue implementation!</b></span></div>
<div>
<span style="font-size: large;"><b><br /></b></span></div>
Peeking again at the code of the execute() method shows that the only interaction between the thread pool and the work queue here is the call workQueue.offer(task) and per contract this method returns whether it accepted the offer or not. So, the simple solution to my problem is a BlockingQueue implementation with an offer() method overridden to accept the offered task only if the worker pool contains less than maxPoolSize threads.<br />
<br />
Subclassing LinkedBlockingQueue would do <b>that</b> trick but there's a small problem remaining now: The three conditions (see above) are checked in the execute() method of the thread pool without any synchronization. That means, if my work queue does <b>not</b> accept a task because there are still less than maxPoolSize workers allocated the third condition is not necessarily true a nanosecond later. The task would be completely rejected from the pool rather than be enqueued. The solution to this problem is a custom <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/RejectedExecutionHandler.html" target="_blank">rejection handler</a> that takes the rejected task and puts it back at the beginning of the work queue. And now it becomes clear why subclassing <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/LinkedBlockingDeque.html" target="_blank">LinkedBlockingDequeue</a> is a better alternative: It provides the needed <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/LinkedBlockingDeque.html#addFirst-E-" target="_blank">addFirst(Runnable task)</a> method.<br />
<br />
If you try to implement these ideas you'll likely discover a few technical complications, such as the LinkedBlockingDeque class not being available in Java 1.5. If you're interested in my concrete solution please have a look at the <a href="http://git.eclipse.org/c/cdo/cdo.git/tree/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/concurrent/ThreadPool.java" style="font-weight: bold;" target="_blank">source code</a> of my <i>good thread pool</i>. Enjoy...<br />
<br />Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com2tag:blogger.com,1999:blog-824652428103224164.post-43594912392728183812015-06-21T09:05:00.000+02:002015-06-21T10:09:54.624+02:00Oomph Workshop: Eclipse the Way You Want ItOur <a href="https://www.eclipsecon.org/france2015/session/oomph-eclipse-way-you-want-it" target="_blank">Oomph Workshop at EclipseCon France</a> is next Wednesday morning and Ed and I hope to see you there. We'll not only show you how to use Oomph's Eclipse Installer to provision ready-to-use IDEs and workspaces, we'll also teach you how to create setups for your own projects:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/a3h76AQQKN0/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/a3h76AQQKN0?feature=player_embedded" width="320"></iframe></div>
<br />
<div style="text-align: center;">
By submitting a functional setup for an Eclipse project<br />
<b>every </b>EclipseCon participant can</div>
<br />
<div style="text-align: center;">
<b><span style="font-size: x-large;"><a href="https://www.eclipsecon.org/france2015/news/take-oomph-configuration-challenge-and-win-drone-ed-merks-and-eike-stepper" target="_blank">Win a Spider Parrot Drone</a> </span></b></div>
<br />
<br />
All you need is an Eclipse IDE with <a href="https://wiki.eclipse.org/Eclipse_Installer" target="_blank">Oomph</a> and our <a href="https://wiki.eclipse.org/Eclipse_Oomph_Authoring" target="_blank">Author's Guide</a>.<br />
<br />
The challenge, of course, becomes easier if you attend our workshop. If you plan to do so, please download the following zip file and unzip it to an <b>empty</b> folder on your local disk:<br />
<br />
<div style="text-align: center;">
<a href="https://docs.google.com/uc?id=0B1eF-LVpNNJCS200MFp5Y2JHaTA&export=download"><b><span style="font-size: large;">oomph-workshop.zip</span></b></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXIt73x1RW96vd7BotSflM52rrl00XoWbRfBWcsykhAhgJF7sAG1Zj6HXleEm1tgPXX-_XJ2GBG3v1eAFpHjKcKPIJn5oIDenEEhJHLBXruuE8s0OEDR9px7EEPsIM7QX2cewnu1B5mvI/s1600/oomph-zip.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXIt73x1RW96vd7BotSflM52rrl00XoWbRfBWcsykhAhgJF7sAG1Zj6HXleEm1tgPXX-_XJ2GBG3v1eAFpHjKcKPIJn5oIDenEEhJHLBXruuE8s0OEDR9px7EEPsIM7QX2cewnu1B5mvI/s1600/oomph-zip.png" /></a></div>
<br />
The zip file is giant (2.5 GB) because we've designed it to allow you to exercise the tutorial without network access, i.e., it includes some mirrors of p2 and Git repositories, as well as preconfigured installer executables for all platforms. To bootstrap the tutorial IDE follow these simple steps:<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<ol>
<li><span style="background-color: white;">Go to the "<span style="font-family: inherit;">installers" </span>folder and launch the installer for your platform. If you are on Linux, please "<span style="font-family: inherit;">chmod +x"</span> your installer binary first!</span><br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkNaKmQbT9j4cxAHWe4tV1mSqkmnivQJRjoTuwvd7uKmhWNY5jehGWLL1moVq5ZBCSGNpWElsa4hKJutY8qiBm5q2VO0e0U-GYAuubU-wBSsYbWxTHdS-631UBuj7W8QsOrZQZwvHOkP4/s1600/installers.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkNaKmQbT9j4cxAHWe4tV1mSqkmnivQJRjoTuwvd7uKmhWNY5jehGWLL1moVq5ZBCSGNpWElsa4hKJutY8qiBm5q2VO0e0U-GYAuubU-wBSsYbWxTHdS-631UBuj7W8QsOrZQZwvHOkP4/s1600/installers.PNG" /></a></li>
<li>If you run the installer the first time ever it might come up in simple mode. In this case please switch it to advanced mode:<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim9zX1orY7BzZI8WpmlO3OvhZvVk9DTntheATTEgOueKpGLDB6ZzpN_1oVXTzAXGB11SSUIh4XakvneGwHqWL0BnWAzy_tuhQiXRLLInHY8kJEfN4czq9z6t0CL6HnHVmvbgsTKkUjI8U/s1600/simple-installer.PNG" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="212" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEim9zX1orY7BzZI8WpmlO3OvhZvVk9DTntheATTEgOueKpGLDB6ZzpN_1oVXTzAXGB11SSUIh4XakvneGwHqWL0BnWAzy_tuhQiXRLLInHY8kJEfN4czq9z6t0CL6HnHVmvbgsTKkUjI8U/s320/simple-installer.PNG" width="320" /></a></li>
<li>In the advanced mode pick the "Eclipse IDE for Eclipse Committers" product and select the "Mars" version and click Next:<br /><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNT8et59wF24d3EepV2cPGj2CsQY_F8JfxeEWx6vKjTjTyNXSryB1UcshkKy8S-FhM4RVTBLNMQJem2KnyftjDrp8ES5A5VSldKkIDN9JuFWXlbjDU0RMx1nl8Yo890o-sXI3dV68KlMY/s1600/advanced-product.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="273" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNT8et59wF24d3EepV2cPGj2CsQY_F8JfxeEWx6vKjTjTyNXSryB1UcshkKy8S-FhM4RVTBLNMQJem2KnyftjDrp8ES5A5VSldKkIDN9JuFWXlbjDU0RMx1nl8Yo890o-sXI3dV68KlMY/s320/advanced-product.PNG" width="320" /></a><br /> </li>
<li><div class="separator" style="clear: both; text-align: left;">
On the second installer page double-click the "Oomph Tutorial" project and verify that it's been added to the table at the bottom:</div>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioeWoRY2bdpZVTtpTPswospVqjl_-kRDG-4pVvp7SaIWccKB8aq6pQopSlpfYzM2jzRmmsI0eZAtrOOoT0BFAv2VKvU7viQHSPYLNHhN5LPRlPkJxkGl5l-UQ8bfbdHzfyceFzbOqSs4c/s1600/advanced-project.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEioeWoRY2bdpZVTtpTPswospVqjl_-kRDG-4pVvp7SaIWccKB8aq6pQopSlpfYzM2jzRmmsI0eZAtrOOoT0BFAv2VKvU7viQHSPYLNHhN5LPRlPkJxkGl5l-UQ8bfbdHzfyceFzbOqSs4c/s320/advanced-project.PNG" width="320" /></a><br /><br />
</li>
<li><div class="separator" style="clear: both; text-align: center;">
</div>
<div class="" style="clear: both; text-align: left;">
Confirm all following installer pages with Next or Finish. The tutorial IDE will be installed and started:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEImrCGOKachUmQaM-thO1bxeo4niNdEEiPGtIFVArcJ_ae4jwPN3Ey_qugfBrvzQS0UAKqZEWs2U10RKm3G-dutsY92DH-y_g4r2aC70-tYi_B3Q1eyC6PnAle7KU-EoTERr38lyqT3c/s1600/eclipse.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEImrCGOKachUmQaM-thO1bxeo4niNdEEiPGtIFVArcJ_ae4jwPN3Ey_qugfBrvzQS0UAKqZEWs2U10RKm3G-dutsY92DH-y_g4r2aC70-tYi_B3Q1eyC6PnAle7KU-EoTERr38lyqT3c/s320/eclipse.PNG" width="320" /></a></div>
</li>
</ol>
Now you're ready to participate. We're looking forward to meeting you in Toulouse!<br />
<div>
<br /></div>
Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com2tag:blogger.com,1999:blog-824652428103224164.post-72908794624682850202015-04-28T20:35:00.000+02:002015-04-28T20:35:46.849+02:00Collaborative Modeling with Papyrus and CDO (Reloaded)Since the beginning of this year I've been working on fundamental improvements to the user interface of CDO and its integration with Papyrus. In particular CEA has generously funded the following:<br />
<ul>
<li>Branching and interactive merging</li>
<li>Support for offline checkouts</li>
<li>Interactive conflict resolution</li>
</ul>
<div>
Most of the new functionality has been implemented directly in CDO and is available for other modeling tools, too. Please enjoy a brief tour of what's in the pipe for the Mars release:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/iU21I4-ZxiQ/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/iU21I4-ZxiQ?feature=player_embedded" width="320"></iframe></div>
<br />
The following screencast shows how Papyrus will integrate with this new CDO user interface:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/HzxxXGYcrhg/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/HzxxXGYcrhg?feature=player_embedded" width="320"></iframe></div>
<br /></div>
<div>
I hope you like the new concepts and workflows. Feedback is welcome, of course. And I'd like to thank CEA, Kenn Hussey and Christian Damus for their help to make this happen!</div>
Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com1tag:blogger.com,1999:blog-824652428103224164.post-29374116886780444412014-12-12T11:42:00.000+01:002014-12-12T11:44:55.960+01:00Oomph 1.0.0 is Available<p style="font-family: Arial, Helvetica, sans-serif;">
I'm very happy and a little proud to announce the very first release of Eclipse <a href="https://wiki.eclipse.org/Eclipse_Oomph_Installer" target="_blank">Oomph</a>.
The new installers are now available for your platform:
</p>
<p style="font-family: Arial, Helvetica, sans-serif;">
<ul>
<li><b>Download for <a href="http://www.eclipse.org/downloads/download.php?file=/oomph/products/org.eclipse.oomph.setup.installer.product-win32.win32.x86_64.zip" target="_blank">Windows 64 bit</a></b></li>
<li><b>Download for <a href="http://www.eclipse.org/downloads/download.php?file=/oomph/products/org.eclipse.oomph.setup.installer.product-win32.win32.x86.zip" target="_blank">Windows 32 bit</a></b></li>
<li><b>Download for <a href="http://www.eclipse.org/downloads/download.php?file=/oomph/products/org.eclipse.oomph.setup.installer.product-macosx.cocoa.x86_64.tar.gz" target="_blank">Mac OS 64 bit</a></b></li>
<li><b>Download for <a href="http://www.eclipse.org/downloads/download.php?file=/oomph/products/org.eclipse.oomph.setup.installer.product-linux.gtk.x86_64.zip" target="_blank">Linux 64 bit</a></b></li>
<li><b>Download for <a href="http://www.eclipse.org/downloads/download.php?file=/oomph/products/org.eclipse.oomph.setup.installer.product-linux.gtk.x86.zip" target="_blank">Linux 32 bit</a></b></li>
</ul>
</p>
<p style="font-family: Arial, Helvetica, sans-serif;">
You can also install Oomph into an existing IDE via the <a href="http://download.eclipse.org/oomph/updates/latest" target="_blank">update site</a> or the <a href="http://www.eclipse.org/downloads/download.php?file=/oomph/updates/latest/org.eclipse.oomph.site.zip" target="_blank">site archive</a>.
Our <a href="http://download.eclipse.org/oomph/help" target="_blank">help center</a> is still work in progress but you may already find answers to your questions there.
Our <a href="https://wiki.eclipse.org/Eclipse_Oomph_Installer" target="_blank">wiki</a> may provide additional information.
</p>
<p style="font-family: Arial, Helvetica, sans-serif;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkKKAXHmyVvmczr7i1wPup-xAF4Pvw8WSLvuU5HNYRGd5hZmAabrCN8FBbrf2P0LnQeLIpldGzZd3ArjRv7rqClxVdrfQuzNEdRLj3iCdFM_WWLPKlw_vr85OWfxmJF02Dadpfi_GHdVI/s1600/R1_0_0.png" imageanchor="1"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkKKAXHmyVvmczr7i1wPup-xAF4Pvw8WSLvuU5HNYRGd5hZmAabrCN8FBbrf2P0LnQeLIpldGzZd3ArjRv7rqClxVdrfQuzNEdRLj3iCdFM_WWLPKlw_vr85OWfxmJF02Dadpfi_GHdVI/s400/R1_0_0.png" height="376" width="400" /></a>
</p>
<p style="font-family: Arial, Helvetica, sans-serif;">
This <a href="https://projects.eclipse.org/projects/tools.oomph/releases/1.0.0" target="_blank">1.0.0 release</a> includes:
</p>
<p style="font-family: Arial, Helvetica, sans-serif;">
<ul>
<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=enhancement&classification=Tools&list_id=10654554&product=Oomph&query_format=advanced&resolution=FIXED&version=1.0.0" target="_blank">106 enhancements</a></li>
<li><a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial&classification=Tools&list_id=10654593&product=Oomph&query_format=advanced&resolution=FIXED&version=1.0.0" target="_blank">218 bug fixes</a></li>
</ul>
</p>
<p style="font-family: Arial, Helvetica, sans-serif;">
I'd like to thank our committers, especially my friend <a href="http://ed-merks.blogspot.de/" target="_blank">Ed Merks</a>, our contributors and early users for their great contributions, valuable feedback, and concise bug reports. Working with you has been and will continue to be an absolutely pleasant and rewarding experience for me.
</p>Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com2tag:blogger.com,1999:blog-824652428103224164.post-42649512468112713012014-12-09T15:31:00.000+01:002014-12-09T15:38:02.342+01:00When You Change a Method Return Type...... strange effects can result under certain circumstances! Recently some <a href="http://wiki.eclipse.org/Eclipse_Oomph_Installer" target="_blank">Oomph</a> users <a href="http://bugs.eclipse.org/453513" target="_blank">reported</a> mysterious NoSuchMethodErrors at runtime and I spent quite some time to hunt down the problem. What I found is kind of scary. Consider the following, simple program:<br />
<br />
<span style="color: blue; font-family: Courier New, Courier, monospace;"><b> public class Util</b></span><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">{</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> public static void run()</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> {</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> // Run it...</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> }</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">}</span></span></b><br />
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"><b><br /></b></span></div>
<div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">public class Main</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">{</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> public static void main(String[] args)</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> {</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> Util.run();</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> }</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">}</span></span></b></div>
</div>
<div>
<br /></div>
The bytecode of the compiled main() method is as simple as:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;"><b> <span style="color: blue;">invokestatic Util/run()</span><span style="color: red;">V</span></b></span><br />
<span style="color: blue; font-family: Courier New, Courier, monospace;"><b> return</b></span><br />
<br />
Notice the uppercase "V" at the end of the run() method call. It indicates that the return type of the called run() method is "void" and <b>is part of the bytecode of the caller</b>! Now change the declaration of the called run() method to return a boolean value:<br />
<br />
<span style="color: blue; font-family: Courier New, Courier, monospace;"><b> public class Util</b></span><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">{</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> public static boolean run()</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> {</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> // Run it...</span></span></b><br />
<b><span style="color: blue; font-family: Courier New, Courier, monospace;"> return true;</span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> }</span></span></b><br />
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">}</span></span></b><br />
<div>
<span style="color: blue; font-family: Courier New, Courier, monospace;"><b><br /></b></span></div>
<div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">public class Main</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">{</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> public static void main(String[] args)</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> {</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> Util.run();</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;"> }</span></span></b></div>
<div>
<b><span style="color: blue;"><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: 'Courier New', Courier, monospace;"> </span><span style="font-family: Courier New, Courier, monospace;">}</span></span></b></div>
</div>
<div>
<b><span style="font-family: Courier New, Courier, monospace;"><br /></span></b></div>
Recompile both classes and look at the bytecode of the main() method again:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;"><b> <span style="color: blue;">invokestatic Util/run()</span><span style="color: red;">Z</span></b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><b> <span style="color: blue;"> pop</span></b></span><br />
<span style="color: blue; font-family: Courier New, Courier, monospace;"><b> return</b></span><br />
<br />
Notice that the bytecode has changed even though the source code of the Main class has not changed the least bit. The old run() method with no return type would not be considered a valid call target anymore!<br />
<br />
Interesting, but when can this become a real problem?<br />
<br />
Well, in our case the calling and the called method are in different OSGi plugins and we use Maven/<a href="http://eclipse.org/tycho/" target="_blank">Tycho</a> to build them and our Oomph users use <a href="http://www.eclipse.org/equinox/p2" target="_blank">p2</a> to install or update them. The following steps turned out to be tragic:<br />
<br />
<ul>
<li>I changed the return type of the called method from void to boolean.</li>
<li>Maven/Tycho has built both the calling and the called plugin.</li>
<ul>
<li>The called plugin got a new version (build qualifier) because it was really changed.</li>
<li>The calling plugin did <b>not </b>get a different version because its source code wasn't changed.</li>
</ul>
<li>A user updated his Oomph installation to the new build.</li>
<ul>
<li>The called plugin was updated because a new version was found.</li>
<li>The calling plugin was <b>not </b>updated because there was no new version available. To be clear, there was a plugin with different content in the new build, but it had the same version as in the previous build.</li>
</ul>
</ul>
As a result this user was faced with an evil exception at runtime:<br />
<br />
<div>
<b style="color: blue; font-family: 'Courier New', Courier, monospace;"> </b><span style="font-family: Courier New, Courier, monospace;"><b><span style="color: blue;">java.lang.NoSuchMethodError: Util.run()</span><span style="color: red;">V</span></b></span>
</div>
<br />
Now that I know why this happened I can easily fix the nasty problem by applying a fake change to the calling plugin's source code to cause Tycho to assign a new version number to it; one that is consistent with the bytecode of the called plugin.
<br />
<br />
The fact that this can happen so easily leaves me kind of scared. After all, I'll probably never ever try to change a method return type again.Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com5tag:blogger.com,1999:blog-824652428103224164.post-84327493023155089662014-11-03T17:36:00.000+01:002014-11-03T17:36:53.970+01:00Better Late Than NeverI wanted to remind you about the <a href="https://www.eclipsecon.org/na2015/cfp?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+eclipse%2Ffnews+%28Eclipse+Foundation+News%29" target="_blank">Call for Papers</a> for the <a href="https://www.eclipsecon.org/na2015/" target="_blank">EclipseCon North America 2015</a> earlier, but the EclipseCon Europe, which just ended, has kept me too busy.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaNfsNZnqX-4nrt_e2x0tK_tdLKHV9X5StenPFIqFvEni2I43VFV5fk03M-wDWaz24W0IG-Id6wQ2743X5tZxyRQS0JtsGjRfItWiemrY7xhv3JiZowp6AePwuaPq7eZrnkK_8qNXxB40/s1600/SpeakerPitches.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaNfsNZnqX-4nrt_e2x0tK_tdLKHV9X5StenPFIqFvEni2I43VFV5fk03M-wDWaz24W0IG-Id6wQ2743X5tZxyRQS0JtsGjRfItWiemrY7xhv3JiZowp6AePwuaPq7eZrnkK_8qNXxB40/s1600/SpeakerPitches.jpg" height="325" width="400" /></a></div>
<br />
For San Francisco in March 2015 I hope that we can put together an interesting and funny program, too. And we need <a href="https://www.eclipsecon.org/na2015/cfp?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+eclipse%2Ffnews+%28Eclipse+Foundation+News%29" target="_blank"><b>your help</b></a> to make that possible. There are still two weeks left to submit your proposal.<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">If you <a href="https://www.eclipsecon.org/na2015/cfp?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+eclipse%2Ffnews+%28Eclipse+Foundation+News%29" target="_blank"><b>submit </b></a><b><a href="https://www.eclipsecon.org/na2015/cfp?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+eclipse%2Ffnews+%28Eclipse+Foundation+News%29" target="_blank">now</a> </b>your proposal has the chance to be among the early bird picks!</span></div>
Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-45992125673673238452013-06-26T20:03:00.000+02:002013-06-27T07:17:36.587+02:00CDO 4.2 is AvailableThe CDO Model Repository 4.2 release is now available, aligning with the Eclipse Kepler Simultaneous Release. CDO is featured in the Eclipse Modeling package. <br />
<ul>
<li><a href="http://www.eclipse.org/cdo/downloads" target="_blank">Download CDO 4.2</a> and other components of this release</li>
<li>Check out the <a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20130613-1157/relnotes.html" target="_blank">Release Notes</a></li>
<li>Check out the <a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20130613-1157/api.html" target="_blank">API Evolution Report</a></li>
<li>Read the <a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20130613-1157/help/index.html" target="_blank">Documentation</a></li>
<li>Get help or ask questions in the EMF <a href="http://eclipse.org/forums/eclipse.tools.emf" target="_blank">forum</a> or <a href="news://news.eclipse.org:119/eclipse.tools.emf" target="_blank">newsgroup</a></li>
</ul>
<br />
CDO 4.2 was officially released on June 26th, 2013. Thanks to everyone who helped to make this release the best CDO ever!<br />
<br />Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-53424723046793103912013-05-15T07:08:00.000+02:002013-05-15T07:11:43.829+02:00Thank You Google!<br />Yesterday I <a href="http://thegordian.blogspot.de/2013/05/still-using-java-15.html">asked</a> you to vote for the JRE that you're using in production to get an impression whether we need to keep support for Java 1.5. The participation was very good, there were 45 votes in the first two hours. The majority of the voters is using Java 1.7, a second majority is using Java 1.6, <b>almost</b> noone is using Java 1.5, noone is using Java 1.4 or 1.8.<br />
<br />
Then, all of a sudden, I realized a <b>decrease</b> in total votes. First they dropped down to 19, now they're at 10. The problem of disappearing votes is <a href="https://productforums.google.com/forum/?fromgroups=#!topic/blogger/j-T8pHkMMZ8" target="_blank">known</a> for almost a year. Thank you Google, a warning note on the poll gadget would have been nice!<br />
<br />
Here's a replacement that hopefully works better:<br />
<br />
<form method="post" action="http://poll.pollcode.com/6dq2d"><table border="0" width="200" cellspacing="2" cellpadding="0"><tr><td colspan="2"><font face="Verdana" size="2" color="000000"><b>What JRE Are You Using?</b></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="1" id="6dq2danswer1"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer1">Java 1.4</label></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="2" id="6dq2danswer2"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer2">Java 1.5</label></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="3" id="6dq2danswer3"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer3">Java 1.6</label></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="4" id="6dq2danswer4"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer4">Java 1.7</label></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="5" id="6dq2danswer5"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer5">Java 1.8</label></font></td></tr><tr><td colspan=2><input type="submit" value=" Vote "> <input type="submit" name="view" value=" View "></td></tr></table></form>
Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-84004340127330465392013-05-14T10:30:00.001+02:002013-05-15T07:11:55.375+02:00Still Using Java 1.5?Traditionally most Eclipse plugins declare a Java 1.5 compatibility in their bundle manifests:<br />
<br />
<div style="text-align: center;">
<b><span style="font-family: "Courier New",Courier,monospace;"><span style="color: #660000;">Bundle-RequiredExecutionEnvironment</span>: J2SE-1.5</span></b></div>
<br />
And so does <a href="http://www.eclipse.org/cdo" target="_blank">CDO</a>. Now it seems that newer versions of some JDBC drivers (e.g. HSQLDB) start to depend on Java 1.6 and, unfortunately, the JDBC API of Java 1.6 is not compatible with its 1.5 pendant.<br />
<br />
We're currently discussing how to deal with this problem and we're very interested in your opinion. Please participate in this small poll to give us an impression on whether Java 1.5 support is still needed:<br />
<br />
<form method="post" action="http://poll.pollcode.com/6dq2d"><table border="0" width="200" cellspacing="2" cellpadding="0"><tr><td colspan="2"><font face="Verdana" size="2" color="000000"><b>What JRE Are You Using?</b></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="1" id="6dq2danswer1"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer1">Java 1.4</label></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="2" id="6dq2danswer2"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer2">Java 1.5</label></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="3" id="6dq2danswer3"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer3">Java 1.6</label></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="4" id="6dq2danswer4"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer4">Java 1.7</label></font></td></tr><tr><td width="5"><input type="checkbox" name="answer" value="5" id="6dq2danswer5"></td><td><font face="Verdana" size="2" color="000000"><label for="6dq2danswer5">Java 1.8</label></font></td></tr><tr><td colspan=2><input type="submit" value=" Vote "> <input type="submit" name="view" value=" View "></td></tr></table></form>
Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com3tag:blogger.com,1999:blog-824652428103224164.post-41304017727756865792013-05-04T10:13:00.001+02:002015-07-24T11:47:56.515+02:00Copyright Headers from the Git HistoryThe other day Vincent Zurczak has blogged about <a href="http://vzurczak.wordpress.com/2013/04/30/updating-copyright-mentions-with-eclipse" target="_blank">Updating Copyright Mentions with Eclipse</a> and his way of maintaining legal headers in software artifacts is very similar to what we've always done in <a href="http://www.eclipse.org/cdo" target="_blank">CDO</a>. We had the exact same header in all artifacts and we used search and replace once per year to update them all. For us that has several disadvantages:<br />
<ol>
<li>Most importantly that means to modify files that have no other (real) changes in that year.</li>
<li>It was hard to find the files with missing legal headers.</li>
<li>It was hard (well, mostly because I wasn't smart enough) to have different copyright owners.</li>
</ol>
What I always envisioned was a tool that identifies files that could or should have legal headers, consults the Git history for these files and assembles a copyright line as follows:<br />
<br />
<div style="text-align: center;">
<span style="font-size: small;"><b><span style="font-family: "Courier New",Courier,monospace;">Copyright (c) 2008, 2009, 2011-2013 <i>Owner</i> and others.</span></b></span></div>
<br />
Yesterday I've finally finished this tool:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9S1G5kkcFYKFz35AbY0O9QO-hs8aFW_0v_ZMALaPUDh2tAcgfq7lMXD8Ov4eG0csH7GIL5jsq0r3hXMfejI8klIY6GxOT5dec_YqNjMf9CAh8zqTtSVkGFtVCeQ_HRX2uXd9wPTnwfog/s1600/Copyrights.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9S1G5kkcFYKFz35AbY0O9QO-hs8aFW_0v_ZMALaPUDh2tAcgfq7lMXD8Ov4eG0csH7GIL5jsq0r3hXMfejI8klIY6GxOT5dec_YqNjMf9CAh8zqTtSVkGFtVCeQ_HRX2uXd9wPTnwfog/s400/Copyrights.png" width="400" /></a></div>
<br />
<br />
A simple <i>Check Copyrights</i> for missing copyrights ends with:<br />
<br />
<div style="text-align: center;">
<span style="font-size: small;"><b><span style="font-family: "Courier New",Courier,monospace;">Copyrights missing: 0<br />Copyrights rewritten: 0<br />Files visited: 22722<br />Time needed: 5.73 seconds</span></b></span></div>
<br />
If there are copyrights missing the tool produces a list of the paths and can optionally open them in editors. The <i>Update Copyrights</i> action takes approx. 35 minutes on the same working tree and results in files with beautiful legal headers that are totally in line with the Git history.<br />
<br />
If you are interested in the code have a look at <a href="http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/tree/plugins/org.eclipse.oomph.gitbash/src/org/eclipse/oomph/gitbash/repository/UpdateCopyrightsAction.java" target="_blank">UpdateCopyrightsAction.java</a>. There are just a few places that are CDO-specific and I would be happy to review your patches to make the tool more flexible.Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com1tag:blogger.com,1999:blog-824652428103224164.post-36685755429335577022013-04-22T13:15:00.000+02:002013-04-23T19:31:51.053+02:00Join the Eclipse Modeling Day at JAX 2013<a href="http://ed-merks.blogspot.de/" target="_blank">Ed</a> and I have organized and will moderate this year's <a href="http://jax.de/2013/sessions/?tid=2971" target="_blank">Eclipse Modeling Day</a> at the <a href="http://jax.de/2013" target="_blank">JAX</a> conference in Mainz. We've put together a nice and broad program for you and we'd be happy to see you in the Gutenbergsaal 2 on<br />
<br />
<div style="text-align: center;">
<span style="font-size: large;">Friday, March 26, 2013 at 9:00 o'clock.</span></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmD_WEgkicIVqxQ21gH06bX4W4RTIPVveJJ3wj-ScZdWd9Soh-NlC04PmbnnEhFiG2KxJ41OvOF3aIPG9ICQg_pzjje1PB9XG8Cq4_060V16R5wrx_tR59rpzC6UVWT9Did9UUk97CtR8/s1600/IMG_0275.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmD_WEgkicIVqxQ21gH06bX4W4RTIPVveJJ3wj-ScZdWd9Soh-NlC04PmbnnEhFiG2KxJ41OvOF3aIPG9ICQg_pzjje1PB9XG8Cq4_060V16R5wrx_tR59rpzC6UVWT9Did9UUk97CtR8/s400/IMG_0275.JPG" width="307" /></a></div>
<br />
The program is a good mixture of technology talks from Eclipse project leads and experienced industrial users:<br />
<br />
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:RelyOnVML/>
<o:AllowPNG/>
<o:DoNotRelyOnCSS/>
</o:OfficeDocumentSettings>
</xml><![endif]--><br />
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:HyphenationZone>21</w:HyphenationZone>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>DE</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:DontVertAlignCellWithSp/>
<w:DontBreakConstrainedForcedTables/>
<w:DontVertAlignInTxbx/>
<w:Word11KerningPairs/>
<w:CachedColBalance/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Normale Tabelle";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:"Times New Roman";
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<br />
<h1 style="text-align: center;">
<b><span style="color: #365f91; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Slot I</span></span></b></h1>
<h2>
<b><span style="color: #4f81bd; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 13.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Xcore</span></span></b></h2>
<div class="MsoNormal">
<b><span style="font-family: Calibri; font-size: x-small;"><span lang="EN-US" style="font-size: 11.0pt; font-weight: bold; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-language: DE;">Ed Merks - itemis</span></span></b><span lang="EN-US" style="mso-ansi-language: EN-US; mso-fareast-language: DE;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Helvetica; font-size: small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif";">Ecore's success stems from its
power to describe deep semantic structure more concisely than Java. The
downside are the tools. Certainly Ecore's structured editor is simple and
effective and its graphical editor is rich and elegant but both are cumbersome
compared to traditional text-based tools. The Xtext framework beckons with a
solution: a textual syntax for Ecore. Going one step further, we leverage Xbase
to define a concise textual notation for describing behavior and exploit it to
implement constraints, derived features, operations, and data type conversion.
We call this new language Xcore. This presentation will explore Xcore's
capabilities and demonstrate its powerful tools in action.</span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Ed Merks
leads the top-level Eclipse Modeling Project as well as the Eclipse Modeling
Framework subproject. He holds a Ph.D. in Computing Science from Simon Fraser
University and is a partner of itemis AG. </span></span></i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;"></span></span></div>
<h2>
<b><span style="color: #4f81bd; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 13.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">EMF Data Binding</span></span></b></h2>
<div class="MsoNormal">
<b><span style="font-family: Calibri; font-size: x-small;"><span lang="EN-US" style="font-size: 11.0pt; font-weight: bold; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-language: DE;">Tom Schindl - BestSolution.at EDV Systemhaus GmbH</span></span></b></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Helvetica; font-size: small;"><span lang="EN-GB" style="font-family: "Helvetica","sans-serif";">Eclipse data binding provides
developers with a framework to ease the development of user interfaces
following the Model View Presenter (MVP) pattern. In this talk we will look at
the EMF data binding extensions and how to exploit them to create rich and
well-designed user interfaces, not necessarily involving SWT.</span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Tom Schindl
is founder and owner of BestSolution.at, a company located in Western Austria
that is specialized on Java and Eclipse consulting. Tom is committer on various
Eclipse projects and member of the Eclipse Architecture Council.</span></span></i></div>
<h1 style="text-align: center;">
<b><span style="color: #365f91; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Slot II</span></span></b></h1>
<h2>
<b><span style="color: #4f81bd; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 13.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Now that I've Got a Model -
Where's My Application?</span></span></b></h2>
<div class="MsoNormal">
<b><span style="font-family: Calibri; font-size: x-small;"><span lang="EN-US" style="font-size: 11.0pt; font-weight: bold; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-language: DE;">Eike Stepper – ES-Computersysteme</span></span></b></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Helvetica; font-size: small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif";">Models are efficient for
capturing enterprise knowledge at a high level of abstraction, independent of
technical concerns. What about the background threads that are expected to
cooperate nicely with my model? What if real data are magnitudes bigger than
the data I've played with? How do I store this data and broadcast changes to
the other users of my application? Can I prevent multiple users from
accidentally modifying the same object? In this presentation I'll tell you how
best to employ some runtime aspects of Eclipse Modeling to build a scalable,
transactional and distributed application for your modeled data with little
more than a mouse click.</span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<br /></div>
<span style="font-size: x-small;">
</span><br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Eike is an
independent consultant in the areas of OSGi and modeling with over 25 years of experience
in software development. With his consulting company ES-Computersysteme,
founded back in 1991, he conducted dozens of successful customer projects. Eike
is the leader of the CDO Model Repository and Net4j Signalling Platform
projects at Eclipse and a member of the Eclipse Architecture Council. He is
also committer on the EMF Client Platform, EMF DiffMerge and Mylyn projects and
has won the Top Committer Eclipse Comunity Award 2010.</span></span></i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;"></span></span></div>
<h2>
<b><span style="color: #4f81bd; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 13.0pt; line-height: 115%; mso-ansi-language: EN-US;">Building a
tool based on EMF</span></span></b><span lang="EN-US" style="mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;"></span></h2>
<div class="MsoNormal">
<b><span style="font-family: Calibri; font-size: x-small;"><span lang="EN-US" style="font-size: 11.0pt; font-weight: bold; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-language: DE;">Maximilian Koegel - EclipseSource Munich</span></span></b><span lang="EN-US" style="mso-ansi-language: EN-US; mso-fareast-language: DE;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Helvetica; font-size: small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif";">EMF enables the automatic
generation of the entity model for an application. Additional frameworks allow
developers to create a running application including a UI to modify entities as
well as a server to distribute the data. In this talk we demonstrate how the
first version of your own application can be set up in less than one minute,
just by providing your entity model with EMF. Based on the first version, we
demonstrate how to iteratively adapt the first version and add additional, custom
features. For the creation of the UI, we will use the EMF Client Platform and
additional technologies such as databinding. This integrates also with the new
Eclipse 4 Application Plattform. Furthermore, we demonstrate how to create a
basic diagram editor with Graphiti. Finally, we show how to integrate different
server solutions, such as CDO and EMFStore.</span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Maximilian Koegel is General Manager of EclipseSource Munich. He has many years of experience with Eclipse RCP and EMF and works as a consultant to customers in these areas. Also he is project lead of the projects EMFStore and EMF Client Platform and he is a committer in other EMF projects at Eclipse.org.</span></span></i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 7.0pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;"></span></span></div>
<span style="font-family: Calibri; font-size: x-small;"><span lang="EN-US" style="font-family: "Calibri","sans-serif"; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE; mso-hansi-theme-font: minor-latin;">
</span></span>
<br />
<div class="MsoNormal">
</div>
<h1 style="text-align: center;">
<b><span style="color: #365f91; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">
Slot III</span></span></b></h1>
<h2>
<b><span style="color: #4f81bd; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 13.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Model-Driven SOA at Swiss
Mobiliar</span></span></b></h2>
<div class="MsoNormal">
<b><span style="font-family: Calibri; font-size: x-small;"><span style="font-size: 11.0pt; font-weight: bold; line-height: 115%; mso-fareast-language: DE;">Christoph Gutmann,
Michael Rauch – Schweizerische Mobiliar Versicherungsgesellschaft AG</span></span></b></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Helvetica; font-size: small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif";">This talk examines how Swiss
Mobiliar successfully applied Eclipse Modeling technologies to create a
lightweight, technical, design-time SOA infrastructure. It presents our forward-engineering solution
including the use of DSL engineering and repositories, as well as a review of
the types of artifacts we generate.</span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Michael
Rauch works as a Software Architect for Swiss Mobiliar where he is responsible
for the Model-Driven SOA initiative. He works with the Eclipse Modeling
Platform since 2010.</span></span></i></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Christoph
Gutmann is a Software Architect at Swiss Mobiliar. He is responsible for the
SOA and JEE reference architectures, realizes code generation and manageability
of SOA dependencies by model-driven architecture based on a forward engineering
approach</span></span></i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;"></span></span></div>
<h2>
<b><span style="color: #4f81bd; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 13.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Service Repository for
Model-Driven SOA</span></span></b></h2>
<div class="MsoNormal">
<b><span style="font-family: Calibri; font-size: x-small;"><span style="font-size: 11.0pt; font-weight: bold; line-height: 115%; mso-fareast-language: DE;">Thomas Stahl, Stefan
Zeug – b+m Informatik AG </span></span></b></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Helvetica; font-size: small;"><span lang="EN-GB" style="font-family: "Helvetica","sans-serif";">SOA is a specialized domain to
which MDD and domain-specific language technologies can be applied. This talk
explores design principles for a service repository based on a generic model
repository as well as common DSL and generator infrastructure. The Eclipse
Modeling Project offers a rich set of base frameworks that serves our purpose,
though there are challenges in ensuring that they integrate well in the context
of our domain. We will discuss
conceptual and implementation aspects of such a model-based service repository
for Swiss Mobiliar.</span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Dipl.
Inform. Thomas Stahl is Chief Architect at b+m Informatik AG.One maior focus of
his professional life is Model-Driven Software Development (MDSD). Parts of the
Eclipse Modeling Project and the first book on MDSD are results of his
pioneering efforts.<span style="mso-spacerun: yes;"> </span>Furthermore he has
substantial experience in Software- and Enterprise-Architecture,<span style="mso-spacerun: yes;"> </span>modern IT-technologies and several vertical
domains. He can be reached at t.stahl@bmiag.de</span></span></i></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Dipl. Inform/Dipl.
Kfm. Stefan Zeug works as an IT-Architect for 10 years. He is currently leading
the Architecture Team at b+m Informatik AG and has special interests in
MDD-based concept and technologies. He can be reached at stefan.zeug@bmiag.de.</span></span></i></div>
<h1 style="text-align: center;">
<b><span style="color: #365f91; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 14.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Slot IV</span></span></b></h1>
<h2>
<b><span style="color: #4f81bd; font-family: Cambria; font-size: medium;"><span lang="EN-US" style="font-size: 13.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Interface Management in a
Large Enterprise</span></span></b></h2>
<div class="MsoNormal">
<b><span style="font-family: Calibri; font-size: x-small;"><span lang="EN-US" style="font-size: 11.0pt; font-weight: bold; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-language: DE;">Robert Blust – UBS</span></span></b></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Helvetica; font-size: small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif";">Capturing and preserving knowledge of an IT supply chain as models provides
a holistic view of a large and diverse system. UBS’ enterprise model repository
plays a crucial role in our tooling strategy. The talk focuses on our Eclipse-based
tool chain that helps to identify, specify, design, implement and govern the interfaces
between parts of our system.</span></span><span style="font-family: Helvetica; font-size: small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif";"></span></span></div>
<br />
<h2>
<span style="font-size: small;">
</span><b style="mso-ansi-font-weight: normal; mso-bidi-font-weight: normal;"><i><span style="color: black; font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="color: windowtext; font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; font-weight: normal; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-language: DE;">Robert Blust works as an IT Architect for UBS WM CH and is responsible
for the strategic tool landscape supporting the software development lifecycle.
Since 2009 he leads a growing team realizing the vision of an integrated
tooling platform based on the Eclipse Modeling Framework with a strong focus on
model based engineering, scalability and collaboration.</span></span></i></b></h2>
<h2>
<b><span style="color: #4f81bd; font-family: Cambria; font-size: medium;"><span style="font-size: 13.0pt; line-height: 115%; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Code Generation with Xtend</span></span></b></h2>
<div class="MsoNormal">
<b><span style="font-family: Calibri; font-size: x-small;"><span lang="EN-US" style="font-size: 11.0pt; font-weight: bold; line-height: 115%; mso-ansi-language: EN-US; mso-fareast-language: DE;">Sven Efftinge - itemis</span></span></b></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;">
<span style="font-family: Helvetica; font-size: small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif";">Xtend is the successor to the
Xpand template language which has previously been an obvious choice for
developing code generators. Although Xtend is not just a template language for
code generation it is extremely well suited for that task. In this session you
will learn about the advantages and cool features which make Xtend a great
language for building fast running, extensible and maintainable code
generators.</span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;">
<i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; font-style: italic; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;">Sven Efftinge
is a passionate software developer, kite surfer and father. He's the project
lead of Eclipse Xtend, a statically-typed programming language for the JVM, and
Xtext, a framework for developing programming languages and domain-specific
languages. He leads a development and research office for itemis, a strategic
member at Eclipse.</span></span></i><span style="font-family: Helvetica; font-size: xx-small;"><span lang="EN-US" style="font-family: "Helvetica","sans-serif"; font-size: 6.5pt; mso-ansi-language: EN-US; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: DE;"></span></span></div>
<br />
<br />
<br />Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-78495958092910608302013-03-28T15:31:00.001+01:002013-03-28T15:31:17.599+01:00Modeling, Diagramming, CollaboratingThis year's EclipseCon in Boston is just awesome. So many great sessions, nice people and excellent seafood everywhere. My own <a href="http://www.eclipsecon.org/2013/sessions/now-ive-got-model-wheres-my-application">talk</a> yesterday seemed to be a great success, given the ratings I got so far. I'd like to encourage you to write a comment about my talk, in case you enjoyed it.<br />
<br />
Then I've been so impressed by the Sirius technology that Obeo and Thales have been demonstrating and I'm totally excited that they're going to show how they integrated their modeling workbench with CDO model repositories in order to take model collaboration to the next level. I strongly recommend to not miss their session today:<br />
<br />
<br />
<h3>
<a href="http://www.eclipsecon.org/2013/sessions/collaborative-modeling-applied-avionic-design-give-wings-your-team">Collaborative Modeling applied to avionic design: give wings to your team</a></h3>
<div>
I hope to see you there...</div>
Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-91257454725552416342012-11-20T06:33:00.000+01:002012-11-20T06:36:28.966+01:00Fail Server, Fail!To <a href="http://thegordian.blogspot.de/2012/11/use-online-data-offline.html">use online data offline</a> certainly opens entirely new operation spaces for application systems. The most obvious advantage is that an application becomes tolerant against network failure and can continue to work with replicated offline data until the master server is reachable again.<br />
<br />
Of course it also protects against server failure, but only to a certain degree. If the master server fails an application can continue to work with offline data but without the master server to broadcast change notifications there is no real-time collaboration anymore. And the risk that the offline modifications lead to non-trivial conflicts at the time the master server comes back and the changes are to be merged up increases over time.<br />
<br />
Leveraging the same replication mechanisms that CDO uses for <i>offline clone</i> <i>repositories </i>you can easily build up <i>fail-over repository </i>clusters. The most sophisticated topology involves a separate <i>fail-over monitor</i> which manages a dynamically growing or shrinking set of repositories. It elects new master repositories in case the current master fails and communicates with special <i>fail-over sessions</i> in the clients.<br />
<br />
With the new CDO Offline Example application it's now easier than ever to play with these complex setups. I've recorded another screencast (which builds upon <a href="http://thegordian.blogspot.de/2012/11/use-online-data-offline.html">this one</a>) for you to give you a clue on how to start:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/2XSFiPlJIKs?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: center;">
<b><span style="font-size: x-small;">Switch to HD on <a href="http://www.youtube.com/watch?v=2XSFiPlJIKs&hd=1">YouTube</a></span></b></div>
<br />
I hope you're inspired by the demo and develop new ideas for your own applications...Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-22739643901014252352012-11-19T11:25:00.002+01:002012-11-20T06:36:13.661+01:00Use Online Data OfflineYou may know that a CDO model repository can be used like an <b>online </b>database with change notifications to make your modeled applications truly collaborative with no more than a handful lines of code. <br />
<br />
You may not know, yet, that CDO supports a number of additional repository configurations which help to build up more complex topologies of replicating repositories.<br />
<br />
To make it easy to explore the possibilities I've created a new example application that you can install through Eclipse's example wizard.<br />
<br />
To make it even easier I've recorded a screencast for you that guides you through the first example and shows you how to embed local <b>offline </b>clone repositories into client applications.<br />
<br />
With this setup applications use online data while they're online and continue to work with offline data while they're offline:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/XYjGqgxPO0g?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: center;">
<span style="font-size: x-small;"><b><span>Switch to HD on <a href="http://www.youtube.com/watch?v=XYjGqgxPO0g&hd=1">YouTube</a></span></b></span></div>
<br />
I hope you're inspired by the demo and develop new ideas for your own applications...Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com4tag:blogger.com,1999:blog-824652428103224164.post-15241750998428121822012-10-28T11:08:00.000+01:002012-10-28T11:08:46.830+01:00Release Notes and API Evolution ReportsThe Open Source Initiative cites transparency in their prime <a href="http://opensource.org/" target="_blank">mission</a> statement:<br />
<blockquote class="tr_bq">
<i>Open source is a development method for software that harnesses the
power of distributed peer review and transparency of process.</i></blockquote>
It is important to consumers to know what's going on in a project because it (ideally) creates trust in the project results and in the way those are being consumed.<br />
<br />
To help our users to keep up with the rapid (though mostly compatible) change in <a href="http://www.eclipse.org/cdo/" target="_blank">CDO</a> our <a href="http://www.eclipse.org/cdo/downloads" target="_blank">downloads page</a> now provides detailed release notes and API evolution reports for each drop:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_NmblgG9r-qinTnzqi2wXajfKJ4GrGnH6gKMoOJB4jZ53ccwWo_pN1X8tISkDqXBqcqQIW_RA-yiMsE_C4SKGLh-sIpcJWA6M_PS_wgWefHfHz3a-peyFGUd0jqVvNbtGkGGmrw3AoAE/s1600/downloads.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_NmblgG9r-qinTnzqi2wXajfKJ4GrGnH6gKMoOJB4jZ53ccwWo_pN1X8tISkDqXBqcqQIW_RA-yiMsE_C4SKGLh-sIpcJWA6M_PS_wgWefHfHz3a-peyFGUd0jqVvNbtGkGGmrw3AoAE/s400/downloads.png" width="267" /></a></div>
<br />
Here you can see some examples: <br />
<ul>
<li><a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20120612-1449/relnotes.html" target="_blank">Release Notes</a> for CDO R20120612-1449 </li>
<li><a href="http://download.eclipse.org/modeling/emf/cdo/drops/I20121028-0441/api.html" target="_blank">API Evolution Report</a> for CDO I20121028-0441</li>
</ul>
Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-21280358433712391742012-10-27T10:45:00.000+02:002012-10-27T11:02:06.756+02:00An Automated TutorialThe <a href="http://www.eclipsecon.org/2012/" target="_blank">EclipseCon Europe 2012</a> is over and it was, again, a pleasure to attend it. According to the excellent feedback I received <a href="http://thegordian.blogspot.de/2012/10/now-that-ive-got-model-wheres-my_27.html">my show</a> in the theater has been a great success. I promised to upload the plugin that's been driving my Eclipse IDE automatically and make it available together with the slides. It's now available on the CDO homepage:<br />
<br />
<div style="text-align: center;">
<b><a href="http://www.eclipse.org/cdo/documentation/presentations">http://www.eclipse.org/cdo/documentation/presentations</a></b></div>
<br />
You can download the ZIP archive and unzip the contained plug-in JAR to the dropins/ folder of your Eclipse IDE. After restarting Eclipse you'll see this trim widget:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8XEnYkzx4aLsVW9IRFu1QAm52ydrifi-ucGVb287Bilms4M0r4lOPrkm40ps9gFwg8e0ZyXBvDUtrxYjDHNz5dEQgZJrvgDBq7mOXOQsQR8Mw5fzgoaPFUvq-tgMPiBbcG7vdyJO5F4w/s1600/Presenter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8XEnYkzx4aLsVW9IRFu1QAm52ydrifi-ucGVb287Bilms4M0r4lOPrkm40ps9gFwg8e0ZyXBvDUtrxYjDHNz5dEQgZJrvgDBq7mOXOQsQR8Mw5fzgoaPFUvq-tgMPiBbcG7vdyJO5F4w/s400/Presenter.png" width="400" /></a></div>
<br />
By clicking the yellow arrow button (or pressing the F5 key) repeatedly you can advance through the tutorial step by step and watch your workspace being updated until you end up with a fully functional distributed application system.<br />
<br />
Lean back and enjoy...Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com6tag:blogger.com,1999:blog-824652428103224164.post-42450614548932889102012-10-27T10:24:00.000+02:002012-10-27T10:24:00.765+02:00 Now that I've Got a Model – Where's My Application?Models are efficient for capturing enterprise knowledge at a high level of abstraction, independent of technical concerns. Using the Eclipse Modeling Framework (EMF) I can generate an Eclipse editor for my model on a click of a button and instantly play with it. Once I've iterated on the model I need to develop an application around it to put it to use. Now I realize that modeling didn't eliminate any technical aspects, it just relieved me from thinking about them early.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2Lj6_oyiubFBgoEJBYoEpQJetyUXlBvMomfr9dNB7PWEDy6MmYQGbRO9STM1ROjAdS7xW0wqIL2uqtEEnXYQ4V3xam2SYAYxeHvh5yaGv9guf3D_Qb0sx0D_aGfpTVczKi1vWYBSerg/s1600/Blog1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2Lj6_oyiubFBgoEJBYoEpQJetyUXlBvMomfr9dNB7PWEDy6MmYQGbRO9STM1ROjAdS7xW0wqIL2uqtEEnXYQ4V3xam2SYAYxeHvh5yaGv9guf3D_Qb0sx0D_aGfpTVczKi1vWYBSerg/s400/Blog1.png" width="400" /></a></div>
What about the background threads that are expected to cooperate nicely with my model? What if real data are magnitudes bigger than the data I've played with? How do I store this data and broadcast changes to the other users of my application? Can I prevent multiple users from accidentally modifying the same object? My application seems to disappear behind a curtain of challenges until I discover that the Connected Data Objects (CDO) framework provides me with a sophisticated platform for the technical aspects of my model.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis1L9Ypg31Dre-xlJWOw24gtqV_8ktHsZTKymJKFQ1rnNbc1b2XAvl1YfVuYNem8vmDI-6pHNm086fOtG3Si2mI84_G0uUT0KVrP3yofdP3aYpwIo9Xc19mW9v9MiPcvapVDHsr62ihss/s1600/Blog2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis1L9Ypg31Dre-xlJWOw24gtqV_8ktHsZTKymJKFQ1rnNbc1b2XAvl1YfVuYNem8vmDI-6pHNm086fOtG3Si2mI84_G0uUT0KVrP3yofdP3aYpwIo9Xc19mW9v9MiPcvapVDHsr62ihss/s400/Blog2.png" width="400" /></a></div>
In my <a href="http://www.eclipsecon.org/europe2012/sessions/now-ive-got-model-wheres-my-application" target="_blank">EclipseCon presentation</a> today I'll tell you how best to employ the runtime aspects of these frameworks to build a scalable, transactional and distributed application for your modeled data with little more than a mouse click.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSSAgxJKmPUDwKG9dlHDdVq0vSGJIknnmfMzsHQ7OMkP2CTHgFyebE-E96blXoh0hZiCR-qTK3pRqDikYrzXvfI-h_Pq1023Mj3UAYlAik9rCk-UVt2mlZPX9ijL9aUULq3R-LWitWL8E/s1600/Blog3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="310" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSSAgxJKmPUDwKG9dlHDdVq0vSGJIknnmfMzsHQ7OMkP2CTHgFyebE-E96blXoh0hZiCR-qTK3pRqDikYrzXvfI-h_Pq1023Mj3UAYlAik9rCk-UVt2mlZPX9ijL9aUULq3R-LWitWL8E/s400/Blog3.png" width="400" /></a></div>
The session will be in the Theatre from 10:30 to 11:30. I've prepared quite some gimmicks for you and I'm looking forward to seeing you there...Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-17575382214240740212012-10-25T08:23:00.001+02:002012-10-27T10:17:14.219+02:00Now that I've Got a Model – Where's My Application?<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=824652428103224164" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=824652428103224164" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=824652428103224164" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=824652428103224164" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.blogger.com/blogger.g?blogID=824652428103224164" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div>
Models are efficient for capturing enterprise knowledge at a high level of abstraction, independent of technical concerns. Using the Eclipse Modeling Framework (EMF) I can generate an Eclipse editor for my model on a click of a button and instantly play with it. Once I've iterated on the model I need to develop an application around it to put it to use. Now I realize that modeling didn't eliminate any technical aspects, it just relieved me from thinking about them early.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2Lj6_oyiubFBgoEJBYoEpQJetyUXlBvMomfr9dNB7PWEDy6MmYQGbRO9STM1ROjAdS7xW0wqIL2uqtEEnXYQ4V3xam2SYAYxeHvh5yaGv9guf3D_Qb0sx0D_aGfpTVczKi1vWYBSerg/s1600/Blog1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="276" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2Lj6_oyiubFBgoEJBYoEpQJetyUXlBvMomfr9dNB7PWEDy6MmYQGbRO9STM1ROjAdS7xW0wqIL2uqtEEnXYQ4V3xam2SYAYxeHvh5yaGv9guf3D_Qb0sx0D_aGfpTVczKi1vWYBSerg/s320/Blog1.png" width="320" /></a></div>
What about the background threads that are expected to cooperate nicely with my model? What if real data are magnitudes bigger than the data I've played with? How do I store this data and broadcast changes to the other users of my application? Can I prevent multiple users from accidentally modifying the same object? My application seems to disappear behind a curtain of challenges until I discover that the Connected Data Objects (CDO) framework provides me with a sophisticated platform for the technical aspects of my model.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis1L9Ypg31Dre-xlJWOw24gtqV_8ktHsZTKymJKFQ1rnNbc1b2XAvl1YfVuYNem8vmDI-6pHNm086fOtG3Si2mI84_G0uUT0KVrP3yofdP3aYpwIo9Xc19mW9v9MiPcvapVDHsr62ihss/s1600/Blog2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="284" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEis1L9Ypg31Dre-xlJWOw24gtqV_8ktHsZTKymJKFQ1rnNbc1b2XAvl1YfVuYNem8vmDI-6pHNm086fOtG3Si2mI84_G0uUT0KVrP3yofdP3aYpwIo9Xc19mW9v9MiPcvapVDHsr62ihss/s320/Blog2.png" width="320" /></a></div>
In my <a href="http://www.eclipsecon.org/europe2012/sessions/now-ive-got-model-wheres-my-application" target="_blank">EclipseCon presentation</a> today I'll tell you how best to employ the runtime aspects of these frameworks to build a scalable, transactional and distributed application for your modeled data with little more than a mouse click.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSSAgxJKmPUDwKG9dlHDdVq0vSGJIknnmfMzsHQ7OMkP2CTHgFyebE-E96blXoh0hZiCR-qTK3pRqDikYrzXvfI-h_Pq1023Mj3UAYlAik9rCk-UVt2mlZPX9ijL9aUULq3R-LWitWL8E/s1600/Blog3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="248" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSSAgxJKmPUDwKG9dlHDdVq0vSGJIknnmfMzsHQ7OMkP2CTHgFyebE-E96blXoh0hZiCR-qTK3pRqDikYrzXvfI-h_Pq1023Mj3UAYlAik9rCk-UVt2mlZPX9ijL9aUULq3R-LWitWL8E/s320/Blog3.png" width="320" /></a></div>
The session will be in the Theatre from 10:30 to 11:30. I've prepared quite some gimmicks for you and I'm looking forward to seeing you there...Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com1tag:blogger.com,1999:blog-824652428103224164.post-88936074076359894802012-06-27T18:32:00.001+02:002012-06-27T18:32:25.893+02:00CDO 4.1 is Available<br />
Together with the <a href="http://www.eclipse.org/juno">Juno</a> release train we have released <a href="http://www.eclipse.org/cdo">CDO</a> 4.1.<br />
You can download or install it from:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.eclipse.org/cdo/downloads/#R20120612_1449" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="124" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEZr0Uac8_2fzijahwSu0jO6CduVAMlKlMPIGcrl9zu5mVRmP8CsLwg3CzqXtx6SkvCCRwSCqu69uA0H5lTYQzIKsqTouKLECF2VoHPvDQVVzsMMAS4eTCGZUcRFoJi0dYnrbiBjujh1s/s200/Logo-CDO.png" width="200" /></a></div>
<br />The <a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20120612-1449/relnotes.html">release notes</a> and <a href="http://download.eclipse.org/modeling/emf/cdo/drops/R20120612-1449/help/index.html">documentation</a> are also available.<br />
<br />
I'd like to thank the CDO committers, contributors and users for another year full of exciting challenges, pleasant cooperations and major achievements. For myself CDO is a full-time job and I'd like to do no other job. Thank you for that!Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com4tag:blogger.com,1999:blog-824652428103224164.post-83909515286990314972012-02-24T17:10:00.003+01:002012-02-24T17:25:09.165+01:00CDO 4.0 SR2 is AvailableTogether with the <a href="http://www.eclipse.org/indigo">Indigo</a> release train we have released <a href="http://www.eclipse.org/cdo">CDO</a> 4.0 SR2. You can download or install it from:<br /><br /><div style="text-align: center;"><a style="font-weight: bold;" href="http://www.eclipse.org/cdo/downloads/#R20120214_1026">CDO Downloads</a><br /></div><br />Please note that we've fixed a severe <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=372311">bug</a> in the <a href="http://wiki.eclipse.org/CDO_Legacy_Mode">legacy mode</a> after SR2 had been built. The rest of CDO is unaffected but if you're using the legacy mode you should consider to update to the latest <a href="http://www.eclipse.org/cdo/downloads/#maintenance">maintenance build</a>.Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0tag:blogger.com,1999:blog-824652428103224164.post-53043264425695146172011-12-12T18:01:00.009+01:002011-12-12T19:18:46.201+01:00One Month of Open Source Development in 60 SecondsIn October <a href="https://twitter.com/#%21/waynebeaton">Wayne</a> twittered that I'm ruling the <a href="http://eclipse.org/dash">Dash</a> statistics for 2011 in terms of number of commits and that I was #4 in 2010. Looking at my usual schedule as a full time committer and lead of the <a href="http://www.eclipse.org/cdo/">CDO</a> project I'm not too surprised.<br /><br />Of course I recognize and appreciate that a pretty large team has gathered around the CDO project and is making it increasingly successful. Following our <a href="http://thegordian.blogspot.com/2011/03/cdo-enters-3rd-dimension.html">tradition</a> to make even complex systems comprehensible I invite you to follow one month in the open source life of our swarm of little busy bumble bees:<br /><br /><center><br /><iframe src="http://www.youtube.com/embed/JMOEz0QUVmI?rel=0&hd=1" allowfullscreen="" frameborder="0" height="233" width="400"></iframe><br /><span style="font-size:85%;"><a style="font-weight: bold;" href="http://www.youtube.com/watch?v=JMOEz0QUVmI">YouTube</a></span><br /></center><br /><br /><div style="text-align: center; font-weight: bold;">Thank you, team, for making CDO!<br /><br />Thank you, community, for using CDO!<br /><br />Thank you, <a href="http://code.google.com/p/gource/">gource</a>, for this nice visualization!</div>Eike Stepperhttp://www.blogger.com/profile/08095163031047060582noreply@blogger.com0