<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4740251930569090138</id><updated>2011-10-25T13:44:39.989+02:00</updated><category term='democamp'/><category term='Go'/><category term='newsreader'/><category term='OSGi'/><category term='SCCM'/><category term='java'/><category term='Zookeeper'/><category term='Eclipse'/><category term='Software'/><category term='nntp'/><category term='ECF'/><category term='Change'/><category term='Management'/><category term='System i'/><category term='Patents'/><category term='AS/400'/><category term='salvo'/><category term='SWT'/><title type='text'>&gt; /dev/null/</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-8921173552159488792</id><published>2011-03-04T18:07:00.001+01:00</published><updated>2011-03-04T18:07:55.555+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Is Waldo a bundle? RELENG Problems!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="https://lh3.googleusercontent.com/-Sr3NMQKvO-g/TXEUaNbh5BI/AAAAAAAAAMA/-BnqN4YtERk/s1600/waldo-curl-face.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="50" src="https://lh3.googleusercontent.com/-Sr3NMQKvO-g/TXEUaNbh5BI/AAAAAAAAAMA/-BnqN4YtERk/s200/waldo-curl-face.gif" width="25" /&gt;&lt;/a&gt;&lt;/div&gt;Who has not enjoyed wasting time searching for Waldo. Searching for Waldo is fun, you look around a picture and you observe the picture in a very detailed way and discover things that you would never have seen otherwise.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, looking for stuff is not alway's fun. "Au Contraire" as the French would say. Looking for stuff is the biggest time waster in the universe. It is the energy that feeds frustration and can drive a man to madness.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Feature Based Products&lt;/b&gt;&lt;br /&gt;&lt;div&gt;Feature based products are the way to go. They are easy in maintenance, p2 aware and we have some support for them in Eclipse. However, features are not a development artifact. They are releng artifacts.&lt;br /&gt;&lt;br /&gt;Then, after a few cycles of hacking at bundles, the time comes to bundle the bundles into features. Making a good separation into features requires some wizard like qualities, but to find the features for other bundles requires a fair amount of guessing, knowing and, of course searching.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-VwFCCwNlyVU/TXEXKT_hE8I/AAAAAAAAAME/D0ePPykiqdU/s1600/Wizard.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="50" src="https://lh4.googleusercontent.com/-VwFCCwNlyVU/TXEXKT_hE8I/AAAAAAAAAME/D0ePPykiqdU/s200/Wizard.gif" width="35" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Look no more&lt;/b&gt;&lt;br /&gt;&lt;a href="https://lh5.googleusercontent.com/-f02uCoQGv8Y/TXEYoBaLEGI/AAAAAAAAAMI/dQqi7j2BNqc/s1600/WaldoExploring.gif" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="100" src="https://lh5.googleusercontent.com/-f02uCoQGv8Y/TXEYoBaLEGI/AAAAAAAAAMI/dQqi7j2BNqc/s200/WaldoExploring.gif" width="50" /&gt;&lt;/a&gt;Inside Eclipse there is some API that enables us to retrieve the installed features and go right into the bundles that are associated with that feature. Available in the Market Place is a view that is called the "Feature Explorer".&amp;nbsp;It uses this information to show the current platform features and contains a search box. You type the name of the bundle into the search box and the view tells you in which feature(s) is it bundled.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-6BSLEXF7nf8/TXEbywil2gI/AAAAAAAAAMM/bnlp7q0QSVY/s1600/Untitled.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-6BSLEXF7nf8/TXEbywil2gI/AAAAAAAAAMM/bnlp7q0QSVY/s1600/Untitled.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.findwaldo.com/fankit/index.html"&gt;Thanks to the Waldo guys for letting me use their stuff!&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-8921173552159488792?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/8921173552159488792/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2011/03/is-waldo-bundle-releng-problems.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/8921173552159488792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/8921173552159488792'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2011/03/is-waldo-bundle-releng-problems.html' title='Is Waldo a bundle? RELENG Problems!'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-Sr3NMQKvO-g/TXEUaNbh5BI/AAAAAAAAAMA/-BnqN4YtERk/s72-c/waldo-curl-face.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-3588952043825671327</id><published>2010-08-16T23:49:00.008+02:00</published><updated>2010-08-17T03:00:25.821+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SWT'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Extreme Feedback from the Nebula: The Oscilloscope</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://gentecmedical.com/images/multiparameter-patient-monitor.jpg"&gt;&lt;/a&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Extreme Feedback&lt;/b&gt;&lt;/div&gt;&lt;div&gt;When I was reading the Hudson manual a few days ago, I came across a section called "Extreme Feedback" where people are experimenting with feedback from the build system. Devices vary from &lt;a href="http://wiki.hudson-ci.org/pages/viewpage.action?pageId=20250625"&gt;cute bears&lt;/a&gt; to &lt;a href="http://wiki.hudson-ci.org/pages/viewpage.action?pageId=38633731"&gt;traffic lights&lt;/a&gt; and actual &lt;a href="http://schneide.wordpress.com/2009/09/08/smell-if-its-well/"&gt;smell emitters&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I am looking for an genuine hospital heartbeat monitor to top all that. If you find one, let me know.&lt;/div&gt;&lt;a href="http://gentecmedical.com/images/multiparameter-patient-monitor.jpg"&gt;&lt;img src="http://gentecmedical.com/images/multiparameter-patient-monitor.jpg" border="0" alt="" style="float: center; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 10px; cursor: pointer; width: 150px; height: 151px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_B0Womsag0K0/TGnYz_7eVUI/AAAAAAAAALA/-c48H4zxptA/s1600/spike.png"&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Until that time ...&lt;/b&gt;&lt;/div&gt;We are currently building a new software machine that is based on OSGi services. Some of these services are really important and without them the machine will not run. For example, there is the Store service to persist and retrieve data. I don't know why but a few months ago I got this idea that a dashboard with some heartbeat monitors would be a nice way to a) impress our customers and b) to get immediate feedback in case one of the services would die. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://4.bp.blogspot.com/_B0Womsag0K0/TGm7B6hd5zI/AAAAAAAAAKo/mvqQp9Fzj1g/s400/dash.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 282px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5506137661001033522" /&gt;&lt;/div&gt;&lt;div&gt;After playing around for a few hours on a sunny Sunday when I should really not sit behind my computer, the first version of the OSGilloscope was born. I especially liked the name, but changed it later. The first version was slow as a snail and consumed all of my CPU and I had to tinker quite a bit to be able to run many scopes without problems. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After adding a few nice options, including sound (Heartbeat, Flatline, ..) &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=316685"&gt;I asked the Nebula guys if they wanted to have it&lt;/a&gt;, and they did!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have included the scope into the Nebula Examples view. If you want to take a look please follow these five easy steps:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. Start Eclipse with a new workspace &lt;/div&gt;&lt;div&gt;2. Create a java project&lt;/div&gt;&lt;div&gt;3. Create a file called widget.psf and &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.nebula/org.eclipse.swt.nebula.examples/widgets.psf?view=markup&amp;amp;root=Technology_Project"&gt;load it with this content&lt;/a&gt; &lt;/div&gt;&lt;div&gt;4. Right click on the file and select "Import Project Set ..."&lt;/div&gt;&lt;div&gt;5. Open the nebula.product file from the example project and press "Launch an Eclipse Application"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After this is done, open the Oscilloscope tab and play around with the options. It is a lot of fun.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;How to use the scope&lt;/b&gt;&lt;/div&gt;&lt;div&gt;If you want to use the widget please look at the included snippets project. You can just launch each snippet as a Java application. The widget comes with a special abstract OscilloscopeDispatcher class that keeps the animation running if you call the dispatch() method. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It does that by putting a request on the Display queue with a delay of 10-n milliseconds. The higher the delay, the slower the scope will run. You can specify the delay by implementing the &lt;code&gt;getDelayLoop() &lt;/code&gt;method. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Off course, the scope wants to display a value. You get an opportunity to put a value in the scope every "Pulse". The value of the pulse can be specified by implementing the  &lt;code&gt;getPulse() &lt;/code&gt;method. If the pulse is 60 and the delay loop is 20 then every 1200 milliseconds something can be displayed in the scope. This can be a single value which will spike the scope by calling the &lt;code&gt;getOscilloscope().setValue(int) &lt;/code&gt;method or&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://4.bp.blogspot.com/_B0Womsag0K0/TGm_8I6QwLI/AAAAAAAAAKw/qL55Jt8zb7I/s400/spike.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5506143059342049458" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 124px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;it can be a value series by calling the &lt;code&gt;getOscilloscope().setValues(int[]) &lt;/code&gt;method. e.g. the Oscilloscope.HEARTBEAT field will draw a heartbeat like shape. The aforementioned method can lose values if you overflow the stack. The stack is circular meaning that if you push too many values in the method then the tail will overwrite the top.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_B0Womsag0K0/TGnB8mmmU0I/AAAAAAAAAK4/4FScAtVS8ao/s1600/spike.png"&gt;&lt;img src="http://4.bp.blogspot.com/_B0Womsag0K0/TGnB8mmmU0I/AAAAAAAAAK4/4FScAtVS8ao/s400/spike.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5506145266335896386" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 121px; " /&gt;&lt;/a&gt;If you want to draw something in "real time" then the pulse must be set to one. This will give you the opportunity to input a value every cycle.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_B0Womsag0K0/TGnYz_7eVUI/AAAAAAAAALA/-c48H4zxptA/s1600/spike.png"&gt;&lt;img src="http://1.bp.blogspot.com/_B0Womsag0K0/TGnYz_7eVUI/AAAAAAAAALA/-c48H4zxptA/s400/spike.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5506170407282955586" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 202px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Alternatively you can register a listener that gets notified if the stack is empty. An example of this can be found in &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.nebula/org.eclipse.nebula.widgets.oscilloscope.snippets/src/org/eclipse/nebula/widgets/oscilloscope/snippets/Snippet4.java?view=markup&amp;amp;root=Technology_Project"&gt;Snippet4.&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please give it a spin. All feedback is appreciated, even extreme feedback.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-3588952043825671327?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/3588952043825671327/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/08/extreme-feedback-from-nebula.html#comment-form' title='2 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/3588952043825671327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/3588952043825671327'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/08/extreme-feedback-from-nebula.html' title='Extreme Feedback from the Nebula: The Oscilloscope'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_B0Womsag0K0/TGm7B6hd5zI/AAAAAAAAAKo/mvqQp9Fzj1g/s72-c/dash.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-7324740034357506518</id><published>2010-06-09T08:38:00.018+02:00</published><updated>2010-08-03T01:53:08.948+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='Zookeeper'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='ECF'/><title type='text'>Helios Bloghaton: Fun with Eclipse Remote Services - 1</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;In many hotels there is no 13th floor, let alone a room with number 13. Everyone knows that there are 13 steps leading up to the gallows and if you suffer from &lt;span style="font-weight:bold;"&gt;friggatriskaidekaphobia&lt;/span&gt; then you don't like Friday the 13th.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;Nevertheless, the OSGi Alliance decided to assign number 13 to the Remote Services chapter. This is particularly creepy since &lt;a href="http://www.osgi.org/Download/File?url=/download/r4v42/r4.cmpn.pdf"&gt;the book&lt;/a&gt; starts with Chapter 1 and then jumps straight to chapter 13. After chapter 13 the next one is numbered 101. It is as if the Alliance almost &lt;span style="font-style:italic;"&gt;wanted&lt;/span&gt; to proof that superstition &lt;a href="http://en.wikipedia.org/wiki/Superstition"&gt;is just that&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;b&gt;Eclipse Remote Services Implementation&lt;/b&gt;&lt;br /&gt;And the proof sticks because Chapter 13 is a great chapter. ECF has implemented the remote services specification in February with the 3.2 release of ECF. Remote services come in two parts Discovery &lt;a href="http://eclipse.dzone.com/articles/osgi-remote-services-ecf-0?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+eclipsezone/frontpage+(Eclipse+Zone)"&gt;[1]&lt;/a&gt; and Distribution [&lt;a href="http://eclipse.dzone.com/articles/osgi-remote-services-ecf-1"&gt;2&lt;/a&gt;]. This article is about remote services in combination with the new Zookeeper based discovery provider.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; color: rgb(0, 0, 238); "&gt;&lt;img src="http://2.bp.blogspot.com/_B0Womsag0K0/TBFSUd7ZJ4I/AAAAAAAAAJw/7xP7FOCTSt8/s400/shot2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481252733071206274" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 339px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;To the fun&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;We have created a few Example projects to show you how remote services work and the user interface of this one is depicted above. It uses a cool new SWT Widget which I have named &lt;i&gt;the OSGilloscope (w&lt;/i&gt;atch out for a separate blog on this subject.) The other part of the UI consists of a tabbed folder. On one page a new quote is displayed every 15 seconds by a discovered remote service, and on the other page there is information about this remote service.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;Get the sources&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Please fire up a Helios with a new workspace and get the two bundles needed for this example from &lt;a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ecf/examples/bundles/org.eclipse.ecf.examples.remoteservices.quotes.consumer/projectSet.psf?root=RT_Project&amp;amp;view=co"&gt;this project set&lt;/a&gt;** (copy this file in a project, give it the extension .psf, right click and choose Import Project Set...).&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;** Our &lt;a href="http://github.com/ECF/ecf-nonepl/tree/master/examples/bundles/"&gt;recent move of non-epl code to github&lt;/a&gt; has rendered the psf file unusable for the &lt;i&gt;org.eclipse.ecf.services.quotes &lt;/i&gt;project. &lt;a href="http://github.com/ECF/Newsreader/archives/master"&gt;Please get these projects from github&lt;/a&gt; and import it using  "&lt;i&gt;File/Import../Existing projects into workspace"&lt;/i&gt; and then point to the archive.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;If this is a fresh Helios then you also have to download the ECF components. Point your p2 to http://download.eclipse.org/releases/helios and get the Communication Framework extensions from the EclipseRT project.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;Run it&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Inside the consumer bundle there is a file ending with &lt;i&gt;.product&lt;/i&gt;. Open it and click on the link &lt;i&gt;"launch an Eclipse application". &lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;a href="http://3.bp.blogspot.com/_B0Womsag0K0/TBFUz9Joi7I/AAAAAAAAAJ4/M_w3k60COEI/s1600/shot3png.png"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal; -webkit-text-decorations-in-effect: underline; color: rgb(0, 0, 238); "&gt;&lt;img src="http://4.bp.blogspot.com/_B0Womsag0K0/TBFWlo4CtAI/AAAAAAAAAKA/yQD3sXxY9C8/s400/shot3png.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5481257426114229250" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 226px; " /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;b&gt;Yazafatutu.com&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;My server is named after somebody I once met in a dream. A long and strange story which I will tell you for a beer at Eclipse Summit Europe. This server is hosting the other side of this example and it uses ECF Zoodiscovery which in turn uses Apache Zookeeper from the Hadoop project. Zookeeper servers can be grouped to form a network of continuously synchronizing servers. Zookeeper is designed to replicate configuration data and it does that very fast and very reliable. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;At Yazafatutu.com I have started an OSGi container and in there the ECF remote services and Zoodiscovery are running. Zoodiscovery is configured to run in StandAlone mode which means that there is no replication but only one central server. A so called hub-and-spoke configuration.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.melrosewheelchairs.com/images/sanjex-radial-spokes.jpg"&gt;&lt;img style="text-align: left;display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; cursor: pointer; width: 200px; height: 200px; " src="http://www.melrosewheelchairs.com/images/sanjex-radial-spokes.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;In this OSGi container there are three implementations of the QuoteService interface which is located in the other project you have just downloaded: &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;org.eclipse.ecf.services.quotes&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;. Each implementation resides in a separate bundle and the bundles are started and stopped one by one. Starting a bundle causes the Zoodiscovery software to broadcast a publication message to its clients. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Eclipse Twitter&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Press the connect button on your user interface and your client will connect the the Zoodiscovery instance running on yazafatutu.com. After a few seconds, your OSGilloscope will come to live and quotes are shown every time a new bundle is started on the server. One of the three implementations of the QuoteService runs an Eclipse Twitter quote service. If you are on twitter then your quote could be there as well!  &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://1.bp.blogspot.com/_B0Womsag0K0/TA0XH87yNqI/AAAAAAAAAJI/GCTq_OlCyCY/s320/shot.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5480061746963166882" style="cursor: pointer; width: 320px; height: 258px; " /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;The Info tab&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The Info tab shows some information about the discovered server. Take a look at the "&lt;i&gt;component id"&lt;/i&gt; property because that conveniently counts the number of times a service was published. You can see from its count that the ECF Discovery service can handle a few publications.  It needs about 25 weeks to hit a cool million. At the time of this writing it has run about 4 days.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;How does it work&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;/b&gt;It is very easy once you know how. The application itself is a cross between a standalone Java application and an RCP, which is an interesting concept in itself. When the product is started, the Application class is given control. In the start method, the UI is setup and then a listener is installed to listen for service publications. This code is very easy to follow. For every service that comes in, it is checked to be a QuoteService. If this is the case then the UI is updated. The ECF remote services takes care of the remoting and your service is published as if it was a local service.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Please remember to place your code in a &lt;i&gt;try&lt;/i&gt; block: You are working with &lt;i&gt;remote&lt;/i&gt; services. If the remote server shuts down or decides to stop the service, the communication framework will throw an Exception. You always have to be aware of the fact that OSGi services are dynamic and remote services even more. Code in a defensive way suitable for network programming.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;div style="text-align: left; "&gt;&lt;b&gt;How is the framework started&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;b&gt;&lt;/b&gt;Please look at the &lt;i&gt;Configuration&lt;/i&gt; tab of the product configuration. A few of bundles are started to make sure that the underlying framework is initialized. The connect button of the UI does the manual work by creating a &lt;i&gt;Container&lt;/i&gt; which is the ECF concept for an endpoint.&lt;span class="Apple-style-span"   style="  white-space: pre; font-family:monospace;font-size:13px;"&gt; &lt;/span&gt;&lt;pre&gt;try {&lt;br /&gt;zooContainer.connect(&lt;br /&gt;zooContainer.getConnectNamespace().createInstance(&lt;br /&gt;new String[] { "zoodiscovery.flavor.centralized="&lt;br /&gt;+ getServers().getText() }), null);&lt;/pre&gt;&lt;pre&gt;&lt;span class="Apple-style-span"   style="font-family:Georgia, serif;font-size:130%;"&gt;&lt;span class="Apple-style-span"  style=" white-space: normal;font-size:16px;"&gt;&lt;span class="Apple-style-span"  style=" ;font-size:16px;"&gt;&lt;div style="text-align: left; "&gt;&lt;a href="http://www.gemeenteschoolhoogstraten.be/07-08/Zuidpool/communicatie/image039klein.jpg"&gt;&lt;img src="http://www.gemeenteschoolhoogstraten.be/07-08/Zuidpool/communicatie/image039klein.jpg" border="0" alt="" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 245px; height: 200px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Clients most of the time run in &lt;i&gt;centralized&lt;/i&gt; mode and point to a server with configuration information and so does our client. We can remove the manual connect by setting the following Java options:&lt;br /&gt;&lt;br /&gt;-Dzoodiscovery.autoStart=true&lt;br /&gt;-Dzoodiscovery.flavor=zoodiscovery.flavor.centralized=yazafatutu.com&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;div style="text-align: left; "&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;b&gt;&lt;/b&gt;This is a small example on how to use the ECF Zoodiscovery from a consumer perspective. Various parts of Zookeeper can be configured to achieve an optimum for your specific needs and network. More information can be found on the Eclipse wiki about the configuration of Zoodiscovery.&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;Many thanks to the developers of OSGi, Equinox, Zookeeper and ECF for enabling us to glue this together to this very useful piece of software. &lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;div style="text-align: left; "&gt;&lt;b&gt;Need Help?&lt;br /&gt;&lt;/b&gt;We can help you with professional services and training to implement this and other parts of Eclipse. Please drop a line to &lt;a href="mailto:sales@industrial-tsi.com"&gt;sales@industrial-tsi.com&lt;/a&gt; for more information.&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;b&gt;Links&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.eclipse.org/ECF#OSGi_4.2_Remote_Services"&gt;ECF and OSGi 4.2 Remote Services&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.eclipse.org/Zoodiscovery"&gt;ECF ZooDiscovery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/ecf/NewAndNoteworthy.html"&gt;ECF Helios New and Noteworthy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/ecf/downloads.php"&gt;ECF Downloads&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-7324740034357506518?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/7324740034357506518/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/06/helios-bloghaton-fun-with-remote.html#comment-form' title='6 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/7324740034357506518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/7324740034357506518'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/06/helios-bloghaton-fun-with-remote.html' title='Helios Bloghaton: Fun with Eclipse Remote Services - 1'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_B0Womsag0K0/TBFSUd7ZJ4I/AAAAAAAAAJw/7xP7FOCTSt8/s72-c/shot2.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-1386670034695005771</id><published>2010-05-20T14:03:00.006+02:00</published><updated>2010-05-20T14:38:15.785+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Opinion: The Class of Projects</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;This blog is about projects that are not backed up by companies. We, Eclipse users, are very lucky that there are still companies and individuals that invest in time and money for  projects like Equinox, ECF, Platform, JDT, CDT, etc.. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;I learned from &lt;/span&gt;&lt;a href="http://www.arnoud.engelfriet.net/"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Arnoud Engelfriet&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt; that there are three types of projects: Base, Commodity and Differentiator. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Base:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;If we look at end users, nobody gives a damn about the base because it is just not visible. What does a user care if Eclipse runs on Equinox or on a homegrown executable or if it runs on Swing or on SWT? However, it is needless to say how important these projects are.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Commodity:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;These are projects that are an expected part of the product but that are visible to the user. In case of a IDE, think of completion, refactoring, project management, team support, etcetera. The user cares about these things but they are a part of every Java IDE and if you don't have it, you are not in the game. However, it is needless to say how important these projects are.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Differentiator:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Now we come to the interesting business projects because this is stuff that no other IDE has. Think projects as Mylyn, Swordfish, Rienna, etcetera. Needless to say how important these projects are. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Differentiators form an interesting business area and you see that these projects are mostly backed up by companies who can and will help their committers and contributors with infrastructure.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;If you are a project that is a Base or Commodity project and not backed up by a company then it can be hard to get funding. A recent example is the Eclipse telecommunication infrastructure. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;I end up paying $40 every week for a teleconference call with our group because the foundation does not have a local dial-in for my country. Use Skype you say. Sure we will if it is possible but you know that Skype does not always operate as expected when teleconferencing with people around the world and we don't want to waste time with technical issues (thats the first time I ever said that). &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;The foundation has no money to pay for this infrastructure. I respect that but who will pay for it then?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;In other words, it can be very hard for a Base or Commodity project to get proper funding. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;And this is also something that the Foundation should be aware of. It is logical that the parents are very proud of the children who are popular but the other children need attention too. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Base and Commodity projects do not get enough attention. Not only in terms of funding, but also in terms of marketing power, love and mentions. When was the last time SWT was placed in the spotlight?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;Therefore, I think &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=313479"&gt;bug 313479&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt; starts a good discussion. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-1386670034695005771?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/1386670034695005771/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/05/opinion-class-of-projects.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1386670034695005771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1386670034695005771'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/05/opinion-class-of-projects.html' title='Opinion: The Class of Projects'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-5770896012745372966</id><published>2010-05-11T23:28:00.006+02:00</published><updated>2010-05-12T09:17:26.757+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Patents'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='Go'/><title type='text'>Re: Patently Ridiculous</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;After reading Ed's post about &lt;/span&gt;&lt;a href="http://ed-merks.blogspot.com/2010/05/patently-ridiculous.html"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;software patents&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; I remembered a story that occurred around the time when I fell in love for the first time with the game of Go. &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.usgo.org/resources/topten.html"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;img src="http://www.usgo.org/images/goboard.gif" border="0" alt="" style="cursor: pointer; width: 244px; height: 237px; " /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;It must have been a good ten years ago, or more, when I frequently played on the &lt;/span&gt;&lt;a href="http://www.pandanet.co.jp/English/"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Internet Go Server&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;.  When you are a beginner you have to work your way up the ladder by winning games. One way of winning is to challenge players of around your ranking. &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;When I challenged one of the lower rated players, I stumbled upon a guy who was hiding from his fellow Masters in Go by logging in with an alias. However, he forgot to unset the "open" flag so I found myself playing against a much stronger opponent. This is something you just cannot win (there is no such thing as luck in Go.)  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;While we were playing and chatting, he introduced himself as Jean-loup Gailly. I Yahooed him (no Google back then) and found out that he is one of the authors of gzip and masters several other crafts very attractive to the inner-geek (like his work on pulsars).&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;While I don't know his stance on software patents, I assume that he is against them. Jean-loup has analyzed several patents to make sure that the  gzip software avoids all of them.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Jean-loup on his website [3]:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;"&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-style: normal; "&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I have probably spent more time studying data compression patents than actually implementing data compression algorithms. I maintain a list of several hundred patents on lossless data compression algorithms, and I made sure that gzip isn't covered by any of them. In particular, the --fast option of gzip is not as fast it could, precisely to avoid a patented technique.&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;He continues by making an interesting remark: &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;"&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;The first version of the compression algorithm used by gzip appeared in zip 0.9, publicly released on July 11th 1991. So any patent granted after July 11th 1992 cannot threaten gzip because of the prior art, and I have checked all patents granted before this date.&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;"&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;I understand from this that patents are void if somebody can prove that the invention was done before it was filed. So filing patents for simple things might not be so damaging as it appears (somebody try to file a patent for the singleton pattern and see what happens). This is called &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Prior_art"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;prior art&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;The big crunch&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;One interesting story of Jean-loup is about a compression technique claiming to be so effective that it could compress any file with at least one bit. Of course, a child can see that this would recursively compress the output file to zero bits. The US patent office worked on this patent for three years before finally &lt;/span&gt;&lt;a href="http://gailly.net/05533051.html"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;granting the patent.&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;--&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;[1] While I was researching for this blog post I found out that there is a &lt;/span&gt;&lt;a href="http://www.gentgo.be/tetsuki/"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;free iPhone client&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; for Go.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;[2] &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Carl_Barks"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Carl Barks&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;, the famous Donald Duck cartoonist, once drew a story where Donald Duck and his nephews salvaged a ship by pumping thousand of ping-pong balls into it. The word goes that this story &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Serendipity"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;prevented granting&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; of a patent (&lt;/span&gt;&lt;a href="http://www.starch.dk/isi/kroyer/schrooge.asp"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;unfortunately this appears to be a hoax&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;).&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;[3] &lt;/span&gt;&lt;a href="http://gailly.net/index.html#patents"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Jean-loup Gailly's site&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-5770896012745372966?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/5770896012745372966/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/05/re-patently-ridiculous.html#comment-form' title='3 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/5770896012745372966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/5770896012745372966'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/05/re-patently-ridiculous.html' title='Re: Patently Ridiculous'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-10288425429629302</id><published>2010-04-16T14:37:00.004+02:00</published><updated>2010-04-16T15:01:15.577+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Invitation to a sunny party</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_B0Womsag0K0/S8hb_EEG1oI/AAAAAAAAAJA/Y-vDyExPZ2k/s1600/invitation_demo_camp.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 352px; height: 400px;" src="http://1.bp.blogspot.com/_B0Womsag0K0/S8hb_EEG1oI/AAAAAAAAAJA/Y-vDyExPZ2k/s400/invitation_demo_camp.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5460715687167579778" /&gt;&lt;/a&gt;Hi There!&lt;div&gt;&lt;br /&gt;&lt;div&gt;We would like to invite you to attend the Eclipse &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Nieuwegein"&gt;DemoCamp in Nieuwegein&lt;/a&gt; which will take place at June 23. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We will celebrate the Helios release at the end of June and the e4 release in July. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Eclipse DemoCamps are an opportunity to showcase all of the cool technology being built by the Eclipse community. This is also an opportunity for you to meet Eclipse enthusiasts in your area.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Thanks&lt;/b&gt;&lt;/div&gt;&lt;div&gt;to the Eclipse Foundation for the text and Vahid "Pixels" Vafai for the cool graphics.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-10288425429629302?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/10288425429629302/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/04/invitation-to-sunny-party.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/10288425429629302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/10288425429629302'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/04/invitation-to-sunny-party.html' title='Invitation to a sunny party'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_B0Womsag0K0/S8hb_EEG1oI/AAAAAAAAAJA/Y-vDyExPZ2k/s72-c/invitation_demo_camp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-6299981490548260694</id><published>2010-03-31T23:46:00.008+02:00</published><updated>2010-04-01T01:05:54.339+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='ECF'/><title type='text'>ECF Discovery: How many Zookeepers does it take to screw in a lightbulb?</title><content type='html'>&lt;img alt="image:zookeeperecf.gif" src="http://wiki.eclipse.org/images/a/ad/Lightbubl.gif" border="0" align="right" /&gt;&lt;br /&gt;If you use OSGi remote services (See OSGi Compendium Specs chapter 13) you have to know the other end. In large installations this configuration can be quite cumbersome.&lt;br /&gt;&lt;br /&gt;At Remain Software we develop software to manage nodes in a network. We want our nodes to register themselves to us when they are in the network. This is fine if you manage a small office but not if you manage smart lightbulbs in a sky scraper.&lt;br /&gt;&lt;br /&gt;As soon as the lightbulb is screwed into its socket, it can tap some power to activate its OSGi runtime. The runtime will activate the ILightBulb interface with methods dim(int), on() and off() as a remote service. Now, how do we get this service to interested parties...&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;ECF For the Win&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;The ECF discovery framework enabled us to create a Zookeeper based Discovery implementation. An addition to the already existing JmDNS (Zeroconf/Bonjour) and  jSLP implementations.&lt;br /&gt;&lt;br /&gt;An &lt;a href="http://hadoop.apache.org/zookeeper/"&gt;Apache Zookeeper&lt;/a&gt; server will replicate configuration data between other Zookeeper servers. The Zookeeper servers know each other and clients know one Zookeeper Server. So the smart bulb (which runs OSGi or did I mention that already?) is preconfigured with the address of its nearest Zookeeper server or gets this information dynamically by some kind of IP broadcast.&lt;br /&gt;&lt;br /&gt;&lt;img alt="image:zookeeperecf.gif" src="http://wiki.eclipse.org/images/8/89/Zookeeperecf.gif" width="640" height="400" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;When the lightbulb publishes its Remote Service, ECF wakes up and publishes this service through the provided Discovery implementations. The Zookeeper discovery provider will immediately notify its nearest peers and the new lightbulb service is registered in all Zookeeper instances. When the Zookeeper instance that is connected to an interested party receives the data, the Discovery implementation will publish this service in that OSGi container.&lt;br /&gt;&lt;br /&gt;The Lightbulb Control Center is waiting for the ILightBulb service and magically creates a UI in its console (the sparkles DO NOT appear in reality. I made that up).&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.torranceca.gov/6866.htm"&gt;Building Maintainer&lt;/a&gt; can now control the lightbulb.&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_B0Womsag0K0/S7PRH_2DoUI/AAAAAAAAAI4/eVo41CZUHw8/s1600/tinker.gif"&gt;&lt;img src="http://wiki.eclipse.org/images/9/9e/Tinker.gif" border="0" alt="" align="right" style="cursor: pointer; width: 70px; height: 85px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;More..&lt;/b&gt;&lt;/div&gt;&lt;div&gt;For more information or if you want to Tinker with the code, please &lt;a href="http://wiki.eclipse.org/Zookeeper_Based_ECF_Discovery"&gt;visit the wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_B0Womsag0K0/S7PRH_2DoUI/AAAAAAAAAI4/eVo41CZUHw8/s1600/tinker.gif"&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;Acknowledgements&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-weight: normal; font-size:medium;"&gt;Ahmed Aadel, one of the great developers working at Remain Software created the Zookeeper Discovery Implementation. Thanks to Scott Lewis and Markus Kuppe from our ECF team for support and Chris Aniszczyk for easy access to Tinkerbell (tm)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-weight: normal; font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-weight: normal; font-size:medium;"&gt;Animations done with the Gimp.&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-6299981490548260694?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/6299981490548260694/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/03/ecf-discovery-how-many-zookeepers-does.html#comment-form' title='3 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/6299981490548260694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/6299981490548260694'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2010/03/ecf-discovery-how-many-zookeepers-does.html' title='ECF Discovery: How many Zookeepers does it take to screw in a lightbulb?'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-1194457537550706329</id><published>2009-12-21T17:30:00.003+01:00</published><updated>2009-12-21T17:38:11.548+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Am I Fragment or am I Bundle</title><content type='html'>&lt;div&gt;Sometimes you want to know if there are fragments attached to a bundle so you can perform some logic. Eclipse's Platform class is able to help you in this area because it lets you get a list of BundleDescription objects like this: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;BundleDescription[] binfos = Platform.&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;getPlatformAdmin&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;().getState(&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#CC33CC;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;false&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;).getBundles();&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;for (BundleDescription bundleDescription : binfos) {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;if(bundleDescription.getHost() != &lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#CC33CC;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;System.&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="color:#6633FF;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;out&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;.println("&lt;/span&gt;&lt;span class="Apple-style-span"  style="color:#3333FF;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;I am Fragment&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-1194457537550706329?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/1194457537550706329/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/12/am-i-fragment-or-am-i-bundle.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1194457537550706329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1194457537550706329'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/12/am-i-fragment-or-am-i-bundle.html' title='Am I Fragment or am I Bundle'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-6304278081418042329</id><published>2009-11-16T15:26:00.003+01:00</published><updated>2009-11-16T17:10:50.673+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>OSGi: GESUNDHEIT!</title><content type='html'>This blog is about the &lt;a href="http://neilbartlett.name/blog/2009/11/12/2-day-osgi-training-in-amsterdam-1st-2nd-dec/"&gt;upcoming OSGi course run by Neil Bartlett&lt;/a&gt;. If you are writing moderate to large size Java applications and you have heard about OSGi but are still a little puzzled about what it does: OSGi is the biggest thing that happened to Java this century. Here are three reasons why this is the case:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;1. OSGi enforces modularity&lt;/div&gt;&lt;div&gt;Making systems modular feels good to every engineer. It is just a logical thing to do when systems grow. We define and design modules in our systems. But once implemented, they cannot be taken out or replaced by a better version because they get entangled so quickly. When coding OSGi style, this will not happen. Why? Read on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2. OSGi defines module boundaries&lt;/div&gt;&lt;div&gt;One reason modularity is enforced is because you define a clear entrance point in your modules which is the interface to the rest of your system. No unclear API due to many public classes, but a well defined set of visible classes that were meant to be API. The rest is hidden, public or not public. Why is this handy?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. OSGi helps you manage complexity.&lt;/div&gt;&lt;div&gt;Once you can see your modules as giant blocks of LEGO(tm) (having a clear interface) you can think about what the weak blocks are and how they can be replaced or hardened. Do all your work inside the module but be faithful to the interfaces with the outside world. This is how they build Skyscrapers. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although it sounds to good to be true, true it still is. And even though OSGi sounds like a sneeze, it is all about the GESUNDHEIT of your applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.regonline.com/builder/site/Default.aspx?eventid=772414"&gt;We host an OSGi course in December&lt;/a&gt;. There are a few places left. Neil Bartlett will be your teacher. By the way, Neil did write the book, a free book and the eye opening &lt;a href="http://neilbartlett.name/blog/osgibook/"&gt;first chapter is right here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Apart from the course we will take you on a Amsterdam by Night tour where you will get a good, but not too good, impression of the unique Amsterdam culture. It is about 30 minutes drive from the training location to the center of Amsterdam.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;See you there!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-6304278081418042329?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/6304278081418042329/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/11/osgi-gesundheit.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/6304278081418042329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/6304278081418042329'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/11/osgi-gesundheit.html' title='OSGi: GESUNDHEIT!'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-493055889547264633</id><published>2009-10-06T17:58:00.005+02:00</published><updated>2009-10-06T21:17:05.118+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Eclipse API tools: Execution Environments</title><content type='html'>&lt;span class="Apple-style-span"   style="  line-height: 19px; font-family:arial, sans-serif;font-size:small;"&gt;&lt;h2  style="color: black; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0.6em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170); font-size:20px;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;a href="http://wiki.eclipse.org/PDE/Resources/Execution_Environments"&gt;This content first appeared on the Eclipse Wiki!&lt;/a&gt; &lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2 size="20px" style="color: black; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; font-weight: normal; margin-top: 0px; margin-right: 0px; margin-bottom: 0.6em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(170, 170, 170);  background-position: initial initial; "&gt;Execution Environments in API Tools&lt;/h2&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://eclipsesource.com/blogs/2008/10/08/tip-eclipse-osgi-and-execution-environments/" class="external text" title="http://eclipsesource.com/blogs/2008/10/08/tip-eclipse-osgi-and-execution-environments/" rel="nofollow" style="text-decoration: none; color: rgb(51, 102, 187); background-image: url(http://wiki.eclipse.org/skins/eclipse/external.png); background-repeat: no-repeat; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; padding-right: 13px; background-position: 100% 50%; "&gt;Execution Environments (EE)&lt;/a&gt; are a neat concept within OSGi, however, things can become complicated when developing against multiple EEs. When you want to contribute code to Eclipse, chances are that you will be asked to downgrade your code to the lowest possible execution environment.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;For example, suppose that you want to contribute a Twitter client to Eclipse, or any other open source platform. If you are already accustomed to the OSGi way of working you would probably want to split your code into several independent bundles (AKA modules or plug-ins). At least you would provide a module named org.eclipse.twitter.core and one called org.eclipse.twitter.ui. To be really useful, it would be the bomb if the core bundle could run on, say, a watch. For watches, and other minimal devices there is a special Java environment which is a subset of Java 1.4 (without regular expressions unfortunately) called Foundation 1.1 or CDC 1.1/Foundation 1.1. There is also a Foundation 1.0 but this is really stone age and hardly not used. From what I know, Eclipse uses the 1.1 as a minimum level.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;Your org.eclipse.twitter.ui package would normally not require such a primitive environment, however, if somebody wanted to implement a twitter client on a watch, he or she could at least use your core to handle the difficult stuff.&lt;/p&gt;&lt;a name="Specify_an_Execution_environment" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;/a&gt;&lt;h3   style="color: black; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; font-weight: bold; margin-top: 0px; margin-right: 0px; margin-bottom: 0.3em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: initial; border-bottom-style: none; border-bottom-  background-position: initial initial; font-size:17px;color:initial;"&gt;&lt;span class="mw-headline"&gt;Specify an Execution environment&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot1.png" class="image" title="Specify an Execution Environment" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="Specify an Execution Environment" src="http://wiki.eclipse.org/images/4/4b/EEShot1.png" width="410" height="376" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;br /&gt;Execution Environments for a specific (plug-in) bundle can be specified in the manifest editor. It is generally only necessary to specify the lowest EEs that your bundles require. In the preferences there is also a section Execution Environments in the Java section. Just type "exec" in the preference search box to get the indicated page. This merely states which installed JRE's are able to provide the required Execution Environment. It is clear that a Java 5 JRE cannot provide a Java 6 Execution Environment. The other way around is possible but that generally provides more than is required and can lead to confusion.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot2.png" class="image" title="Java Execution Environments Preference Page" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="Java Execution Environments Preference Page" src="http://wiki.eclipse.org/images/5/55/EEShot2.png" width="731" height="311" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;br /&gt;For example, a Java 5 JRE can provide the "split()" method for String but this method is not available in Foundation 1.1. Even if your execution environment was set to CDC 1.1/Foundation 1.1 in your manifest file, this problem would only be detected when it was executed against a Foundation 1.1 JRE.&lt;/p&gt;&lt;a name="Setup_API_Tooling" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;/a&gt;&lt;h3   style="color: black; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; font-weight: bold; margin-top: 0px; margin-right: 0px; margin-bottom: 0.3em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: initial; border-bottom-style: none; border-bottom-  background-position: initial initial; font-size:17px;color:initial;"&gt;&lt;span class="mw-headline"&gt;Setup API Tooling&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;However, we want Eclipse to guard this and warn us when we try to use illegal (future) methods or classes. In order to set this up, we first have to get the available execution environments from the Eclipse update site. In order to do this, go to the preferences and type 'API' in the search box. Then select the "API Errors/Warnings" page. If you open the first section "General" and select "Error" for the "Invalid references ..." field, the "Supported Environments" box will be accessible and you can click on the provided link.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot3.png" class="image" title="Enable the Supported Environments dialog" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="Enable the Supported Environments dialog" src="http://wiki.eclipse.org/images/4/42/EEShot3.png" width="776" height="315" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;br /&gt;Clicking this link will open the familiar P2 installer dialog. Select the proper download site and then download all available Execution Environments.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot4.png" class="image" title="Downloading the Execution Environments" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="Downloading the Execution Environments" src="http://wiki.eclipse.org/images/f/f8/EEShot4.png" width="831" height="493" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;br /&gt;Make sure to switch on the required Errors and/or Warnings. There are convenient buttons available to flip all switches at once to the desired state. Be restrictive if you are serious about your execution environment.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot5.png" class="image" title="Result" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="Result" src="http://wiki.eclipse.org/images/1/12/EEShot5.png" width="553" height="430" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;a name="Activating_the_Project_for_API_tooling" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;/a&gt;&lt;h3   style="color: black; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; font-weight: bold; margin-top: 0px; margin-right: 0px; margin-bottom: 0.3em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: initial; border-bottom-style: none; border-bottom-  background-position: initial initial; font-size:17px;color:initial;"&gt;&lt;span class="mw-headline"&gt;Activating the Project for API tooling&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;The last thing to do is to activate the project for API tooling, only setting the Execution Environment in the Manifest file will not do anything. Before a project is created, you are able to specify if the API Tooling must be activated by checking the "Enable API Analysis" field.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot6.png" class="image" title="Activate API Tooling" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="Activate API Tooling" src="http://wiki.eclipse.org/images/5/5c/EEShot6.png" width="478" height="476" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;This will set a project nature that in turn provides special builder classes to check for EE JRE incompatibilities (amongst other things.) If you have forgotten to check this box then you can also do it later. Right-click your plug-in project and select the "API Tooling Setup" option from the PDE Menu in the context menu. This will apply the nature after the project was already created.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot7.png" class="image" title="Activate API Tooling" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="Activate API Tooling" src="http://wiki.eclipse.org/images/4/48/EEShot7.png" width="630" height="805" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;A dialog box will appear to warn you that an API baseline is not set. You can ignore this if you only want to use the API tooling to specify the Execution Environment.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot8.png" class="image" title="API Tooling warning" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="API Tooling warning" src="http://wiki.eclipse.org/images/9/92/EEShot8.png" width="522" height="176" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;a name="Checking_your_Source" style="text-decoration: none; color: rgb(0, 43, 184); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;/a&gt;&lt;h3   style="color: black; background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; font-weight: bold; margin-top: 0px; margin-right: 0px; margin-bottom: 0.3em; margin-left: 0px; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom-width: initial; border-bottom-style: none; border-bottom-  background-position: initial initial; font-size:17px;color:initial;"&gt;&lt;span class="mw-headline"&gt;Checking your Source&lt;/span&gt;&lt;/h3&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;Surely, some of your sources will be showing the red cross. Open a source. Press CTRL+. (dot) to go to the first error and hoover to find the cause. This could look something like this:&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="http://wiki.eclipse.org/Image:EEShot9.png" class="image" title="API Tooling in Action" style="text-decoration: underline; color: rgb(90, 54, 150); background-image: none; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: initial; background-position: initial initial; "&gt;&lt;img alt="API Tooling in Action" src="http://wiki.eclipse.org/images/3/31/EEShot9.png" width="779" height="290" border="0" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; vertical-align: middle; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;Many thanks to the PDE team for this great tool!&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-493055889547264633?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/493055889547264633/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/10/eclipse-api-tools-execution.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/493055889547264633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/493055889547264633'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/10/eclipse-api-tools-execution.html' title='Eclipse API tools: Execution Environments'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-1336688135447822082</id><published>2009-08-19T12:50:00.008+02:00</published><updated>2009-08-19T17:12:26.620+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AS/400'/><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='System i'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='ECF'/><title type='text'>Running Equinox OSGi and ECF on the System i - Part 2</title><content type='html'>In &lt;a href="http://industrial-tsi-wim.blogspot.com/2009/07/running-equinox-on-system-i-part-1.html"&gt;the previous installment &lt;/a&gt;of this series I have demonstrated what it takes to run OSGi on the AS/400 (or System i as it is called today.) &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Goal&lt;/b&gt;&lt;/div&gt;&lt;div&gt;In this part we take the OSGi installation one step further by adding additional bundles to the initial installation. A bundle is OSGi slang for a group of Java classes that together perform certain tasks. They are also called modules or plug-ins (because of their plug and play nature).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Remote Services&lt;/b&gt;&lt;/div&gt;&lt;div&gt;As I mentioned earlier, &lt;a href="http://www.remainsoftware.com/"&gt;our company&lt;/a&gt; is in the process of creating a multiplatform SCM for which we need a Multiplatform Communication Layer. Multiplatform can be mapped to Java and Communication Layer translates to the &lt;a href="http://www.eclipse.org/ecf/"&gt;Eclipse Communication Framework,  ECF&lt;/a&gt;. Since we have already decided to use the OSGi technology as the runtime container, we were also looking for a OSGi defined solution. As you might know, OSGi only provides specifications. It is up to others, like the people from Eclipse and Apache, to write an implementation. One of the new specifications in the upcoming OSGi release is referred to as RFC 119. It describes how an OSGi service should be addressed remotely. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Remote Services is important to us because we have to sometimes manage several hunderds end-nodes. Beeing able to do so in standard OSGi makes us free from the choice of using one specific remoting solution. The RFC 119 technology enables us to choose from different implementations and we have tried both the Apache and the Eclipse implementation.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;b&gt;Cleanup the OSGi installation&lt;/b&gt;&lt;/div&gt;&lt;div&gt;If you have followed the &lt;a href="http://industrial-tsi-wim.blogspot.com/2009/07/running-equinox-on-system-i-part-1.html"&gt;previous article&lt;/a&gt;, you will notice that there are a lot of bundles in the plugins directory. For our current purpose we don't need all of them and we also want to be as clean as possible. So we are going to move all the unused bundles to a special directory called "Equinox Bundles" we can get to this directory if we need another bundle later. Create a directory with the name "Equinox Bundles" in the /QOpenSys/Equinox directory and move all the bundles in the "plugins" directory into this directory. Now copy back the three jars from the "Equinox Bundles" directory that start with:&lt;div&gt;   &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt; org.eclipse.equinox.common&lt;/li&gt;&lt;li&gt;org.eclipse.osgi&lt;/li&gt;&lt;li&gt;org.eclipse.update.configurator&lt;/li&gt;&lt;/ul&gt;and are followed by a version number and a build identifier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Setup the configuration.ini&lt;/span&gt;&lt;/div&gt;&lt;div&gt;OSGi is configured using the config.ini file in the installation directories 'configuration' directory. OSGi already created this directory for you after the first launch. If it is not there, please see the &lt;a href="http://industrial-tsi-wim.blogspot.com/2009/07/running-equinox-on-system-i-part-1.html"&gt;first article&lt;/a&gt; and run the framework.&lt;br /&gt;&lt;br /&gt;Now we are going to create the config.ini file with the following content:&lt;div&gt;   &lt;/div&gt; &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;osgi.bundles=org.eclipse.equinox.common@2:start, org.eclipse.update.configurator@3:start&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;eclipse.ignoreApp=true&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;osgi.install.area=file:/Qopensys/Equinox/plugins/&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;osgi.console=667&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;osgi.noShutdown=true&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Line 1 instructs the OSGi framework to first start the &lt;i&gt;common&lt;/i&gt; bundle and then the configurator bundle. The configurator bundel will automaticall&lt;div&gt;   &lt;/div&gt; y install all plugins that are located in the plugins directory of the install directory. In the next step we will put all of our non-framework bundles in that directory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Line 4 will listen at the TCP/IP port 667 with a telnet server. You can use putty or any other client to telnet to port 667 of this machine. It will give you the console and enables you to run the OSGi framework in a batch job and still be able to control it. Mind you that many OSGi installations happily run without a console or are controlled through other means (e.g. a controlling bundle).&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Running as a Batch job&lt;/span&gt;&lt;/div&gt;&lt;div&gt;To run the OSGi framework as a batch job start the following command (adapted to the id of your download) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;i&gt;SBMJOB CMD(JAVA CLASS('/QOpenSys/Equinox/plugins/org.eclipse.osgi_3.5.0.v20090520.jar')) JOB(OSGI)&lt;br /&gt;&lt;br /&gt;&lt;/i&gt;&lt;div&gt;   &lt;/div&gt;    &lt;/div&gt;&lt;div&gt;                                                    &lt;/div&gt;&lt;/div&gt;&lt;div&gt;Now fire up your favourite telnet client and try to access port 667. Keep in mind that you can only connect one session at a time. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now type the "ss" command to show that the framework is running and indeed all our bundles are active.&lt;br /&gt;&lt;br /&gt;&lt;div&gt; &lt;div&gt; &lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_B0Womsag0K0/SowOCNtvZ8I/AAAAAAAAAF0/V2I5qbcTu80/s1600-h/shot1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 119px;" src="http://2.bp.blogspot.com/_B0Womsag0K0/SowOCNtvZ8I/AAAAAAAAAF0/V2I5qbcTu80/s400/shot1.jpg" alt="" id="BLOGGER_PHOTO_ID_5371683886750197698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;  &lt;/div&gt;  &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;   &lt;/div&gt; &lt;/div&gt;&lt;div&gt;The exit command will stop the framework and exit. The disconnect command will terminate the telnet session but will leave the framework running. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Setup ECF&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Since we are Eclipse junkies we setup our distribution server with the ECF software from Eclipse. So &lt;a href="http://www.eclipse.org/ecf/downloads.php"&gt;download the ECF SDK&lt;/a&gt;. If this link is broken then just go to the Eclipse site and navigate to the ECF SDK and get the zip. Then drop all the bundles from this zip into the '/QOpenSys/Equinox/plugins/plugins' directory. That is correct, two plugins directories. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The reason for this is the org.eclipse.osgi.configurator bundle. It will install all bundles that are found in the plugins directory for us so we don't have to do that ourselves. Since we have installed OSGi in the /QOpenSys/Equinox/plugins directory, we have two directories with this name.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_B0Womsag0K0/SowU6OkShhI/AAAAAAAAAF8/TZZqflIRtFY/s1600-h/shot2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 149px;" src="http://1.bp.blogspot.com/_B0Womsag0K0/SowU6OkShhI/AAAAAAAAAF8/TZZqflIRtFY/s400/shot2.jpg" alt="" id="BLOGGER_PHOTO_ID_5371691446121432594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now stop the framework and submit the job again. Telnet to port 667 and try the "ss" command. This time you will see a lot more. You can filter the list to show only the active bundles by using "ss -s active"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Next Time&lt;/span&gt;&lt;br /&gt;The next time we will create two plugins. One will consume the remote service that the other will provide.&lt;br /&gt;&lt;br /&gt;Thank you for your feedback&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-1336688135447822082?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/1336688135447822082/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/08/running-equinox-osgi-and-ecf-on-system.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1336688135447822082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1336688135447822082'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/08/running-equinox-osgi-and-ecf-on-system.html' title='Running Equinox OSGi and ECF on the System i - Part 2'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_B0Womsag0K0/SowOCNtvZ8I/AAAAAAAAAF0/V2I5qbcTu80/s72-c/shot1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-7769964496093256295</id><published>2009-07-31T15:02:00.012+02:00</published><updated>2009-07-31T19:09:57.815+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='System i'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Running Equinox on the System i - Part 1</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_B0Womsag0K0/SnMkysz6VWI/AAAAAAAAAFs/I7cCtAfhvTc/s1600-h/2009-07-31_1906.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 256px;" src="http://2.bp.blogspot.com/_B0Womsag0K0/SnMkysz6VWI/AAAAAAAAAFs/I7cCtAfhvTc/s400/2009-07-31_1906.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5364672034569344354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;F&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;o&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;r&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;o&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;u&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;r&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;n&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;e&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;x&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;t&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;v&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;e&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;r&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;s&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;i&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;o&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;n&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;o&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;f&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;T&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;D&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;/&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;O&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;M&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;S,&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;w&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;h&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;i&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;c&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;h&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;i&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;s&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;o&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;u&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;r&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;i&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#333399;"&gt;System i&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;b&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;a&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;s&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;e&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;d&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; Software Change Management System, we are moving to OSGi. Since a large part of the processing involves the management of the local &lt;span class="Apple-style-span" style="color: rgb(51, 51, 153); font-style: italic; font-weight: bold; "&gt;System i&lt;/span&gt; file system we also need to setup OSGi on this machine. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Okay so the first thing to do is to determine which OSGi implementation to install. Since we are an Eclipse foundation member the first thing to try is the Eclipse implementation of OSGi called Equinox. Equinox has its own page at http://www.eclipse.org/equinox and there is a quick start guide. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The quick start guide instructs us to download Equinox from the download site and sure enough there is a 25 mb drop. After downloading the contents of the zip we can safely say that there is too much in this file but we will worry about that later. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Installing Equinox on the AS/400&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I have arranged network access to the IFS so the first thing to do is determine a location. For this I have picked the QOpenSys file system which I always use for long filename and case sensitive related stuff. In the QOpenSys file system I create an Equinox directory and then I copy the plugins directory from the drop into this directory. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;According to the getting started guide I would now be able to run equinox with the following command.  &lt;span class="Apple-style-span"   style="  line-height: 16px; white-space: pre; font-family:-webkit-monospace;font-size:12px;"&gt;java -jar org.eclipse.osgi_3.2.0.jar -console&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the &lt;span class="Apple-style-span" style="color: rgb(51, 51, 153); font-style: italic; font-weight: bold; "&gt;System i&lt;/span&gt; and translated to the correct jar in the plugins directory (yes you have to look that up yourself) this looks like this:  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JAVA  CLASS('/QOpenSys/Equinox/plugins/org.eclipse.osgi_3.5.0.v20090520.jar') PARM('-console')                &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"  style="font-size:100%;"&gt;&lt;span class="Apple-style-span"  style="font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The 5250 java console pops up and after a while the message "Attaching Java program to /QOpenSys/Equinox/plugins/org.eclipse.osgi_3.5.0.v20090520.jar." appears. This is the indication that the jar file was found and that the &lt;span class="Apple-style-span" style="color: rgb(51, 51, 153); font-style: italic; font-weight: bold; "&gt;System i&lt;/span&gt; is now compiling all class files to local digestable classes. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;And sure enough, after a short while we see the OSGi console. To check all the installed bundles we enter the command "ss" and there, in all its glory, is the org.eclipse.osgi bundle. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I would call this a completely painless operation. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;In the next part I will try to install ECF and some homegrown bundles&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;                 &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-7769964496093256295?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/7769964496093256295/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/07/running-equinox-on-system-i-part-1.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/7769964496093256295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/7769964496093256295'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/07/running-equinox-on-system-i-part-1.html' title='Running Equinox on the System i - Part 1'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_B0Womsag0K0/SnMkysz6VWI/AAAAAAAAAFs/I7cCtAfhvTc/s72-c/2009-07-31_1906.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-1120077612325336916</id><published>2009-06-24T21:28:00.003+02:00</published><updated>2009-06-24T22:15:24.264+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Funny History Lesson About SWT (+ Jigsaw)</title><content type='html'>Hi,&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have found a reference post to an "inside story" on SWT. Quite funny. Maybe you already know it but for others it will be new. What is also funny is that it contains a reference to a project called, yes, "Jigsaw". It appears that all projects with that name are doomed to go under, which some might call good news. :-D&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have fun reading: &lt;a href="http://tinyurl.com/swtjigsaw"&gt;http://tinyurl.com/swtjigsaw&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-1120077612325336916?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/1120077612325336916/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/funny-history-lesson-about-swt-jigsaw.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1120077612325336916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1120077612325336916'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/funny-history-lesson-about-swt-jigsaw.html' title='Funny History Lesson About SWT (+ Jigsaw)'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-542349397124312955</id><published>2009-06-09T21:08:00.012+02:00</published><updated>2009-06-10T10:06:21.122+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>The Aware Workbench (1) (win a T-Shirt)</title><content type='html'>Wouldn't it be great if the workbench would know if the stack trace you are seeing was already reported as a bug. Or if you could just ask a question and it would notify you if the answer arrived. Maybe you are in need of professional services: the workbench just opens a map and shows you where you can find them in your location. How about a workbench where you can just chat with peers and experts or let your workbench twitter your success:&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span class="Apple-style-span"   style=" color: rgb(51, 51, 51);  line-height: 15px; font-family:'Lucida Grande';font-size:14px;"&gt;&lt;strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;a href="http://twitter.com/wimjongman" class="screen-name" title="Wim Jongman" style="margin-top: 0px; margin-right: 5px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; color: rgb(0, 132, 180); "&gt;wimjongman&lt;/a&gt; &lt;/strong&gt;&lt;span class="entry-content" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;just let me, his workbench, create the com.remainsoftware.salvo.application product for 5 target platforms&lt;/span&gt;&lt;span class="meta entry-meta"   style="margin-top: 3px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: block; font-style: italic; font-family:georgia;font-size:0.8em;"&gt;&lt;a href="http://twitter.com/wimjongman/status/2093461377" class="entry-date" rel="bookmark" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-decoration: none; "&gt;&lt;span class="published" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;about 3 minutes ago&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt; &lt;/span&gt;&lt;span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;from the &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;Eclipse Workbench&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;This is currently beeing discussed in &lt;a href="http://bugs.eclipse.org/279383"&gt;bug 279383&lt;/a&gt; please join in. BTW, You can win a T-shirt (not from Eclipse) if you point out the thing the average workbench can already do.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;img src="http://4.bp.blogspot.com/_B0Womsag0K0/Si7Hq7sEsBI/AAAAAAAAAEo/hbx_b37iXpY/s200/awareworkbench.png" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 156px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5345429348126339090" /&gt;&lt;img src="http://4.bp.blogspot.com/_B0Womsag0K0/Si7HaKrLrJI/AAAAAAAAAEg/iukJGjJek8Y/s200/map.jpg" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 118px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5345429060091358354" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-542349397124312955?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/542349397124312955/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/aware-workbench-1-win-t-shirt.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/542349397124312955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/542349397124312955'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/aware-workbench-1-win-t-shirt.html' title='The Aware Workbench (1) (win a T-Shirt)'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_B0Womsag0K0/Si7Hq7sEsBI/AAAAAAAAAEo/hbx_b37iXpY/s72-c/awareworkbench.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-8694860307666587450</id><published>2009-06-04T22:34:00.009+02:00</published><updated>2009-06-04T23:51:01.070+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>is Eclipse still Rock &amp; Roll?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_B0Womsag0K0/SihBtkX3eDI/AAAAAAAAAEA/NBVluAHkcKY/s1600-h/abba.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 309px; height: 400px;" src="http://4.bp.blogspot.com/_B0Womsag0K0/SihBtkX3eDI/AAAAAAAAAEA/NBVluAHkcKY/s400/abba.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5343593208988792882" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-8694860307666587450?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/8694860307666587450/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/is-eclipse-still-rock-roll.html#comment-form' title='3 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/8694860307666587450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/8694860307666587450'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/is-eclipse-still-rock-roll.html' title='is Eclipse still Rock &amp; Roll?'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_B0Womsag0K0/SihBtkX3eDI/AAAAAAAAAEA/NBVluAHkcKY/s72-c/abba.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-1383596113737621605</id><published>2009-06-04T13:49:00.007+02:00</published><updated>2009-06-10T15:31:07.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='democamp'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Gezellig</title><content type='html'>Tomorrow evening (thursday, june 11) there is the Dutch Eclipse Democamp. Almost 30 people enrolled, including the famous Marcel Offermans, member of the PMC of Apache Felix and the Dutch Oracle on Open Source legal aspects, Arnoud Engelfriet.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Martin Taal, the EMFT Teneo project lead will be present  and Jos Warmer, lead of the mod4j project, is presenting mod4j.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;If you have something to share or just want to watch and talk about the Greater Eclipse, this evening is for you. There will be an interesting mix of topics,&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Galileo_2009/Utrecht"&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;Please check out the current Agenda and enroll.&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; You can also mail yuri.kok@industrial-TSI.com and he will put you on the list.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Drinks and beverages are on us and the Eclipse Foundation. It is going to be interesting and&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;&lt;a href="http://www.yawiktionary.com/g/1148364819962.html"&gt;G E Z E L L I G&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-1383596113737621605?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/1383596113737621605/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/gezellig.html#comment-form' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1383596113737621605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/1383596113737621605'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/gezellig.html' title='Gezellig'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-737312230254196871</id><published>2009-06-04T01:07:00.001+02:00</published><updated>2009-06-04T01:35:54.191+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='salvo'/><category scheme='http://www.blogger.com/atom/ns#' term='newsreader'/><title type='text'>Newsreader update</title><content type='html'>V0.4.0 of the newsreader is available @ &lt;a href="http://wiki.eclipse.org/newsreader"&gt;http://wiki.eclipse.org/newsreader&lt;/a&gt;. I have just added colouring so that you can see the status of a discussion (1:my articles, 2:new reply to participating thread, 3:participating thread):&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://content.screencast.com/users/WimJongman/folders/Jing/media/0ced2966-0fd3-4393-9c4c-9521ff3d6cb4/2009-06-04_0112.png"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 630px; FLOAT: left; HEIGHT: 493px; CURSOR: hand" border="0" alt="" src="http://content.screencast.com/users/WimJongman/folders/Jing/media/0ced2966-0fd3-4393-9c4c-9521ff3d6cb4/2009-06-04_0112.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Download and help me get this project on the road.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.screencast.com/users/WimJongman/folders/Jing/media/a2ebd79f-bf9e-4aa9-bb35-6696423c99bb"&gt;Click this for a 3 minute instruction&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Updates: &lt;a href="http://twitter.com/wimjongman"&gt;http://twitter.com/wimjongman&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-737312230254196871?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/737312230254196871/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/newsreader-update.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/737312230254196871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/737312230254196871'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/06/newsreader-update.html' title='Newsreader update'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-6418984479371940704</id><published>2009-05-30T00:52:00.000+02:00</published><updated>2009-05-30T00:57:00.674+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='nntp'/><title type='text'>Salvo, the Eclipse based Newsreader</title><content type='html'>Version 0.2 for windows of the Salvo newsreader is available on &lt;a href="http://wiki.eclipse.org/Newsreader"&gt;http://wiki.eclipse.org/Newsreader&lt;/a&gt;. It has only the foundation of a newsreader but we have started to work on the fun stuff. If you want to give it a spin, please do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-6418984479371940704?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/6418984479371940704/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/05/salvo-eclipse-based-newsreader.html#comment-form' title='4 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/6418984479371940704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/6418984479371940704'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/05/salvo-eclipse-based-newsreader.html' title='Salvo, the Eclipse based Newsreader'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-8653677495987029102</id><published>2009-05-29T03:18:00.000+02:00</published><updated>2009-05-29T13:52:33.695+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Community is a superclass of Economy</title><content type='html'>&lt;div&gt;&lt;b&gt;The big scope&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My personal "frustration" with Eclipse is that it is a technology focussed community and although I am a &lt;a href="http://en.wikipedia.org/wiki/Techie"&gt;techie&lt;/a&gt; avant la lettre (yes I did program assembly on the &lt;a href="http://en.wikipedia.org/wiki/Zilog_z80"&gt;Zilog Z80&lt;/a&gt;) I am also a business owner concerned to put food on the plates of my employees (I pause for a second so you can wipe your tears). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I want to bring Eclipse consumers and Eclipse providers together inside the Eclipse community so that we can create an Economy. With this I mean that there must be a place inside Eclipse where consumers can contact providers but providers can also make themselves visible for consumers and therefore Eclipse must know their consumers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The first step&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since Eclipse is a community and all efforts arise from this community, there is no use barking against the Mighty Moon (MM pun intended) to make this happen. Instead I feel I/we have to do something.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would like a "Community", "Collaboration" or "Community Collaboration" or "Community and Social Collaboration" top level project. In this project we place tools like Mylyn, the ECF collaboration projects and others (like a newsreader, read on) as a start and integrate this with the base Eclipse download.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The next steps&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next steps are to really focus on creating an Eclipse Economy after we have established the Eclipse Community; Community is a superclass of Economy. There are a lot of companies paying for Eclipse membership. We are a "$5000 a year" member. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Call us "the middle class".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now that the times are hard, this middle class want to see some direct effect of this membership before we cancel and just take Eclipse like the rest of the world. My believe is that companies like ours must form the bigger part of the income of the Eclipse foundation just like the middle class is the base of any countries economy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;All bla bla?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mostly, but I don't want to just talk about this. I am currently working an a newsreader project to give the community a voice from within the Eclipse workbench (see below if you want to give this Alpha project a spin).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next project I want to work on is a (Google) map which is accessible from the Eclipse Help menu that shows where you can get Eclipse services in your region. The entries in the map are the companies that pay for Eclipse (like &lt;a href="http://www.remainsoftware.com/"&gt;Remain&lt;/a&gt;, &lt;a href="http://www.industrial-tsi.com/"&gt;Industrial-TSI&lt;/a&gt;, Weigle-Wilczek, IBM and others :-).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I thank Bjorn Freeman-Benson, Eric Rizzo and Wayne Beaton for support and inspiration.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The newsreader project&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is the RCP application of the newsreader project (windows). Remember, it is still Alpha software. You can read and reply but not yet post. This will be fixed in a couple of days.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Follow me on &lt;a href="http://twitter.com/wimjongman"&gt;http://twitter.com/wimjongman&lt;/a&gt; for last minute info on the newsreader or check the Eclipse wiki for detailled info: &lt;a href="http://wiki.eclipse.org/Newsreader"&gt;http://wiki.eclipse.org/Newsreader&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.remainsoftware.com/salvo.zip"&gt;salvo.zip&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is pretty simple but here is a &lt;a href="http://screencast.com/t/haj4Jba9"&gt;five minute instruction&lt;/a&gt; without audio:&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-8653677495987029102?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/8653677495987029102/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/05/community-is-superclass-of-economy.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/8653677495987029102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/8653677495987029102'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/05/community-is-superclass-of-economy.html' title='Community is a superclass of Economy'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-3326667114196716610</id><published>2009-04-29T20:22:00.000+02:00</published><updated>2009-04-29T20:36:30.744+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Getting more out of the Ecosystem (1) - Bugzilla</title><content type='html'>&lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 15pt; font-family: georgia;"&gt;&lt;span style="color: rgb(51, 51, 51);font-size:78%;" &gt;&lt;span class="Apple-style-span"&gt;This is a series of suggestions on how we can grow the Eclipse Ecosystem. Now the economic situation is a bit slower, I get questions about our yearly $5000 contribution. Why don't we just _take_ Eclipse, like the rest of the world&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:78%;" &gt;.  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 15pt; font-family: georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;Who are our users?&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;I believe that we should know our users. It is great that we know that China is #1 with more than a billion downloads, but who are these guys and how are they using Eclipse? Can we get in contact with them so that we can do business together? No, becasue we don't know who they are. &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 15pt; font-family: georgia;"&gt;&lt;span style=";font-size:100%;" &gt;Does Microsoft know who every Visual Studio user is? No, they do not have a clue (just joking haha, it _is_ a joke to think that Microsoft does not know their users.) Of course they do, our company is one of them and sure we get a lot of spam but every now and then we get some&lt;/span&gt;&lt;span style=";font-size:100%;" &gt; &lt;/span&gt;&lt;span style=";font-size:100%;" &gt;&lt;a href="http://en.wikipedia.org/wiki/Spam_%28Monty_Python%29"&gt;&lt;span style="color:blue;"&gt;eggs and sausages&lt;/span&gt;&lt;/a&gt;. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 15pt; font-family: georgia;"&gt;&lt;span style=";font-size:100%;" &gt;Does Sun know the Netbeans users? I don't know but&lt;/span&gt;&lt;span style=";font-size:100%;" &gt; &lt;/span&gt;&lt;span style=";font-size:100%;" &gt;&lt;a href="http://www.netbeans.org/downloads/"&gt;&lt;span style="color:blue;"&gt;their download page&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-size:100%;" &gt; &lt;/span&gt;&lt;span style=";font-size:100%;" &gt;attempts to reap the low hanging fruit. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 15pt; font-family: georgia;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style=""&gt;A Bugzilla Account is Mandatory&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;I suggest to only allow downloads after the user has registered for a bugzilla account. In this registration we do like Sun does and ask these users if we may contact them. In Jax Germany I attended one of Wayne Beaton's sessions and he asked a group of about 40 people who had a bugzilla account, about 5 raised their arm. Now Jax Germany  is a 1500-dollar-entrance-fee event. Why don't these guys have a bugzilla account?  And why is it called a bugzilla account and not an Eclipse account?&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 15pt; font-family: georgia;"&gt;&lt;span style=";font-size:100%;" &gt;&lt;o:p&gt;With our known users we can do all sorts of things. &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol style="font-family: georgia;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-size:100%;" &gt;Send them information about Eclipse Projects&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-size:100%;" &gt;Send them information about the traning series&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-size:100%;" &gt;Give Marketing information to the Members (us)&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-size:100%;" &gt;Ask if they want to be an Eclipse Member&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-size:100%;" &gt;your input here&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: 15pt; font-family: georgia;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);font-size:100%;" &gt;People won't mind because they want to be part of Eclipse. They would rather hear from Eclipse than to be left alone. And remember, &lt;a href="https://bugs.eclipse.org/bugs/createaccount.cgi"&gt;&lt;span style="color: rgb(153, 153, 153); text-decoration: none;"&gt;A bugzilla account is just one click away.&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: georgia;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-3326667114196716610?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/3326667114196716610/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/04/getting-more-out-of-ecosystem-1.html#comment-form' title='3 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/3326667114196716610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/3326667114196716610'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/04/getting-more-out-of-ecosystem-1.html' title='Getting more out of the Ecosystem (1) - Bugzilla'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-6005586967951411497</id><published>2009-04-29T17:51:00.000+02:00</published><updated>2009-04-29T18:22:33.585+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Eclipse Demo Camp in the Netherlands</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_B0Womsag0K0/Sfh8PS5RDgI/AAAAAAAAABQ/p1vWxvQ2gpg/s1600-h/oktober+2007+084.JPG"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 160px; height: 120px;" src="http://1.bp.blogspot.com/_B0Womsag0K0/Sfh8PS5RDgI/AAAAAAAAABQ/p1vWxvQ2gpg/s320/oktober+2007+084.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5330146761204895234" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Demo Camp in the Netherlands&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Industrial-TSI will be organizing the third Eclipse Democamp in the Netherlands. We have compiled a little survey so that you can indicate what you want to see. &lt;a href="http://www.surveymonkey.com/s.aspx?sm=h7rjHmDScMqbIRvJpiBpUQ_3d_3d"&gt;The survey can be found here.&lt;/a&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Get a Bugzilla Account&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;In addition to this, Dutch Eclipse lovers, you can can submit a short talk about your favourite Eclipse related topic &lt;a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Galileo_2009/Utrecht"&gt;on the Eclipse Democamp Wiki.&lt;/a&gt; You need a bugzilla account to change the wiki. The bugzilla account can also be used to respond to bugs or report new ones. All Eclipse users should get one. &lt;a href="https://bugs.eclipse.org/bugs/createaccount.cgi"&gt;A bugzilla account is just one click away.&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 18px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-6005586967951411497?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/6005586967951411497/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/04/eclipse-demo-camp-in-netherlands.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/6005586967951411497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/6005586967951411497'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/04/eclipse-demo-camp-in-netherlands.html' title='Eclipse Demo Camp in the Netherlands'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_B0Womsag0K0/Sfh8PS5RDgI/AAAAAAAAABQ/p1vWxvQ2gpg/s72-c/oktober+2007+084.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-3142327064504921354</id><published>2009-03-19T23:22:00.000+01:00</published><updated>2009-03-20T00:19:38.785+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Change'/><category scheme='http://www.blogger.com/atom/ns#' term='SCCM'/><title type='text'>The Super Pattern of Order</title><content type='html'>&lt;h2&gt;The Super Pattern of Order&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;Humans like to order stuff. This is done by putting it somewhere where (we think) we can find it again. We have houses with rooms and closets with drawers. We have pockets, briefcases, safes, bank accounts, wallets, shelves, etcetera. Each location is meant to store something that fits in that location. Socks go in drawers, closets go in rooms and money goes in wallets.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There is also a place for electronic documents. These locations often have metaphorical names like directory, folder, archive, “zip”, library or cabinet, to name a few. &lt;/p&gt;  &lt;h2&gt;Enables us to Locate Stuff&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;To find socks, I got to my closet where I open the drawer that contains my socks.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;To find this document, I go to my computer, open my home folder and there it is. To find stuff we need a way to address it. My document can be addressed by three parameters. 1, the computer, 2 the folder and 3 the document name, or, in more abstract terms, the platform, the location and the name.&lt;/p&gt;  &lt;h2&gt;So that we can Manage it&lt;/h2&gt;  &lt;p class="MsoNormal"&gt;What we want to do with electronic documents is to move them around. This document for example wants to leave my computer.&lt;span style="mso-spacerun:yes"&gt;  &lt;/span&gt;And it has, apparently, otherwise you would not be reading this. The reason for moving it around is that I want to get it from the initial location where it was developed to our QA department where it was reviewed to the final location where you found it (to tell you the truth, it did not go through QA). &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;h2&gt;Just to make Sure&lt;/h2&gt;&lt;div&gt;I could just simply type the document, e-mail it to QA and let them forward it to the final place on the location where you found it. This model is based on trust and although I fully trust our QA department (hi guys!) I would want to have some control over the fact that my document completes its lifecycle (i.e. ends on its final destination). &lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold;font-size:24px;"&gt;That we don't Lose it&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;And then, after I have received lots of comments, I want to maybe change it to mask the fact that I am not a native speaker and replace it on every final location with the new version.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-3142327064504921354?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/3142327064504921354/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/03/super-pattern-of-order.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/3142327064504921354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/3142327064504921354'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/03/super-pattern-of-order.html' title='The Super Pattern of Order'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4740251930569090138.post-3915491718717226514</id><published>2009-03-16T16:16:00.000+01:00</published><updated>2009-03-16T16:31:59.012+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='OSGi'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><title type='text'>Package naming convention in a mixed Java and OSGi world</title><content type='html'>&lt;div&gt;The "standard" before OSGi was to move all internal stuff into *internal* packages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;IBM uses the *internal* approach in the ready for rational program:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;Requirement: General 2.5&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic; "&gt;a)      Provide a list of non-public Eclipse interfaces and the methods used by your offering...&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This means that IBM exports *internal* packages and asks for a rationale if you use one of its internal classes. This approach enables you to:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;point the programmers to the correct way to use the software&lt;br /&gt;     &lt;span class="Apple-style-span" style="font-style: italic;"&gt;OR&lt;/span&gt; &lt;/li&gt;&lt;li&gt;move the class out of internal and into the official API.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;In OSGi, if you do not export a package, the programmer cannot access it. However, this breaks the important aspect that programmers sometimes use your classes in ways you did not envision. So you also export packages that could be interesting and only hide the absolutely non API packages.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, if you want to use the jar outside of OSGi then there is no way of hiding the absolute non-API packages and also no way of recognizing that the package is off limits. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Conclusion: there should be a new naming convention providing for three levels of package visibility. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;API,  dom.organization.soandso&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Not intended to be API dom.organization.&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;internal&lt;/span&gt;&lt;/span&gt;.soandso&lt;/li&gt;&lt;li&gt;Absolutely not API dom.organization.&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;private&lt;/span&gt;&lt;/span&gt;.soandso&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4740251930569090138-3915491718717226514?l=industrial-tsi-wim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://industrial-tsi-wim.blogspot.com/feeds/3915491718717226514/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/03/package-naming-convention-in-mixed-java.html#comment-form' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/3915491718717226514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4740251930569090138/posts/default/3915491718717226514'/><link rel='alternate' type='text/html' href='http://industrial-tsi-wim.blogspot.com/2009/03/package-naming-convention-in-mixed-java.html' title='Package naming convention in a mixed Java and OSGi world'/><author><name>Wim Jongman</name><uri>http://www.blogger.com/profile/10771216547823629599</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://1.bp.blogspot.com/_B0Womsag0K0/Sb6d6kEyvYI/AAAAAAAAAAs/juz2noVK4Qo/S220/wim.jpg'/></author><thr:total>0</thr:total></entry></feed>
