<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" gd:etag="W/&quot;DEUDQn0-cCp7ImA9WxJSFUw.&quot;"><id>tag:blogger.com,1999:blog-17547394</id><updated>2009-05-05T04:37:53.358-05:00</updated><title>Boris Bokowski</title><subtitle type="html">This blog is not intended to be implemented or extended by clients.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/BorisBokowski" type="application/atom+xml" /><entry gd:etag="W/&quot;DkQCRnc8cCp7ImA9WxVUFUU.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-2318713048407644208</id><published>2009-03-20T16:11:00.005-05:00</published><updated>2009-03-20T16:26:07.978-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-20T16:26:07.978-05:00</app:edited><title>Thank you!</title><content type="html">I am looking forward to attending my first &lt;a href="http://www.eclipse.org/org/press-release/20090320_EclipseBoard.php"&gt;Eclipse Board&lt;/a&gt; meeting on Monday. This first time, I will be a guest since my term of office starts in April. Unfortunately, I can only attend the second half because I am co-presenting a tutorial in the morning. Sorry about that, it won't happen again. ;-)&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thanks to all who voted!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-2318713048407644208?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/2318713048407644208/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=2318713048407644208" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/2318713048407644208?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/2318713048407644208?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2009/03/thank-you.html" title="Thank you!" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;C0MEQnw8eSp7ImA9WxVUFUw.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-1814324866302361553</id><published>2009-03-19T19:59:00.003-05:00</published><updated>2009-03-19T20:10:03.271-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-19T20:10:03.271-05:00</app:edited><title>RCP Mail 2.0</title><content type="html">&lt;div&gt;Come to &lt;a href="http://www.eclipsecon.org/2009/sessions?id=641"&gt;our EclipseCon 2009 tutorial&lt;/a&gt; (Monday March 23, 8:00 - 12:00) if you would like to learn about best practices for data binding, commands/handlers/contributions, and the common navigator. Bring your laptop with a copy of &lt;a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5M6-200903130100/index.php"&gt;Eclipse SDK 3.5 M6&lt;/a&gt; for the hands-on excercises!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Three RCP practitioners, and three Platform UI committers for a total of six people will help you understand and build RCP Mail 2.0. Should be fun!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9mAUrmH9eMo/ScLqk8cN2sI/AAAAAAAABic/RNS1CbA7EA8/s1600-h/rcpmail2-splash.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 242px;" src="http://1.bp.blogspot.com/_9mAUrmH9eMo/ScLqk8cN2sI/AAAAAAAABic/RNS1CbA7EA8/s400/rcpmail2-splash.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5315068430671272642" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-1814324866302361553?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/1814324866302361553/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=1814324866302361553" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/1814324866302361553?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/1814324866302361553?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2009/03/rcp-mail-20.html" title="RCP Mail 2.0" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_9mAUrmH9eMo/ScLqk8cN2sI/AAAAAAAABic/RNS1CbA7EA8/s72-c/rcpmail2-splash.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;CUMNR388eCp7ImA9WxVWFE8.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-1348243402368185833</id><published>2009-02-23T16:10:00.001-05:00</published><updated>2009-02-23T16:11:36.170-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-23T16:11:36.170-05:00</app:edited><title>2009 Eclipse Board of Directors</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;a href="https://foundation.eclipse.org/vote2009"&gt;&lt;img src="http://www.eclipse.org/membership/vote2008/vote.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;You have probably seen &lt;a href="http://dev.eclipse.org/mhonarc/lists/eclipse.org-members-committers/msg00005.html"&gt;Mike's email&lt;/a&gt; - the elections for &lt;a href="http://www.eclipse.org/org/elections/nominees.php"&gt;committer representatives&lt;/a&gt; for the Eclipse Board of Directors is now open.&lt;div&gt;&lt;br /&gt;&lt;div&gt;Rather than explaining why you should vote for me :-), I thought it would be useful to summarize the key election facts:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;You are voting for a one-year term starting April 2009. Voting is open as of today, for three weeks until March 13, 3 pm Eastern time. Check out the &lt;a href="http://www.eclipse.org/org/elections/nominees.php"&gt;committer candidates&lt;/a&gt; and their vision statements.&lt;/li&gt;&lt;li&gt;To vote, check the email you received from emo@eclipse.org on Feb 20, 2009. It contains the &lt;a href="https://foundation.eclipse.org/vote2009/"&gt;URL&lt;/a&gt; for voting, as well as the required voting password.&lt;/li&gt;&lt;li&gt;The Board will have 24 directors, as follows:&lt;ul&gt;&lt;li&gt;Sixteen directors for the &lt;a href="http://www.eclipse.org/membership/showMembersWithTag.php?TagID=strategic"&gt;strategic members&lt;/a&gt;, one seat per member.&lt;/li&gt;&lt;li&gt;Four directors from "&lt;a href="http://www.eclipse.org/membership/vote2008/"&gt;sustaining members&lt;/a&gt;". There are nine candidates, and sustaining members (companies) get to vote. This is the old "add-in providers" category but generalized to include "enterprise members" in the future.&lt;/li&gt;&lt;li&gt;Four directors representing the committers. There are six &lt;a href="http://www.eclipse.org/org/elections/nominees.php"&gt;committer candidates&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Each committer has one vote. Here are some important details:&lt;ul&gt;&lt;li&gt;Committers who are employed by a member company can go ahead and vote. Note though that all votes from one company will be &lt;a href="http://ed-merks.blogspot.com/2008/02/one-committer-one-vote.html"&gt;collapsed into a single vote&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style=""&gt;Individual committers, if they have not done so yet, must sign a membership agreement in order to be able to vote&lt;/span&gt;. To understand why this is required, read &lt;a href="http://www.eclipse.org/membership/become_a_member/committer.php"&gt;this page&lt;/a&gt;, then read &lt;a href="http://www.eclipse.org/membership/become_a_member/membershipProcess.php"&gt;this page&lt;/a&gt; to make sure you fill out &lt;a href="http://www.eclipse.org/org/documents/Eclipse%20MEMBERSHIP%20AGMT%202008_04_16%20Final.pdf"&gt;the form&lt;/a&gt; correctly. No voting privileges without signing the form!&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;In previous years, &lt;a href="http://milinkovich.blogspot.com/2008/03/election-results.html"&gt;turnout was pretty low&lt;/a&gt; - for example in 2008, only 148 of about 1,000 committers cast their vote. More votes will add weight to the positions of the committer representatives, so please vote now!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is more than one &lt;a href="http://www.eclipsesoccerclub.com/board.shtml"&gt;Eclipse Board of Directors&lt;/a&gt;, so be careful not to confuse the different &lt;a href="http://www.firstcolonysoccer.com/club_pages/documents/Board_Volunteer_Document_08.pdf"&gt;board elections&lt;/a&gt;. ;-)&lt;/li&gt;&lt;/ul&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/17547394-1348243402368185833?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/1348243402368185833/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=1348243402368185833" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/1348243402368185833?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/1348243402368185833?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2009/02/2009-eclipse-board-of-directors.html" title="2009 Eclipse Board of Directors" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;CEQBQXc_fSp7ImA9WxVXGUw.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-919910618557836363</id><published>2009-02-17T18:07:00.000-05:00</published><updated>2009-02-17T18:12:30.945-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-17T18:12:30.945-05:00</app:edited><title>Eclipse in the Cloud</title><content type="html">&lt;div&gt;&lt;div&gt;About a year ago, at EclipseCon, we showed a demo of how the Eclipse IDE could look like if it was browser-based, talking to an Eclipse server "in the cloud". The reactions were lukewarm: "Looks cool, but &lt;a href="http://www.infoq.com/news/2008/05/e4-summit#view_23644"&gt;why&lt;/a&gt; would I want to run an IDE in a browser?" "I have &lt;a href="http://www.lemmster.de/blog/index.php/2008/03/20/173/#comment-23615"&gt;yet to see&lt;/a&gt; web enabled IDEs as an industry trend".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This industry trend is now starting to happen.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;On Thursday, Mozilla and their new &lt;a href="http://labs.mozilla.com/2008/10/developer-tools-and-the-open-web/"&gt;developer tools lab&lt;/a&gt; launched Bespin, an "&lt;a href="http://labs.mozilla.com/projects/bespin/"&gt;experiment proposing an open, extensible web-based framework for code editing&lt;/a&gt;". Within a few days, 30,000 people logged into their public server, 400 people joined their discussion group, about 50 bugs were filed, several of them with patches, and many articles, blogs and even a Wikipedia entry were written. Congratulations, &lt;a href="http://galbraiths.org/blog/"&gt;Ben&lt;/a&gt; and &lt;a href="http://almaer.com/blog/"&gt;Dion&lt;/a&gt; of Mozilla (and Ajaxian fame), on the successful launch!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We looked at Bespin and asked, wouldn't it be great if Eclipse could play in this space too? Wouldn't it be cool if we could implement a Bespin server using Eclipse plug-ins that already exist?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well... that Eclipse-based Bespin server is available now, after two days of development!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://dev.eclipse.org/mhonarc/lists/e4-dev/msg00398.html"&gt;Simon Kaegi&lt;/a&gt; and I locked ourselves into a room and just implemented it. Today, we are declaring success, and are sharing the code as part of the e4 project with anyone interested. If you would like to give it a spin, check out &lt;a href="http://wiki.eclipse.org/E4/Bespin"&gt;this wiki page&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Eclipse IDE, as you know it, is an OSGi-based application, and is built entirely out of components (called plug-ins or bundles). Many of these components can run headless, on a server, such as the underlying resource model, the incremental Java compiler, etc. Using the headless components, it was very easy to implement the Bespin client-server API. Like Mozilla's Bespin server, our server supports browsing files and folders, and editing files. In addition to that, we implemented extra features such as showing compile errors and warnings, and checking out projects from CVS servers using anonymous CVS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bespin already shows a lot of promise at this early stage. It consists of a surprisingly fast code editor written in JavaScript using Canvas, a file browser, and an emacs-like command line interface for issuing commands. There are two backend implementations provided by Mozilla, one in Python, and one in Java, and the browser-based client talks to the server using a RESTy API. Here is how it looks like:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_9mAUrmH9eMo/SZsk5j0a2hI/AAAAAAAABcw/uPXbXP5rftk/s1600-h/bespin-eclipse.png"&gt;&lt;img src="http://2.bp.blogspot.com/_9mAUrmH9eMo/SZsk5j0a2hI/AAAAAAAABcw/uPXbXP5rftk/s400/bespin-eclipse.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5303873557445138962" style="cursor: pointer; width: 400px; height: 346px; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you would like to play with the Eclipse Bespin server, or work with us on it, check our &lt;a href="http://wiki.eclipse.org/E4/Bespin"&gt;wiki page&lt;/a&gt;. If there are any questions, hop on &lt;a href="http://wiki.eclipse.org/IRC"&gt;IRC&lt;/a&gt;, where we can be found on &lt;a href="irc://irc.freenode.net/#eclipse-e4"&gt;#eclipse-e4/irc.freenode.net&lt;/a&gt; or &lt;a href="irc://irc.mozilla.org/#bespin"&gt;#bespin/irc.mozilla.org&lt;/a&gt; as borisb6i and skaegi.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;P.S. Mozilla has a cool-looking and fast client, and Eclipse has a lot of experience with IDE features, and good amounts of code that can run headless. Sounds like a great opportunity for collaboration, doesn't it? Well, thanks to &lt;a href="http://dev.eclipse.org/blogs/mike/"&gt;Mike&lt;/a&gt; and the Eclipse Foundation who organized it, and Dion and Ben who are investing their time and some of Mozilla's travel money, we will have an in-person meeting on Thursday, in Ottawa, to talk about this. These guys are moving fast!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-919910618557836363?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/919910618557836363/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=919910618557836363" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/919910618557836363?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/919910618557836363?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2009/02/eclipse-in-cloud.html" title="Eclipse in the Cloud" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_9mAUrmH9eMo/SZsk5j0a2hI/AAAAAAAABcw/uPXbXP5rftk/s72-c/bespin-eclipse.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">16</thr:total></entry><entry gd:etag="W/&quot;C0IGQno8fCp7ImA9WxVQGEo.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-1962745938845780249</id><published>2009-02-05T16:51:00.002-05:00</published><updated>2009-02-05T17:05:23.474-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-05T17:05:23.474-05:00</app:edited><title>Bundle Marketplace: +1</title><content type="html">I fully agree with Gorkem Erkan that the Eclipse community should seriously consider building a &lt;a href="http://www.gorkem-ercan.com/2009/02/bundle-marketplace.html"&gt;bundle marketplace&lt;/a&gt;. In fact, I recently had the same idea (independently) as you can see &lt;a href="http://twitter.com/bokowski/status/1032571945"&gt;here&lt;/a&gt; on Twitter.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the Eclipse context, that bundle marketplace would probably consist of multiple overlapping sub-markets... with every Eclipse-based application defining a sub-market. For example, bundles that work with the Eclipse IDE, bundles that work with the Flex IDE, or the SAP IDE, or with IBM's Rational tools such as Team Concert. Also, at the RCP level, vendors could offer a basic application for free and offer upgrades as additional for-pay bundles.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think this an exciting idea. What do we need to do to make it happen? Would the &lt;a href="http://www.eclipse.org/org/elections/"&gt;Eclipse Board of Directors&lt;/a&gt; support this? Which members of the Eclipse community (other than &lt;a href="http://www.threeriversinstitute.org/junitmax/subscribe.html"&gt;Kent Beck&lt;/a&gt; ;-) ) would benefit the most, short-term?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking forward to your comments.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-1962745938845780249?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/1962745938845780249/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=1962745938845780249" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/1962745938845780249?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/1962745938845780249?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2009/02/bundle-marketplace-1.html" title="Bundle Marketplace: +1" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUcFQnkzfSp7ImA9WxRXEUU.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-3155902610913461403</id><published>2008-10-16T11:48:00.000-05:00</published><updated>2008-10-16T13:50:13.785-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-16T13:50:13.785-05:00</app:edited><title>Are you listening?</title><content type="html">&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;&lt;div&gt;Did you know that the Eclipse SDK alone has over 250 different listener interfaces? In the following screenshot, look at the size of the scrollbar slider!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_9mAUrmH9eMo/SNr8wzRrgvI/AAAAAAAAAq0/qIavMv8wIOk/s1600-h/listeners.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_9mAUrmH9eMo/SNr8wzRrgvI/AAAAAAAAAq0/qIavMv8wIOk/s400/listeners.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5249786230982017778" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is only the tip of the iceberg - corresponding to all these listener interfaces, there are about 250 different Event classes. This is so that later on, additional event data can be added without breaking binary API compatibility by passing a dedicated event object to the listener. (&lt;a href="http://borisoneclipse.blogspot.com/2008/09/accidental-complexity.html"&gt;Remember&lt;/a&gt; that where we forgot to use event objects, we ended up with warts like IPerspectiveListener4.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To top it off, there are probably about 500 methods for adding and removing all these kinds of listeners. addLaunchLabelChangedListener/removeLaunchLabelChangedListener, addLocalSiteChangedListener/removeLocalSiteChangedListener, addLogEntryListener/removeLogEntryListener and so on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the end, when you think about it at a more abstract level, there are only a couple of possible changes that can happen in a program. A value can change, from an old value to a new value. A set can change, by adding or removing elements. A list can change, by adding elements at a certain index, removing elements at an index, or moving or replacing elements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How about we use only three listener interfaces, IValueChangeListener, ISetChangeListener, and IListChangeListener? Or we settle on something that looks like &lt;a href="http://www.eclipse.org/emf"&gt;EMF&lt;/a&gt;'s &lt;a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.emf.doc/references/javadoc/org/eclipse/emf/common/notify/Notification.html"&gt;notification API&lt;/a&gt;. We might need pre- and post-notifications, and maybe also changes to maps, so the resulting number of listener interfaces might be closer to ten. Definitely not 500 - and I only looked at the base Eclipse SDK...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What do you think? Can we make the Eclipse API more consistent and uniform in this way? Do you agree that all these domain-specific listener interfaces, each with a corresponding event class, and add/remove methods, are a source of &lt;a href="http://borisoneclipse.blogspot.com/2008/09/accidental-complexity.html"&gt;accidental complexity&lt;/a&gt;, and settling on a small number of generic listener APIs can reduce &lt;a href="http://dev.eclipse.org/mhonarc/lists/eclipse-incubator-e4-dev/msg00838.html"&gt;code bloat&lt;/a&gt;?&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-3155902610913461403?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/3155902610913461403/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=3155902610913461403" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3155902610913461403?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3155902610913461403?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/10/are-you-listening.html" title="Are you listening?" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_9mAUrmH9eMo/SNr8wzRrgvI/AAAAAAAAAq0/qIavMv8wIOk/s72-c/listeners.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total></entry><entry gd:etag="W/&quot;DUYFSX05eyp7ImA9WxRQFE4.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-3571233524785867569</id><published>2008-10-07T15:30:00.000-05:00</published><updated>2008-10-07T22:38:38.323-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-10-07T22:38:38.323-05:00</app:edited><title>Avoiding Bloat</title><content type="html">Martin Oberhuber asked on the e4 mailing list what had happened to the pervasive architectural themes that were identified at the summit, such as reducing bloat, too many listeners, and becoming more asynchronous. I started writing a response, focusing on one of the topics, bloat, and it quickly became more than just an email response so I am posting it here.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Before we go into the details, let me state the obvious: It is pretty much guaranteed that we will cause more bloat, overall, for the case of the Eclipse SDK based on the new e4 platform, as long as that SDK still contains 3.x plug-ins that require compatibility layers. This is because all the old (bloated?) functionality and the new (lean?) functionality will be there at the same time.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_9mAUrmH9eMo/SOwm94IIBiI/AAAAAAAAAr8/wQ-QUokQeyQ/s1600-h/Copy+of+DSC00685.JPG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_9mAUrmH9eMo/SOwm94IIBiI/AAAAAAAAAr8/wQ-QUokQeyQ/s400/Copy+of+DSC00685.JPG" alt="" id="BLOGGER_PHOTO_ID_5254617709714867746" border="0" /&gt;&lt;/a&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;It seems the best we can do is to avoid bloating the new platform itself, when it is used without any compatibility layers. Unfortunately, we have all these cool new technologies that we would like to use - EMF, CSS, declarative UIs, data binding, cross-compiling of Java to ActionScipt, being able to use multiple languages, client-server split, etc. Put them together and the likely result is bloat. Or is there a way to avoid bloat and use cool new technology at the same time?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;So what is bloat? Let's look at &lt;a href="http://en.wikipedia.org/wiki/Software_bloat"&gt;Wikipedia's definition of software bloat&lt;/a&gt; (thanks John Arthorne for pointing me to it):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Software bloat&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;, also known as &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;bloatware&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt; or &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;elephantware&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;, is a term used in both a neutral and disparaging sense, to describe the tendency of newer computer programs to be larger, or to use larger amounts of system resources (mass storage space, processing power or memory) than necessary for the same or similar benefits from older versions to its users.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Let me dive into one concrete example, to show why this is a hard problem:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;Code bloat through redundancy, caused by low-level API&lt;/span&gt; occurs when clients of a low-level API have to write the same boilerplate code over and over again. Think of all the code we have to write for SWT layouts, for example:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Composite contents = new Composite(parentComposite, SWT.NONE);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;contents.setLayoutData(new GridData(GridData.FILL_BOTH));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;GridLayout layout = new GridLayout();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;layout.numColumns = 2;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;contents.setLayout(layout);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Label label = new Label(contents, SWT.LEFT);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;label.setText(WorkbenchMessages.FileExtension_fileTypeLabel);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;GridData data = new GridData();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;data.horizontalAlignment = GridData.FILL;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;label.setLayoutData(data);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;filenameField = new Text(contents, SWT.SINGLE | SWT.BORDER);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;data = new GridData();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;data.horizontalAlignment = GridData.FILL;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;data.grabExcessHorizontalSpace = true;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;filenameField.setLayoutData(data);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Whenever there is a low-level way of doing things, you can come up with a higher-level way and reduce the code size. Of course, you are only reducing the overall code size when the higher-level abstraction is used widely enough to amortize the cost of its implementation. In our SWT layout example, you could write instead:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;Composite contents = new Composite(parentComposite, SWT.NONE);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;contents.setLayoutData(new GridData(GridData.FILL_BOTH));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;new Label(contents, SWT.LEFT).setText(label);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;filenameField = new Text(contents, SWT.SINGLE | SWT.BORDER);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;Point defaultMargins = LayoutConstants.getMargins();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;GridLayoutFactory.fillDefaults().numColumns(2).margins(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;font-size:85%;" &gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=";font-family:'courier new';font-size:85%;"  &gt;&lt;span class="Apple-style-span"&gt;defaultMargins.x, defaultMargins.y).generateLayout(contents);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;Now this is looking a lot shorter, and maybe even more elegant. However, even if &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;GridLayoutFactory&lt;/span&gt; is used widely enough to amortize the additional footprint caused by its implementation, there are still two problems: first, the original code ran faster, and second, you now have to learn two APIs - the higher-level one, and the lower-level one when the abstraction gets in your way.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can see where I am going - there is no clear cut solution to this. It is really a hard problem, and in many cases, we will have to trade off one of the factors disk size, memory size, CPU consumption against the others.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9mAUrmH9eMo/SOwlmAgS--I/AAAAAAAAAr0/ggOfER24a34/s1600-h/Copy+of+DSC00889.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_9mAUrmH9eMo/SOwlmAgS--I/AAAAAAAAAr0/ggOfER24a34/s400/Copy+of+DSC00889.JPG" alt="" id="BLOGGER_PHOTO_ID_5254616200135244770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Taking it just a little further, here is another idea, taken from the &lt;a href="http://en.wikipedia.org/wiki/Code_bloat"&gt;wikipedia article on code bloat&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-style: italic;"&gt;The difference in code density between various languages is so great that often less memory is needed to hold both a program written in a "compact" language (such as a domain-specific programming language, Microsoft P-Code, or threaded code), plus an interpreter for that compact language (written in native code), than to hold that program written directly in native code.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So if we had a domain-specific language for creating SWT widgets and specifying their layout, we could get away with no Java code at all! I don't know if the .class file is a space efficient encoding for SWT widget hierarchies and layouts, but even if it is, consider this: The byte code for creating the widgets will stay in memory for as long as its class is referenced. Chances are that this will be a very long time; at least for the time that particular part of the UI is materialized somewhere. By comparison, if we had a domain-specific language, it would have to be read once to create the widgets and layout, after which the memory could be freed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So maybe we can have our cake and eat it too!  After thinking about this a bit, I am all excited about using cool new technologies, as long as they don't cause bloat.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_9mAUrmH9eMo/SOwiVEMiPYI/AAAAAAAAArs/GKb6L4Q0xVI/s1600-h/Copy+of+DSC06054.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_9mAUrmH9eMo/SOwiVEMiPYI/AAAAAAAAArs/GKb6L4Q0xVI/s400/Copy+of+DSC06054.JPG" alt="" id="BLOGGER_PHOTO_ID_5254612610533440898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We also have to be very carfeful not to use multiple redundant technologies to achieve the same thing, because that is another source of bloat. As in, for example, letting everyone plug in their favourite domain specific language for creating SWT widgets and layouts. This kind of redundancy would be just as bad as redundancy through repetitive boilerplate code, so let's pick one way of doing declarative UIs!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that there are lots of other sources of bloat, for example, unneeded functionality, too many layers of abstraction, or unnecessary flexibility. I am running out of time but it is probably interesting to think about these as well. I'd like to know if you have any pointers for me in the comments!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If avoiding bloat is one of the goals of e4, we need to keep this goal in mind all the time. Every bit of functionality should be pulling its own weight. For example, do not add convenience API unless its additional weight can be justified by reduced weight somewhere else.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I believe we should start watching our weight from the very beginning, and from time to time, it is probably healthy to discuss the weight of the various pieces. I can't wait until we have some kind of continuous build in place, so that we can make it visible for everyone how big (or small!) the components are, and how they are growing (or shrinking!) over time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We could also borrow some ideas from the business world and introduce budgets. You want to provide a component for declarative UI? How about you get an allowance of 300 K? Would that be enough?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What do you think?&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/17547394-3571233524785867569?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/3571233524785867569/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=3571233524785867569" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3571233524785867569?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3571233524785867569?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/10/avoiding-bloat.html" title="Avoiding Bloat" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_9mAUrmH9eMo/SOwm94IIBiI/AAAAAAAAAr8/wQ-QUokQeyQ/s72-c/Copy+of+DSC00685.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">11</thr:total></entry><entry gd:etag="W/&quot;AkUBRH86eSp7ImA9WxRRE0s.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-6323554618318168270</id><published>2008-09-25T13:38:00.000-05:00</published><updated>2008-09-25T13:44:15.111-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-25T13:44:15.111-05:00</app:edited><title>Accidental Complexity</title><content type="html">&lt;div&gt;&lt;div&gt;You can blame bit rot, API backwards compatibility, plain stupidity, or that we just didn't know any better at the time. Whatever the cause, we have introduced a good deal of accidental complexity over the last eight years or so, and with e4, we have a chance to reduce this or get rid of the "accidental" part altogether.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some examples. If you know of other examples, please let me know!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First example: We have lots of early attempts to define &lt;a href="http://wiki.eclipse.org/API_Central"&gt;API&lt;/a&gt; that had to be tweaked later; to see what I mean, press Ctrl+T for the Open Type dialog and enter 'I*2&lt;' to see all the interfaces where we had to introduce a second and hopefully better version. Like IPerspectiveListener2, which was introduced in 3.0. This example is particularly embarassing, because we introduced IPerspectiveListener3 in 3.1. And, believe it or not, IPerspectiveListener4 in 3.2. Boy, am I glad that this has finally converged, or we would be looking at IPerspectiveListener7 in Eclipse 3.5. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_9mAUrmH9eMo/SNrvDKC6zZI/AAAAAAAAAqk/E-EClRbOJEk/s1600-h/Istar2lt.PNG"&gt;&lt;img src="http://3.bp.blogspot.com/_9mAUrmH9eMo/SNrvDKC6zZI/AAAAAAAAAqk/E-EClRbOJEk/s400/Istar2lt.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5249771153168977298" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Second example: The confusing (and &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=143727"&gt;untold&lt;/a&gt;) preferences story comes to mind, as a representative of a whole class of problems. Basically, whenever we ended up with many different ways to do the same thing, we were not able to remove old code because clients still depended on it. I am optimistic that the capabilities offered by the platform can be pared down to a manageable list. Ideally, down to something like twenty services, sometimes called "the twenty things" or the "Eclipse Application Model" in the context of e4. Like being able to persist data. Receive input. Produce selections. Schedule background work. Report progress. Provide pointers into the help system. Contribute to the menus and toolbars. And so on, but I don't have a full list at this point so I should write about it when I know more.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Third example: Like many other Java APIs, we live in a &lt;a href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html"&gt;kingdom of nouns&lt;/a&gt;. We are sometimes joking how Eclipse, for every concept, has an adapter, a factory, and a manager. And an adapter factory, and a factory manager. Sadly, this is not a joke at all. C&lt;span class="Apple-style-span" style="font-style: italic;"&gt;ontextManagerFactory&lt;/span&gt;. &lt;span class="Apple-style-span" style="font-style: italic;"&gt;ModifierHelperFactory&lt;/span&gt;. &lt;span class="Apple-style-span" style="font-style: italic;"&gt;AbstractRefactoringDescriptorResourceMapping&lt;/span&gt;. I wish I could make concrete suggestions for how we can improve on this, but I am afraid we need to look at these APIs in detail. It's just a gut feeling that names with three or more three nondescript nouns are making things more complicated than necessary. By the way, my mother tongue is German, so I should be used to putting many nouns together, but I still find something like &lt;span class="Apple-style-span" style="font-style: italic;"&gt;INodeAdapterFactoryManager&lt;/span&gt; is way over the top.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Fourth example: a good deal of complexity and bloat is caused by the proliferation of preference pages, leading to a countless number of lines of code that supports all the different combinations of all the supported preferences. Are we really helping our users by exposing and maintaining all these options?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_9mAUrmH9eMo/SNrywns_04I/AAAAAAAAAqs/mioAwBfgdQ4/s1600-h/preferences.PNG"&gt;&lt;img src="http://2.bp.blogspot.com/_9mAUrmH9eMo/SNrywns_04I/AAAAAAAAAqs/mioAwBfgdQ4/s400/preferences.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5249775232759092098" style="cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it for today. I'd love to hear what you think about this, or if you have more examples of accidental complexity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(Disclaimer: I am well aware that e4 will need to be backwards-compatible, so that 3.x plugins continue to run. When I wrote "get rid of" I meant something a little more subtle, as in "move it to compatibility plug-ins so that adopters of e4 don't have to worry about it when they develop new functionality.")&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/17547394-6323554618318168270?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/6323554618318168270/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=6323554618318168270" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6323554618318168270?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6323554618318168270?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/09/accidental-complexity.html" title="Accidental Complexity" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_9mAUrmH9eMo/SNrvDKC6zZI/AAAAAAAAAqk/E-EClRbOJEk/s72-c/Istar2lt.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">7</thr:total></entry><entry gd:etag="W/&quot;DU4ESXg9cCp7ImA9WxRSFUw.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-8041841902303696654</id><published>2008-09-15T16:27:00.004-05:00</published><updated>2008-09-15T17:31:48.668-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-15T17:31:48.668-05:00</app:edited><title>Better Than Newsgroups?</title><content type="html">For programming-related questions and answers, check out &lt;a href="http://stackoverflow.com/"&gt;stackoverflow.com&lt;/a&gt;, which launched today with a public beta.  It looks very interesting - a forum, crossed with digg (user-rated), wiki capabilities (user-edited), and delicious (tags).  The hope is that these three mechanisms will make the site more valuable over time, as questions are answered, rated, tagged, and edited for clarity.&lt;br /&gt;&lt;br /&gt;Currently, the site is a bit Microsoft-heavy. For example, C# has twice as many questions as Java, and EMF refers to the vector graphics "Enhanced Metafile Format".  Still, Eclipse is well represented with 58 questions compared to Netbeans with 5.&lt;br /&gt;&lt;br /&gt;I find it amazing to watch how questions come in at a rate of roughly one per minute, and how they get answered at a similar rate. It's just like on the EMF newsgroup, but so much more Web 2.0!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-8041841902303696654?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/8041841902303696654/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=8041841902303696654" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/8041841902303696654?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/8041841902303696654?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/09/better-than-newsgroups.html" title="Better Than Newsgroups?" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CkYCSH07cCp7ImA9WxRTFkg.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-6894436320608485308</id><published>2008-09-05T12:37:00.010-05:00</published><updated>2008-09-05T16:29:29.308-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-05T16:29:29.308-05:00</app:edited><title>Simply models</title><content type="html">I have been working on a small demo application that (when finished) is meant to be an exemplary RCP-style desktop application based on &lt;a href="http://wiki.eclipse.org/E4"&gt;e4&lt;/a&gt;. This is how it looks so far:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_9mAUrmH9eMo/SMGc4rWwc7I/AAAAAAAAAp8/UqbFiwhqylU/s1600-h/e4photo-flower.PNG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_9mAUrmH9eMo/SMGc4rWwc7I/AAAAAAAAAp8/UqbFiwhqylU/s400/e4photo-flower.PNG" alt="" id="BLOGGER_PHOTO_ID_5242643938760750002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;There is a very simple navigator on the left, a thumbnails view, and a preview area.&lt;br /&gt;&lt;br /&gt;As I wrote the application based on Eric's and Tom's work, I started by implementing a couple of views that I contributed to the new e4 Workbench through an extension point.&lt;br /&gt;&lt;br /&gt;Then I realized that all I need is an EMF model representing the parts that make up the UI: the views, the menu, and the toolbar.  I don't actually need any extension points, because my application is not an extensible IDE - it is a rich client application for which I know how the UI should be structured.  I am pretty happy about the end result - my application is fully described by one XMI file that I can edit using an editor for EMF models, and I can just go and modify that file if I want to rearrange views, add new ones, delete unnecessary ones, build my menu structure and so on.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_9mAUrmH9eMo/SMGfElsQmiI/AAAAAAAAAqE/Il2kZkJjjt4/s1600-h/e4photo-xmi.PNG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_9mAUrmH9eMo/SMGfElsQmiI/AAAAAAAAAqE/Il2kZkJjjt4/s400/e4photo-xmi.PNG" alt="" id="BLOGGER_PHOTO_ID_5242646342422010402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Compare this to how it works with the current 3.x Workbench: I would have to write a perspective extension, a couple of views extensions, a command extension, a menu and a toolbar extension. Then I would have to assign unique IDs to all these pieces, and to ensure that IDs match up properly. How many hours we've wasted in the past when IDs did not match up!&lt;br /&gt;&lt;br /&gt;Of course, this only works for closed applications, not for open and extensible ones like e.g. the Eclipse IDE.  However, it is still pretty useful to be able to reason about a concrete EMF model representing the UI application structure. For example, when you have lots of little pieces contributed by many plug-ins, we can now talk about what it means to produce that concrete model from the many little pieces.  One interesting question based on this is: Can we maybe generalize the many ad-hoc mechanisms we have grown over the last years (most of which involve matching up IDs) to something that is less ad-hoc and more general?&lt;br /&gt;&lt;br /&gt;It's been fun to work on this little application so far.  If you would like to participate, let us know on the &lt;a href="http://dev.eclipse.org/mhonarc/lists/eclipse-incubator-e4-dev/maillist.html"&gt;e4 mailing list&lt;/a&gt;, and/or attend the &lt;a href="http://www.google.com/calendar/embed?src=ctri5teoag0n87t2qu9bla8u3g%40group.calendar.google.com&amp;amp;ctz=Canada/Toronto"&gt;bi-weekly e4 conference calls.&lt;/a&gt;  You can always email me directly, of course.&lt;br /&gt;&lt;br /&gt;P.S. The code is available in CVS - check out the ui/demos project under /cvsroot/eclipse/e4-incubator to get the launch configuration and project set file (emf-workbench.psf).&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/17547394-6894436320608485308?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/6894436320608485308/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=6894436320608485308" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6894436320608485308?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6894436320608485308?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/09/simply-models.html" title="Simply models" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_9mAUrmH9eMo/SMGc4rWwc7I/AAAAAAAAAp8/UqbFiwhqylU/s72-c/e4photo-flower.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;DU8BRXw4fyp7ImA9WxdRFkU.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-3957967939230956155</id><published>2008-06-05T10:25:00.005-05:00</published><updated>2008-06-05T12:44:14.237-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-05T12:44:14.237-05:00</app:edited><title>Unpaid Volunteers Do Exist</title><content type="html">&lt;a href="http://eclipse-projects.blogspot.com/"&gt;Bjorn&lt;/a&gt; blogged about a recent discussion on the &lt;a href="http://www.eclipse.org/newsportal/article.php?id=41313&amp;amp;group=eclipse.platform.swt#41313"&gt;SWT&lt;/a&gt; and &lt;a href="http://www.eclipse.org/newsportal/article.php?id=1757&amp;amp;group=eclipse.foundation#1757"&gt;Foundation&lt;/a&gt; newsgroups, and claims that Eclipse does not do enough to attract unpaid volunteers.&lt;br /&gt;&lt;br /&gt;From my little corner of the ecosystem, I can offer a counterexample.  As of today, three of the nine active committers on the Eclipse Platform project's UI component (JFace, Workbench, IDE) are unpaid, part-time volunteers. It seems to be attractive enough to be a Platform committer, at least to some, resulting in 33% active Platform UI committers who are not employees of IBM.&lt;br /&gt;&lt;br /&gt;Interestingly, they are all 'unpaid volunteers' (this applies to two more who are not listed as active committers now but were active in the past).  They are independent consultants, employed software developers investing some of their spare time, or come from small companies that use Eclipse technology.  To me, this contradicts Bjorn's assumption that Eclipse is only 'paid volunteers'. In fact, I would like to understand why in the past, we haven't seen 'paid volunteer' people approach us because they want to contribute to the Platform.  (It looks like the e4 effort may change this.)&lt;br /&gt;&lt;br /&gt;I admit that we could be more open and transparent over just &lt;a href="http://wiki.eclipse.org/Platform_UI/How_to_Contribute"&gt;explaining how to contribute&lt;/a&gt;, and hanging out on &lt;a href="http://wiki.eclipse.org/IRC"&gt;IRC&lt;/a&gt; and the &lt;a href="http://www.eclipse.org/newsgroups/"&gt;newsgroups&lt;/a&gt;.  However, what we cannot do is invest a lot of time into contributors who only contribute once (as opposed to ongoing, even if it is part-time). Working with the community on their contributions takes a lot of time. This is why we invest more time on those who may turn into committers at some point: if/when they become committers, we can hope for a return on our time investment.&lt;br /&gt;&lt;br /&gt;By the way Bjorn, by disagreeing with one of the replies saying: "this is entirely a volunteer effort", you disagreed with an actual unpaid volunteer, one of the part-time non-IBM committers on the Platform UI component. Francis managed to break through the "glass wall", and the Rizzo Ceiling! I would recommed that you read &lt;a href="http://dev.eclipse.org/newslists/news.eclipse.foundation/msg01751.html"&gt;Francis' post&lt;/a&gt; again in this light. ;-P&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;A large part of the high barrier of entry and learning curve is inherent in what we do, and results from all the IP rules, process rules, API compatibility rules, accessibility rules, internationalization rules, performance considerations, architectural integrity considerations, and some more that I probably forgot. I don't think we can do much about this, but I agree with Francis that we need to get a lot better at encouraging contributions and contributors&lt;tt&gt;&lt;/tt&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-3957967939230956155?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/3957967939230956155/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=3957967939230956155" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3957967939230956155?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3957967939230956155?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/06/unpaid-volunteers-do-exist.html" title="Unpaid Volunteers Do Exist" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;A0YFRHs_eip7ImA9WxZUGEU.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-534006955983537761</id><published>2008-04-10T23:30:00.002-05:00</published><updated>2008-04-10T23:45:15.542-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-10T23:45:15.542-05:00</app:edited><title>e4 summit: May 22nd/23rd</title><content type="html">I hope that all interested parties are already subscribed to the &lt;a href="https://dev.eclipse.org/mailman/listinfo/eclipse-incubator-e4-dev"&gt;e4 mailing list&lt;/a&gt;. For those who are not, just an update that we now have a date (May 22nd/23rd, 2008) and a location (Ottawa) for the e4 summit, and that work on the agenda has started. If you are interested in working on the new Platform, please consider attending the summit and add yourself to &lt;a href="http://wiki.eclipse.org/E4/Summit"&gt;its wiki page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-534006955983537761?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/534006955983537761/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=534006955983537761" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/534006955983537761?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/534006955983537761?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/04/e4-summit-may-22nd23rd.html" title="e4 summit: May 22nd/23rd" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CE8NQnkzcSp7ImA9WxZWGUs.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-3759003221459224791</id><published>2008-03-19T12:57:00.006-05:00</published><updated>2008-03-19T16:41:33.789-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-19T16:41:33.789-05:00</app:edited><title>e4 pointers, and a teaser</title><content type="html">This is just a quick update for those who would like to contribute to e4, and those who would like to get our demo code to compile and run. I just updated the e4 wiki page (&lt;a href="http://wiki.eclipse.org/E4"&gt;wiki.eclipse.org/E4&lt;/a&gt;) with a link to the mailing list, and instructions on how you can run the demos.&lt;br /&gt;&lt;br /&gt;Oh, and here is a screenshot of the demo that was not shown in the Eclipse 4.0 talk. Come to the &lt;a href="http://www.eclipsecon.org/2008/?page=sub/&amp;amp;id=620"&gt;Eclipse 4.0 (e4) Kick Off BoF tonight&lt;/a&gt; to see it live:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_9mAUrmH9eMo/R-GIRhqP7bI/AAAAAAAAAdo/3DLpy5ovN7o/s1600-h/e4-web.png"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_9mAUrmH9eMo/R-GIRhqP7bI/AAAAAAAAAdo/3DLpy5ovN7o/s400/e4-web.png" alt="" id="BLOGGER_PHOTO_ID_5179570881127509426" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-3759003221459224791?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/3759003221459224791/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=3759003221459224791" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3759003221459224791?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3759003221459224791?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/03/e4-pointers-and-teaser.html" title="e4 pointers, and a teaser" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp0.blogger.com/_9mAUrmH9eMo/R-GIRhqP7bI/AAAAAAAAAdo/3DLpy5ovN7o/s72-c/e4-web.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total></entry><entry gd:etag="W/&quot;Ak8HQng7fSp7ImA9WxZXF0o.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-8683454935532075448</id><published>2008-03-05T22:42:00.004-05:00</published><updated>2008-03-05T23:47:13.605-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-05T23:47:13.605-05:00</app:edited><title>Pre-emptive snarky comment</title><content type="html">It appears I am &lt;a href="http://eclipse-projects.blogspot.com/2008/02/agreeing-with-microsoft.html"&gt;not the only one&lt;/a&gt; reading the "Old New Thing" blog from a Microsoft employee who sometimes ends his posts with pre-emptive snarky comments, like for example:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2008/03/04/8014284.aspx"&gt;"That's about all Microsoft is good for: making a song out of their critical stop and error tones."&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2008/02/26/7897723.aspx"&gt;"This is why Microsoft products suck."&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/oldnewthing/archive/2008/02/01/7362840.aspx"&gt;"Oh, right, just like the advertisements for Windows Vista, which said that The Wow Starts Now. I didn't feel any Wow."&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;I enjoy reading that blog, and not for the snarky comments. I find it interesting to read from someone who is working in a similar position but different context: there seem to be &lt;a href="http://blogs.msdn.com/oldnewthing/archive/2008/03/04/8014283.aspx"&gt;striking&lt;/a&gt; &lt;a href="http://blogs.msdn.com/oldnewthing/archive/2008/02/19/7784127.aspx"&gt;parallels&lt;/a&gt; with similar experiences we have made on the Eclipse Platform team.&lt;br /&gt;&lt;br /&gt;Anyway, it is time to make a pre-emptive snarky comment myself. It is not actually related to this blog entry. It is related to &lt;a href="http://dev.eclipse.org/mhonarc/lists/eclipse.org-committers/msg00504.html"&gt;an e-mail&lt;/a&gt; announcing the creation of a new component &lt;span style="font-weight: bold;"&gt;e4&lt;/span&gt; in the Eclipse Incubator project:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Just as I expected from those guys at IBM. We'll never see diversity in the Platform."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now that this is out of the way, here is the scoop: We want to make the code for our EclipseCon demos available in the open. We realized (admittedly, very late) that nobody from the SWT team had commit rights in the existing Eclipse Incubator project. Creating a new component in the Eclipse Incubator project was the fastest way to create a home for the experimental code that we will be demoing, with write access to everybody who has been involved so far.&lt;br /&gt;&lt;br /&gt;The key words are "so far" - our hope is to find more people and companies who would like to work with us on &lt;span style="font-weight: bold;"&gt;e4&lt;/span&gt; - our current name for the next-generation platform on which an Eclipse 4.0 can be built. To find out more about this, and to see the demos, come to these two talks at EclipseCon: &lt;a href="http://www.eclipsecon.org/2008/?page=sub/&amp;amp;id=223"&gt;Eclipse 4.0&lt;/a&gt;, and &lt;a href="http://www.eclipsecon.org/2008/?page=sub/&amp;amp;id=9"&gt;The Future of SWT&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;By the way, when I wrote "we", I was referring to people at IBM, Innoopract, and Code 9. So far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-8683454935532075448?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/8683454935532075448/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=8683454935532075448" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/8683454935532075448?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/8683454935532075448?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2008/03/pre-emptive-snarky-comment.html" title="Pre-emptive snarky comment" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;D0YBSX46eip7ImA9WB9XGEQ.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-3647967874508772785</id><published>2007-11-12T12:58:00.000-05:00</published><updated>2007-11-12T14:19:18.012-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-12T14:19:18.012-05:00</app:edited><title>Hello Android (updated - now with link)</title><content type="html">Good to see Eclipse &lt;a href="http://code.google.com/android/intro/hello-android.html"&gt;being part&lt;/a&gt; of Google's Android story.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-3647967874508772785?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/3647967874508772785/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=3647967874508772785" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3647967874508772785?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/3647967874508772785?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/11/hello-android.html" title="Hello Android (updated - now with link)" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;A0YGSH49eyp7ImA9WB9XFUg.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-6127136792703305976</id><published>2007-11-08T16:46:00.000-05:00</published><updated>2007-11-08T16:58:49.063-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-08T16:58:49.063-05:00</app:edited><title>Looking for RCP experience reports</title><content type="html">As the RCP guy on the &lt;a href="http://www.eclipsecon.org/2008/"&gt;EclipseCon 2008&lt;/a&gt; &lt;a href="http://www.eclipsecon.org/2008/index.php?page=programcommittee/"&gt;program committee&lt;/a&gt;, I am trying to organize a "show and tell" session of interesting RCP applications, using several back-to-back short talks. If you want to tell us about your experiences with RCP, please &lt;a href="http://www.eclipsecon.org/2008/index.php?page=submissions/"&gt;make a short talk submission&lt;/a&gt; soon, the deadline is approaching fast! More details about what I am looking for can be found &lt;a href="http://dev.eclipse.org/newslists/news.eclipse.platform/msg69980.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-6127136792703305976?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/6127136792703305976/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=6127136792703305976" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6127136792703305976?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6127136792703305976?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/11/looking-for-rcp-experience-reports.html" title="Looking for RCP experience reports" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;D08ESHkzeCp7ImA9WB9TGU0.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-4352422631401662364</id><published>2007-09-27T09:43:00.000-05:00</published><updated>2007-09-27T10:10:09.780-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-27T10:10:09.780-05:00</app:edited><title>BugDay tomorrow, Sep 28</title><content type="html">The Platform UI team is participating in tomorrow's &lt;a href="http://wiki.eclipse.org/Bug_Day"&gt;bug day&lt;/a&gt;. We have marked &lt;a href="https://bugs.eclipse.org/bugs/buglist.cgi?bug_file_loc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;amp;bug_id=&amp;amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;amp;bug_status=REOPENED&amp;amp;bugidtype=include&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;classification=Eclipse&amp;amp;component=IDE&amp;amp;component=UI&amp;amp;email1=&amp;amp;email2=&amp;amp;emailtype1=substring&amp;amp;emailtype2=substring&amp;amp;field-1-0-0=classification&amp;amp;field-1-1-0=product&amp;amp;field-1-2-0=component&amp;amp;field-1-3-0=bug_status&amp;amp;field-1-4-0=keywords&amp;amp;field0-0-0=noop&amp;amp;keywords=bugday&amp;amp;keywords_type=allwords&amp;amp;long_desc=&amp;amp;long_desc_type=allwordssubstr&amp;amp;product=Platform&amp;amp;query_format=advanced&amp;amp;remaction=&amp;amp;short_desc=&amp;amp;short_desc_type=allwordssubstr&amp;amp;status_whiteboard=&amp;amp;status_whiteboard_type=allwordssubstr&amp;amp;type-1-0-0=anyexact&amp;amp;type-1-1-0=anyexact&amp;amp;type-1-2-0=anyexact&amp;amp;type-1-3-0=anyexact&amp;amp;type-1-4-0=allwords&amp;amp;type0-0-0=noop&amp;amp;value-1-0-0=Eclipse&amp;amp;value-1-1-0=Platform&amp;amp;value-1-2-0=IDE%2CUI&amp;amp;value-1-3-0=NEW%2CASSIGNED%2CREOPENED&amp;amp;value-1-4-0=bugday&amp;amp;value0-0-0=&amp;amp;votes=&amp;amp;order=bugs.bug_id&amp;amp;query_based_on="&gt;a couple of bugs&lt;/a&gt; with the "bugday" keyword, added contact information to the &lt;a href="http://wiki.eclipse.org/Bug_Day_September_2007"&gt;September 28 BugDay wiki page&lt;/a&gt;, linked to the "&lt;a href="http://wiki.eclipse.org/Platform_UI/How_to_Contribute"&gt;How to Contribute to Platform UI&lt;/a&gt;" page, and made available &lt;a href="http://www.eclipse.org/eclipse/platform-ui/psf/"&gt;project set files for all of Platform UI and IDE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Happy bug fixing everyone!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-4352422631401662364?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/4352422631401662364/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=4352422631401662364" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/4352422631401662364?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/4352422631401662364?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/09/bugday-tomorrow-sep-28.html" title="BugDay tomorrow, Sep 28" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CUEHQHk9eSp7ImA9WB5aF0w.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-4352788944108079246</id><published>2007-09-13T13:53:00.000-05:00</published><updated>2007-09-13T15:00:31.761-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-13T15:00:31.761-05:00</app:edited><title>I'm busy building a new Platform</title><content type="html">With all the recent talk about &lt;a href="http://ed-merks.blogspot.com/2007/09/diversity-is-more-than-just-symbol.html"&gt;diversity&lt;/a&gt; and the &lt;a href="http://recoskie.blogspot.com/2007/09/blog-to-blog-diversity.html"&gt;Platform&lt;/a&gt;, I felt compelled to post some pictures of my backyard as well.  I took a few photos today, well past the crack of dawn, at a time that I would have liked to wake up (unfortunately, my kids have to be at school at 8).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_9mAUrmH9eMo/RumJZtK-OHI/AAAAAAAAAS8/aKThscxigZA/s1600-h/DSC05995.JPG"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_9mAUrmH9eMo/RumJZtK-OHI/AAAAAAAAAS8/aKThscxigZA/s400/DSC05995.JPG" alt="" id="BLOGGER_PHOTO_ID_5109766326943889522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So what occurred to me is that the most important quality of a platform is that it earns the trust of its users and adopters.  For example, trust that the platform will last for a long time, and that it is stable enough to support whatever you want to build on the platform.   It may help when the platform is built by a diverse group of people, but diversity is not an end in and of itself.  I for my part decided to not rush it, and to pay special attention to stability, which I hope you can see in the pictures.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_9mAUrmH9eMo/RumK4dK-OII/AAAAAAAAATE/fU-mzm858FQ/s1600-h/DSC05993.JPG"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_9mAUrmH9eMo/RumK4dK-OII/AAAAAAAAATE/fU-mzm858FQ/s400/DSC05993.JPG" alt="" id="BLOGGER_PHOTO_ID_5109767954736494722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Those bolts are half an inch thick, and four inches long.  Overengineered, you might say, but down at the platform, it is important to set a high bar for anything that goes into the platform.  Because we know the platform must not crush under whatever is built on top of it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_9mAUrmH9eMo/RumLi9K-OJI/AAAAAAAAATM/IeUWjIi_HKw/s1600-h/DSC05990.JPG"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_9mAUrmH9eMo/RumLi9K-OJI/AAAAAAAAATM/IeUWjIi_HKw/s400/DSC05990.JPG" alt="" id="BLOGGER_PHOTO_ID_5109768684880935058" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I decided to build all of this myself without any outside contributions.  However, I haven't figured out how best to build the roof yet.  If you have roofing experience, I would like to know how you did it, and I might accept contributions such as shingles if you have some leftovers.&lt;br /&gt;&lt;br /&gt;I almost forgot to talk about the &lt;a href="http://www.eclipse.org/platform/"&gt;other Platform&lt;/a&gt; I am working on.  The Platform UI team is always open for contributions, and we are proud to have attracted several non-IBM committers.  When I asked why they like being a Platform UI committer, one of the main reasons was that they learn a lot from us, and from just taking part in building a great platform.&lt;br /&gt;&lt;br /&gt;If you would like to become a Platform UI committer too, my advice would be to pick one specific area you are interested in rather than scattering your efforts across all of Eclipse.  This ensures that you will deal with one or two committers all the time, which helps building trust.  (Remember, for platforms, it is all about trust).  For example, pick RCP related issues, or editor management, or wizards, etc. Start by watching bugs in Bugzilla, and answering questions on the newsgroups, focused on that one area.  This will get the corresponding committer's attention.  Write an email to our mailing list with your intent to contribute, or if you are shy, send an email just to me.  If we know about you and what you would like to do, we can start sheperding you towards becoming a committer.&lt;br /&gt;&lt;br /&gt;I put some time into our wiki pages to lower the barrier.  You might want to check out the new &lt;a href="http://wiki.eclipse.org/Platform_UI/How_to_Contribute"&gt;how to contribute page&lt;/a&gt; which is based on a similar page Brad Reynolds, one of our non-IBM committers, wrote for the data binding framework.  To make it easier to find similar pages for other Eclipse projects or project components, I added a how to contribute &lt;a href="http://wiki.eclipse.org/Category:How_to_Contribute"&gt;category&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All of the above mainly applies to individuals who would like to contribute.  If you are reading this from a corporate perspective, and you as a company would like to invest in or contribute to the Platform, you are welcome too! Write me an email and my manager will get back to you. ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-4352788944108079246?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/4352788944108079246/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=4352788944108079246" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/4352788944108079246?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/4352788944108079246?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/09/im-busy-building-new-platform.html" title="I'm busy building a new Platform" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp3.blogger.com/_9mAUrmH9eMo/RumJZtK-OHI/AAAAAAAAAS8/aKThscxigZA/s72-c/DSC05995.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total></entry><entry gd:etag="W/&quot;CkQEQ3w6eSp7ImA9WB5WFEs.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-6805462444332241458</id><published>2007-07-26T05:39:00.000-05:00</published><updated>2007-07-26T09:31:42.211-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-07-26T09:31:42.211-05:00</app:edited><title>Improving editor tabs is hard</title><content type="html">I just ran across &lt;a href="http://en.wikipedia.org/wiki/Aza_Raskin"&gt;Aza Raskin&lt;/a&gt;'s interesting &lt;a href="http://www.humanized.com/weblog/2007/06/19/humanized_puzzler_2_firefox_tabs/"&gt;usability puzzler&lt;/a&gt; about how tabs in Firefox should work. It is a very interesting read, especially some of the comments, and is directly related to the problem of how to improve editor tab management in Eclipse.&lt;br /&gt;&lt;br /&gt;Firefox 1.5 had a single row of tabs that were visible all the time. Each tab shrunk equally as you opened more tabs than could be shown with complete titles. This works well for a small number of tabs, and degrades gracefully as you open more tabs. However, it does not scale to a large number of tabs - after opening twenty or so tabs, the space for each tab is just too small and users won't be able to tell which tab contains which web page.&lt;br /&gt;&lt;br /&gt;Firefox 2.0 tried to solve this problem by only showing a limited number of tabs. Essentially, what you see is a scrolling window into the complete list of tabs. There are buttons for scrolling left or right, and a drop-down menu at the far right allows you to see the full list of open tabs as well as jumping to a particular tab.&lt;br /&gt;&lt;br /&gt;Aza criticizes that the new tab behaviour is concealing information, and that it makes it harder to navigate between tabs because of the added UI complexity - i.e. the scroll buttons, the drop-down list. My mother tongue German has a useful composite word for what happened: "Verschlimmbesserung" - making something worse in an attempt to improve it.&lt;br /&gt;&lt;br /&gt;Of course, his criticism applies to Eclipse as well. The drop-down menu in Firefox is comparable to the one in Eclipse which opens when you click the chevron, or press Ctrl-E. The scroll buttons do not appear in Eclipse - instead, it uses a logic which will show only the most-recently used editors. This appears to work for some users, but it also &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=68684"&gt;drives other users nuts&lt;/a&gt; (including myself) because it is practically impossible to predict what will happen to your tabs as you switch between editors. All in all, I'd say that Eclipse has at least as much added UI complexity as Firefox 2.0 over Firefox 1.5.&lt;br /&gt;&lt;br /&gt;The Mozilla/Firefox developers are watching the conversation, and I would encourage interested others in the Eclipse community to do so too. I enjoyed reading the discussion in the comments, the proposed solutions, and even some cool mockups. Hopefully, I'll have some more time next week to write about the more interesting proposals for Firefox and what I think we can learn for Eclipse.&lt;br /&gt;&lt;br /&gt;Until then, I will be using &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1343"&gt;Vertigo&lt;/a&gt;, an extension for Firefox that shows tab titles in a vertical sidebar, to see how well it works for web browsing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-6805462444332241458?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/6805462444332241458/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=6805462444332241458" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6805462444332241458?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6805462444332241458?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/07/why-improving-editor-tabs-is-hard.html" title="Improving editor tabs is hard" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;DkMFQXsyfCp7ImA9WB5RFkk.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-1563368508427831479</id><published>2007-06-23T14:11:00.000-05:00</published><updated>2007-06-23T19:20:10.594-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-06-23T19:20:10.594-05:00</app:edited><title>Innovation and Push vs. Pull</title><content type="html">Some of you may wonder what those &lt;a href="http://www.eclipse.org/platform/incubator/ui/tweaklets/index.php"&gt;tweaklets&lt;/a&gt; are that &lt;a href="http://divby0.blogspot.com/2007/06/and-now-for-something-completely.html"&gt;have been mentioned&lt;/a&gt; and &lt;a href="http://divby0.blogspot.com/2007/06/and-now-for-something-completely.html"&gt;even hyped&lt;/a&gt; in recent blog postings.&lt;br /&gt;&lt;br /&gt;We are actually trying out a different avenue for innovation in the Eclipse UI.  So far, we got feedback for new or changed features by putting them in an early milestone and waiting for the &lt;a href="https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;amp;short_desc=bring+back&amp;classification=Eclipse&amp;amp;product=Platform&amp;component=UI&amp;amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;amp;keywords_type=allwords&amp;keywords=&amp;amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;amp;bug_status=CLOSED&amp;emailtype1=substring&amp;amp;email1=&amp;emailtype2=substring&amp;amp;email2=&amp;bugidtype=include&amp;amp;bug_id=&amp;votes=&amp;amp;chfieldfrom=&amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;cmdtype=doit&amp;amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;value0-0-0="&gt;inevitable&lt;/a&gt; &lt;a href="http://dev.eclipse.org/newslists/news.eclipse.technology/msg00807.html"&gt;pushback&lt;/a&gt;. With tweaklets, our hope was that ideally, we could generate &lt;span style="font-style: italic;"&gt;pull&lt;/span&gt; from those in the community who want to see this in the main codebase. Seems to work beautifully! :-)&lt;br /&gt;&lt;br /&gt;So, &lt;a href="http://divby0.blogspot.com/"&gt;Nick&lt;/a&gt;, thanks for making the Autopin tweaklet #1 on your &lt;a href="http://divby0.blogspot.com/2007/06/and-now-for-something-completely.html"&gt;list&lt;/a&gt;!  By the way, it &lt;a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=168379"&gt;works&lt;/a&gt; best if you disable editor reuse on the Search, Debug, and Team preference pages, and it does not work well in conjunction with the Don't-Steal-My-Focus tweaklet which is also available from the &lt;a href="http://www.eclipse.org/eclipse/platform-ui/updates/site.xml"&gt;update site&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-1563368508427831479?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/1563368508427831479/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=1563368508427831479" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/1563368508427831479?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/1563368508427831479?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/06/innovation-and-push-vs-pull.html" title="Innovation and Push vs. Pull" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DUAMR3k6cCp7ImA9WBFVEkw.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-6228987722216595984</id><published>2007-03-24T09:33:00.000-05:00</published><updated>2007-04-10T10:09:46.718-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-10T10:09:46.718-05:00</app:edited><title>Who is to blame?</title><content type="html">Ever wondered why Eclipse takes so long to start?  Now you can find out, with a small plug-in that makes use of the &lt;a href="http://eclipse.pookzilla.net/2007/01/i-want-to-tell-you-story-i.php"&gt;new pluggable splash API&lt;/a&gt;.  Just drop the &lt;a href="http://www.eclipse.org/eclipse/platform-ui/plugins/downloads/org.eclipse.ui.examples.splash.blame_1.0.0.jar"&gt;"blame splash" plug-in&lt;/a&gt; into your plugins directory of a recent Eclipse build, restart Eclipse (use the -clean command line option once so that the new plug-in is recognized), and watch which plug-ins are loaded and why:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_9mAUrmH9eMo/RgU6RarWDjI/AAAAAAAAAJ0/QKJI56dgWkM/s1600-h/blame-splash.PNG"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_9mAUrmH9eMo/RgU6RarWDjI/AAAAAAAAAJ0/QKJI56dgWkM/s400/blame-splash.PNG" alt="" id="BLOGGER_PHOTO_ID_5045503028431818290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After Eclipse has started, the functionality is moved into its own proper window until you close it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_9mAUrmH9eMo/RgU7OqrWDkI/AAAAAAAAAJ8/vaJZH0sivRg/s1600-h/blame-splash-2.PNG"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_9mAUrmH9eMo/RgU7OqrWDkI/AAAAAAAAAJ8/vaJZH0sivRg/s400/blame-splash-2.PNG" alt="" id="BLOGGER_PHOTO_ID_5045504080698805826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I tested this on Windows XP but it should work on other platforms too.  You will need a 1.5 level Java VM to run this.&lt;br /&gt;&lt;br /&gt;(Update, April 10, 2007: Essentially the same functionality, plus lots more, is offered by the &lt;a href="http://www.eclipse.org/eclipse/platform-core/downloads.php"&gt;core tools&lt;/a&gt;.  The information just doesn't appear in the splash screen :) )&lt;br /&gt;&lt;br /&gt;Please file specific bugs if you think that too many plug-ins are activated!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-6228987722216595984?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/6228987722216595984/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=6228987722216595984" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6228987722216595984?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/6228987722216595984?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/03/who-is-to-blame.html" title="Who is to blame?" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp2.blogger.com/_9mAUrmH9eMo/RgU6RarWDjI/AAAAAAAAAJ0/QKJI56dgWkM/s72-c/blame-splash.PNG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;DE8DSHw9fip7ImA9WBBbGEQ.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-116889348707388412</id><published>2007-01-15T14:34:00.000-05:00</published><updated>2007-01-15T16:34:39.266-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-15T16:34:39.266-05:00</app:edited><title>Circular Debugging</title><content type="html">Did you know you can attach the Eclipse debugger to itself, i.e. the currently running Eclipse instance?&lt;br /&gt;&lt;br /&gt;What the ...?   Attach to itself?   Yes, to itself.   Sort of like the MetaClass circularity in Smalltalk, but different.  But I digress...&lt;br /&gt;&lt;br /&gt;Imagine a single Java VM which runs Eclipse. To be able to connect a debugger to it, it has to be started in debug mode.  With a Sun VM, the following magic command line does the trick:&lt;br /&gt;&lt;pre&gt;-vmargs -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n&lt;/pre&gt;Note how we use suspend=n to let Eclipse start without waiting for a debugger to connect.  If you start Eclipse by running the executable directly, you can put the options in your eclipse.ini file instead like this:&lt;br /&gt;&lt;pre&gt;-consoleLog&lt;br /&gt;-vmargs&lt;br /&gt;-Xms40m&lt;br /&gt;-Xmx256m&lt;br /&gt;-Xdebug&lt;br /&gt;-Xnoagent&lt;br /&gt;-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n&lt;br /&gt;&lt;/pre&gt;I also added the -consoleLog option in order to see any strings printed to the console by Eclipse.&lt;br /&gt;&lt;br /&gt;Alright, so now we have Eclipse running as usual, except it is running in debug mode.  This is not very exciting yet, but wait for this - here is how you attach it to itself, in three easy steps:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Pick a project containing the Eclipse code you want to debug&lt;/span&gt;.&lt;br /&gt;We will be debugging what is called a "Remote Java Application", except that the application is not very remote ;-).  The debugger needs a project when creating the launch configuration because otherwise it would not be able to look up classes and their source code.  You can pick your favourite Eclipse plug-in from your workspace, but make sure that the code in the project matches the exact version of your running Eclipse.  If you want to play it safe, I recommend creating a project as follows: Open the Plug-ins view, select all, and pick "Add to Java Search" from the context menu. This will create a project called "External Plug-in Libraries" that matches your currently running Eclipse instance.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Create conditional breakpoints (optional)&lt;/span&gt;:&lt;br /&gt;Since there is only one VM and thus only one UI thread, you will not be able to single-step through code that runs on the UI thread.  Don't add &lt;span style="font-style: italic;"&gt;unconditional&lt;/span&gt; breakpoints to any UI code because this will lock up Eclipse.   You can, however, add conditional breakpoints that don't actually suspend the current thread.   Create a breakpoint, then right-click on it and pick "Breakpoint Properties", click on "Enable Condition" and put something like this in the space below (by returning false after printing to the console, the thread will not suspend).&lt;pre&gt;System.out.println("Breakpoint hit");&lt;br /&gt;Thread.dumpStack();&lt;br /&gt;return false;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Create a launch configuration for a "Remote Java Application"&lt;/span&gt;:&lt;br /&gt;Select the project from step one. Open the debug launch configuration dialog using Run-&gt;Debug..., select "Remote Java Application", and click the button for creating a new launch configuration.  The default values should be good, with your project from step one, and the port number matching the one from the command line or eclipse.ini.&lt;/li&gt;&lt;/ol&gt;P.S. Why am I putting this on my blog? I couldn't easily find the magic command line options for starting a VM in debug mode.  Luckily, &lt;a href="http://mea-bloga.blogspot.com/index.html"&gt;zx&lt;/a&gt; on IRC knows these kinds of things.  Rather than writing it down on a piece of paper that I would lose instantly, I wanted to record it as a blog entry and then got carried away...  but if I'm lucky, I will soon be able to google for "circular debugging" to find this page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-116889348707388412?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/116889348707388412/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=116889348707388412" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/116889348707388412?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/116889348707388412?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/01/circular-debugging.html" title="Circular Debugging" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></entry><entry gd:etag="W/&quot;C0AGRXkzeCp7ImA9WBBbGEk.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-116884172476946985</id><published>2007-01-15T00:54:00.000-05:00</published><updated>2007-01-15T01:15:24.780-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-01-15T01:15:24.780-05:00</app:edited><title>Levels of Abstraction</title><content type="html">Reading through some of &lt;a href="http://www.davethomas.net/"&gt;Dave Thomas&lt;/a&gt;' latest &lt;a href="http://www.davethomas.net/papers_index.html"&gt;articles&lt;/a&gt;, I found this quote which I really like:&lt;br /&gt;&lt;br /&gt;"The art of programming is about managing the half-truths at higher levels of abstraction in such a way that they are sufficiently correct to make progress, and sufficiently vague that they can be refined at the next level." (in &lt;a href="http://www.jot.fm/issues/issue_2006_11/column2"&gt;Programming with Models - Modeling with Code&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Thought some of you might like it too.&lt;br /&gt;&lt;br /&gt;(Thanks to Mike for &lt;a href="http://milinkovich.blogspot.com/2007/01/dat-acm-distinguished-engineer.html"&gt;writing about Dave&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-116884172476946985?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/116884172476946985/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=116884172476946985" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/116884172476946985?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/116884172476946985?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2007/01/levels-of-abstraction.html" title="Levels of Abstraction" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry><entry gd:etag="W/&quot;CEQHQHo-eyp7ImA9WBJQEU0.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-114310233144396311</id><published>2006-03-23T03:20:00.000-05:00</published><updated>2006-03-23T03:25:31.453-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-03-23T03:25:31.453-05:00</app:edited><title>Scripting CVS</title><content type="html">Tonight, I created my first EclipseMonkey DOM - it allows you to check out CVS projects into your workspace from a script.  I don't know when Bjorn will make the DOM available, but to whet your appetite, here is a script that shows how to use the DOM:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;--- Came wiffling through the eclipsey wood ---&lt;br /&gt;/*&lt;br /&gt; * Menu: CVS &gt; Get JFace Data Binding&lt;br /&gt; * Kudos: Boris Bokowski&lt;br /&gt; * License: EPL 1.0&lt;br /&gt; * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.dash.cvs&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;function main() {&lt;br /&gt;&lt;br /&gt; var repository = ":pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse";&lt;br /&gt; var projects = ["org.eclipse.jface.databinding", "org.eclipse.jface.examples.databinding", "org.eclipse.jface.tests.databinding"];&lt;br /&gt; var tag = "HEAD";&lt;br /&gt; for each(project in projects) {&lt;br /&gt;     var module = project;&lt;br /&gt;     cvs.checkOut(project, repository, module, tag);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;--- And burbled as it ran! ---&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-114310233144396311?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/114310233144396311/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=114310233144396311" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/114310233144396311?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/114310233144396311?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2006/03/scripting-cvs.html" title="Scripting CVS" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></entry><entry gd:etag="W/&quot;A0cCR3o9fip7ImA9WBJRGUs.&quot;"><id>tag:blogger.com,1999:blog-17547394.post-114296906645413899</id><published>2006-03-21T14:23:00.000-05:00</published><updated>2006-03-21T14:24:26.466-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2006-03-21T14:24:26.466-05:00</app:edited><title>Halo Now</title><content type="html">&lt;a href="http://www.eclipsecon.org/2006/Sub.do?id=113"&gt;http://www.eclipsecon.org/2006/Sub.do?id=113&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17547394-114296906645413899?l=borisoneclipse.blogspot.com'/&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://borisoneclipse.blogspot.com/feeds/114296906645413899/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=17547394&amp;postID=114296906645413899" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/114296906645413899?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/17547394/posts/default/114296906645413899?v=2" /><link rel="alternate" type="text/html" href="http://borisoneclipse.blogspot.com/2006/03/halo-now.html" title="Halo Now" /><author><name>Boris Bokowski</name><uri>http://www.blogger.com/profile/06344587055927544695</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="00452369616224285518" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></entry></feed>
