tag:blogger.com,1999:blog-33183038339430797392024-03-05T22:47:37.138+01:00The Occasional EclipseA tinkerer reporting from the shadowy corners of Eclipse.Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.comBlogger16125tag:blogger.com,1999:blog-3318303833943079739.post-10690169184069954982013-09-19T10:35:00.001+02:002013-09-19T10:37:39.979+02:00Survey on Eclipse XSLT Tools<p>As the current maintainer of the XSL Tools at Eclipse, I'd like to hear from the potential user base - how do you like it, and which kind of features are you looking for?</p>
<p>To do that, I've made a survey around the use of XSLT and the Eclipse XSLT tools. It's completely anonymous and not very long.<br /><br />Please consider taking the survey even if you do not use the Eclipse XSLT tools already -- the survey is on your general XSLT use, and interest in 2.0 and 3.0 features as well.<br /><br />I will summarise the result and post them back here, when available.<br /><br />The survey is at: <a href="http://srvy.it/14jOlzb">http://srvy.it/14jOlzb</a><br /><br />Please also feel free to forward the survey link and plea above to other XSLT users that you may know of, or advertise on XSLT-related blogs.<br /><br />Thank you in advance!</p>Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0tag:blogger.com,1999:blog-3318303833943079739.post-20605937744464610242013-02-26T13:27:00.000+01:002013-02-26T13:27:25.466+01:00Where's my Juno SR2?A colleague of mine just asked - what happened to Eclipse Juno SR2 - wasn't it <a href="http://wiki.eclipse.org/Juno/Simultaneous_Release_Plan">due out last week</a>? <br />
Yes it was, <a href="http://www.eclipse.org/forums/index.php/m/1013445/">but one or more serious problem</a> was discovered at the last minute. I, for one, prefer a healthy release one week later to a data-corrupting release one week sooner!<br />
<br />
While the <a href="http://dev.eclipse.org/mhonarc/lists/cross-project-issues-dev/msg08698.html">busy release bees</a> are working on assembling the best possible Juno SR2, take a moment to appreciate <a href="https://bugs.eclipse.org/bugs/buglist.cgi?list_id=4549029&resolution=FIXED&classification=Eclipse&query_format=advanced&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&product=Platform&target_milestone=4.2.2">this list of fixes</a>, or contribute back to Eclipse by improving bug information, like in <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=341232#attach_224760">this</a> case.<br />
Or, become a <a href="http://www.eclipse.org/donate/">friend of Eclipse</a>!Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0tag:blogger.com,1999:blog-3318303833943079739.post-85037536395672321332012-10-31T14:45:00.000+01:002012-10-31T14:45:13.134+01:00Survey about accepting patches within the Eclipse communityAs was evident with the recent discussions on <a href="http://www.jroller.com/andyl/entry/eclipse_e4_branch_quality_stats">E4 performance</a>, the ongoing process to keep the Eclipse community vibrant, and <a href="http://waynebeaton.wordpress.com/2012/08/09/exceptional-circumstances/">keep relevant projects alive</a>, we Eclipse-people should reach out for all the help we can get. One kind of help is the actual code being contributed.<br />
<br />
DongGyun is conducting research in the dynamics of open source
communities, and is running a survey into the criteria for accepting
patches within the Eclipse community. I find this a worthwhile investigation, and I hope you don't mind me forwarding his plea here (if you've already answered it, please ignore):<br />
<blockquote class="tr_bq">
<br />
<h3>
Dear Eclipse Developers,</h3>
This is DongGyun, a MPhil student of Computer Science and Engineering
Department at the Hong Kong University of Science & Technology(HKUST).<br />
<br />
We are currently conducting research to identify more/less important criteria to accept/reject patches. As a developer, would you like to participate this short survey (only 2 questions) to let us know the importance of criteria and how easy/hard to get the criteria information.<br />
<br />
<a href="http://www.cse.ust.hk/~handk/eclipse/survey.html">http://www.cse.ust.hk/~handk/eclipse/survey.html</a><br />
<br />
We will share these survey results to the Eclipse developer community and other software engineering communities. <br />
<br />
We really appreciate your help.<br />
</blockquote>
<blockquote>
DongGyun, Han<br /><a href="http://www.cse.ust.hk/~handk">http://www.cse.ust.hk/~handk</a></blockquote>
Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0tag:blogger.com,1999:blog-3318303833943079739.post-30461706410359937152010-08-13T19:33:00.008+02:002010-08-17T18:57:23.057+02:00Stuff you learn about when it breaks<div>Somewhere in my basement I have a copy of <a href="http://portal.acm.org/citation.cfm?id=5245">Winograd and Flores' Understanding Computers and Cognition</a>, required reading in some late-1990'es HCI course. Just about the only thing I remember from that book is this quote: <i>"The word processor exists as a collection of hardware or programs only when it breaks down."</i> This is in the sense that you don't think about a tool which doesn't get in the way, and only when it fails (or is missing), you notice it and start to analyse it.</div><div><br /></div><div>Fast forward some 13 years, a few days ago, I finally got around to writing some better UI tests of WTP's "XPath View", using SWTBot as the weapon of choice. Having read the SWTBot <a href="http://download.eclipse.org/technology/swtbot/docs/videos/beginners/SWTBotGettingStartedIn5Minutes">getting started docs</a> and some <a href="http://www.bonitasoft.org/blog/eclipse/swtbot-my-new-friend/">useful</a> <a href="http://greensopinion.blogspot.com/search/label/SWTBot">blog posts</a>, writing my tests were soon well underway, using the fluent API provided. It is fun to watch the application speeding along like time-lapse film, like magic.</div><div>Everything went fine until I wrote code to switch the XPath view's active process from XPath1.0 to XPath2.0, using the view's menu. The API was pretty easy to figure out, but the view menu finder just didn't pick up the menu item I wanted.</div><div><br /></div><div>There's my breakdown: Why?</div><div>Well, it turns out that unlike regular menus and context menus, view menus are collected in a different fashion by SWTBot, by examining the contributions rather than enumerating the SWT objects themselves. Some corners cases are <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=291618">not covered</a>. Not a big deal, really, but it made me look at the source for SWTBot, which is quite a pleasant sight. Now it exists as real code in my mind, as does the Eclipse command framework implementation. And I also now "get" the Hamcrest Matcher framework which I've previously thought to be horribly over-engineered.</div><div>With my new knowledge, I can even <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=322668">extend</a> SWTBot. Nice.</div><div><br /></div><div><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3ZI8KgYA9L607fd6ugcqTozc5CZOijCUg2_Ab1nAfM-F7zTvhUTDwS2eZTaFZlrdMfPT23sEkdh77reDazpACC-OQQ7hw3iDLtFZauteWeRXyL_8C_jJ1bg74FNT62WXf902qBcWBKdk/s1600/IMG_6358-resixed.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3ZI8KgYA9L607fd6ugcqTozc5CZOijCUg2_Ab1nAfM-F7zTvhUTDwS2eZTaFZlrdMfPT23sEkdh77reDazpACC-OQQ7hw3iDLtFZauteWeRXyL_8C_jJ1bg74FNT62WXf902qBcWBKdk/s320/IMG_6358-resixed.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5506334917893147602" /></a>Then fast forward two more days, while this blog post was sitting half-finished in my browser, Saturday evening, after historic amounts of rain in the area, my basement was flooded: The sewer couldn't contain the rain, and the system broke down and came very much into existence, as sewage water gushed up from the drains and toilet and my otherwise dry basement became a 20cm deep paddling pool, allover. Getting the water out took hours; getting the smell out will take days, maybe weeks.</div><div><br /></div><div>Like software, sewage is something most people would rather not have to deal with. It's supposed to be "invisible magic", but in reality it is messy and complicated, and when it doesn't work, it makes for a shitty situation -- yet our society very much depends on it.</div><div>The really strange part is the book: I haven't found it yet, not in the "dry" pile, the "slightly damp but fine" pile, the "soggy yet perhaps readable" pile, or the "discard" pile. I know that book must be down there somewhere, and when I find it, it's going back into my reading queue right away.</div><div><br /></div><div>P.S: My flooded basement was a picnic compared to the <a href="http://en.wikipedia.org/wiki/2010_Pakistan_floods">flood in Pakistan</a>. Consider donating to your favorite charity!</div>Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0tag:blogger.com,1999:blog-3318303833943079739.post-85551084610642313402010-05-30T01:13:00.005+02:002010-05-30T03:02:15.817+02:00Autonomy, Mastery, and bug 313989Dear diary: About a week ago, I took out a full 10 minutes from my <a href="http://nine.dk">day job</a> to watch an interesting video on YouTube about <a href="http://www.youtube.com/watch?v=u6XAPnuFjJc&feature=player_embedded">what motivates people</a>, as recommended by <a href="http://intellectualcramps.blogspot.com/">David Carver</a>.<br /><br />The video explains what might motivate people (who typically hold a challenging and rewarding day job) to contribute their efforts, for free, to open source projects, and it really got me thinking (spoiler alert -- go watch it first): The video concentrates on three significant drivers for motivation: Autonomy, Mastery, and a Sense of Purpose. I considered this is terms of my WTP interests:<br /><ul><li>"Autonomy" is right on target: Nobody told me to get involved with web tooling in Eclipse, this is purely an itch. For a free-time contributor, I believed I scratched my itch really good.</li><li>"Mastery" is on target too, since nothing teaches you a spec(*) as well as trying to implement it, or filing a bug against said implementation. It's nerdy, but rewarding!</li><li>"A Sense of Purpose" is a bit more difficult... What is the purpose of contributing to an open source project, anyway? Is it ... mastery for the sake of professional/career development? ... just "scratching an itch"? ... to improve the quality of a common resource? ... to earn the respect of my peers? ... to make the lives of users (other developers) easier? I'm not sure I have a clear answer on this one, but it got me thinking.<br /></li></ul>I wouldn't have taken as much notice if my watching this video didn't coincide with the WTP 3.2 RC2 build, which I took for a spin, and found three really annoying defects (bug <a href="https://bugs.eclipse.org/313989">313989</a> being the most trivial of those). These bugs weren't really enough to warrant PMC reviews and all that process, but to me, they felt just like when you notice the first scratch on the paint of your brand new car: Sure, you realise it's probably going to get worse -- but you would have preferred not to know about it.<br /><br />The point is this: I should have found those bugs earlier! If I hadn't been so busy investigating all kinds of other unrelated, non-WTP stuff (issues in <a href="https://issues.apache.org/jira/browse/XALANJ-2419">Xalan</a> and <a href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-5124">Hibernate</a>, besides investigating how face recognition works, just because...) I could have done much better! Boom, there goes my sense of purpose, no matter how I look at it: Lost in unfocused dabbling.<br /><br />So my conclusion was this: The "sense of purpose" motivating me to work with WTP is to develop the best IDE for working with XML schemas and documents, and to make our XPath2 implementation consumable for the likely adopters.<br />My open source effort will be concentrated on that (WTP+XML) for the next two years: Make it to the New and Noteworthy. So while I might take other tools for a spin (Xtext rocks!), those other projects shouldn't wait up for patches from me -- for the next two years.<br /><br />P.S. And dear diary: I promise to write more often.<br /><br />*: XML, XML Schema 1.0, SOAP 1.1, XML Catalog, XPath 2.0, XSLT 1 & 2, XML Schema 1.1, the list goes on.Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com1tag:blogger.com,1999:blog-3318303833943079739.post-22759342577526443672010-03-15T23:08:00.006+01:002010-03-15T23:30:34.697+01:00Random acts of kindnessWith Helios M6 in the mold, now is the time to send a big '<b>thank you</b>' to the ladies and gentlemen making all this possible, the unsung heroes of the more-or-less-oiled machinery called 'build', the closing-time-panic induced commitathon<i>ers</i>, the map-file conflict<i>inators</i>, the cooler of the cool 'hope-the-next-build-will-be-green'-cats, the ... well you know who you are!<div><br /></div><div><b>Thank you all very much!</b></div><div><br />For those of you going to EclipseCon this year, I recommend buying a pint for your build-wizard. But don't overdo it in case somebody (could be me) breaks a build somewhere!</div>Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0tag:blogger.com,1999:blog-3318303833943079739.post-47931215633539139722009-10-22T09:57:00.004+02:002009-10-22T12:32:59.284+02:00Red Clown-Nose GameI love games, I really do. Just the other day, I found out I was in a game I didn't even know about. It's called the <a href="http://wiki.hudson-ci.org/display/HUDSON/The+Continuous+Integration+Game+plugin">The Continuous Integration Game</a>, and it's played on the Hudson instance on <a href="https://build.eclipse.org/hudson/cigame/">build.eclipse.org</a>. And guess what, because I keep breaking the <a href="https://build.eclipse.org/hudson/view/WTP/job/cbi-wtp-wst.xsl.psychopath/">psychopath (XPath2) build</a>, I'm placed almost at the bottom (that earns me -10 points), and <a href="http://intellectualcramps.blogspot.com/">dcarver</a> who keeps <span style="font-style: italic;">fixing </span>the build afterwards, is almost at the top (since a successful build gives +1 point and adding a test suite gives +1 per test. And who added the 8000+ tests from the W3C suite?)<br /><br />I certainly have room for improvement - let the games begin!Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com3tag:blogger.com,1999:blog-3318303833943079739.post-6904113635279501892009-05-15T02:24:00.005+02:002009-05-15T03:19:06.994+02:00Know your project's "hangarounds"(This post actually started as a comment to <a href="http://cdtdoug.blogspot.com/2009/05/too-few-cooks.html">Dougs post about too few Eclipse hands</a> but I think it merits a note of its own.)<br /><br />It's only human to want more, and sometimes we want more for less.<br /><br /><span style="font-weight: bold;"></span>As an occasional contributor, my impression is that there's just not enough people to review bugs and patches and keep ownership of the various components. In the projects I've contributed to, this has been a steady decline over the years. So, I agree with Doug, more cooks!<br /><br />However: As a former (individual) committer who just wasn't active enough (life happens), I wish there was more time! I think there's an untapped potential in the project "hangarounds". People who have been following the project or component for a while, are power-users but also know the design codebase, but do not have the time to be a committer with all that entails. <span style="font-style: italic;">The hangaround</span>.<br />By that, I mean a person who keeps up to date with the project or component, and is willing to assist the committers in a number of areas:<br /><ul><li>Bug triage</li><li>Spreading the good word about the project (superuser/ambassador)<br /></li><li>Fixing bugs<br /></li><li>Reviewing and testing patches, etc. from the contrbutors at large.</li><li>Pushing initiatives like Bug Friday</li><li>Extend test coverage<br /></li><li>Keeping [helpwanted] markers on bugs relevant and realistic</li><li>Review and write documentation</li><li>Participate on mailing list and/or newsgroup</li></ul> Who wouldn't want those guys/gals around? The key point here is to encourage participation of a following, by acknowledging that these tasks are important and that these project hangarounds are valuable to the project. By acknowledging that hangarounds earn their "props" (proper respect) from the committers by providing good patches and thus proving their worth over a longer period. Or perhaps sqeeze a "contributor's day" in between Mother's day and Fathers' day somehow - flowers are optional.<br /><br />Often full-time Eclipse member committers are indeed colleagues working together on significant areas of new functionality, and they often optimize their communication by keeping it to themselves. This is unavoidable and mostly OK. Hangarounds wouldn't be "in the loop" for that kind of development, but their knowledge of the project or component make them valuable reviewers -- keep in mind that a large share of the Eclipse user audience are software developers, and should be accustomed to such tasks and hopefully welcome them.<br /><br />While I don't know every project in the Eclipse ecosystem, I'm sure project hangarounds already exist, in practise anyway, and that their contributions are valued. However, I think it should be encouraged lots more, also so that the committers had a better feeling of which contributors to turn to for help.<br /><br />I know, I know, code is the true measure of most things Eclipse, but even if you can't code Eclipse all day, you can still contribute. Let's not forget that.Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com3tag:blogger.com,1999:blog-3318303833943079739.post-50280321702071725512008-03-24T21:58:00.003+01:002008-03-24T23:13:31.162+01:00Surprise: Eclipse is me, too!My last word on the whole e4 thing will not be about e4 at all (since I'm following going through the instructions for the demo, letting the code speak for itself), rather it will be restating what's been said so many times before: <span style="font-style: italic;">Eclipse is me</span>.<br /><br />Now, I'm <span style="font-weight: bold;">not</span> the most active Eclipse committer/contributor (<a href="http://intellectualcramps.blogspot.com/">Dave</a> and Doug are doing all the actual work in the <a href="http://wiki.eclipse.org/XSLT_Project">XSLT tooling</a> in the <a href="http://www.eclipse.org/webtools/incubator/">WTP incubator</a>), nor am I a <a href="http://ed-merks.blogspot.com/">prolific, insightful blogger</a> by any standard. Yet, <a href="http://occasional-eclipse.blogspot.com/2008/03/its-architecture-stupid.html">my posting regarding e4</a> did not go unnoticed within the community. I think that's a sign of good health, and I was pleased to see Mike M <a href="http://occasional-eclipse.blogspot.com/2008/03/its-architecture-stupid.html#c5914781812383234070">following up on it</a>.<br /><br />What befuddled me a bit however, was finding out <a href="http://www.regdeveloper.co.uk/2008/03/11/eclipse_e4_dust_up/">Reg Developer</a> linking to the post, essentially using it as a news source, as an exponent of a general sentiment. That was just ... unnerving, out of proportion, and misunderstood. Planet Eclipse is a great medium for following what's going on, but is does not <span style="font-style: italic;">fairly </span>represent the minds of all ~1000 Eclipse committers and the many members <a href="http://dev.eclipse.org/blogs/mike/2008/03/24/ideas-are-cheap/">doing the hard work</a>. The planet should always be read with that in mind.<br /><br />Eclipse is you, but take care to express <span style="font-style: italic;">how</span>.<br /><br />P.S: For a laugh, read the <a href="http://www.regdeveloper.co.uk/2008/03/11/eclipse_e4_dust_up/comments/">Reg Developer comments</a>, and try not to think of <a href="http://xkcd.com/202/">XKCD</a>.Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0tag:blogger.com,1999:blog-3318303833943079739.post-87011549555427703182008-03-18T00:04:00.004+01:002008-03-18T00:54:14.173+01:00My EclipseCon un-schedule: Day 1This year, I am also <span style="font-weight: bold;">not</span> at EclipseCon.<br />Rather than four days of Eclipse tutorials, talks, BOFs, and high quality chit-chat, I'm getting what should have been springtime in Denmark. Well, it isn't.<br />My un-schedule for today went like this:<br /><ul><li>07:00: Why is everybody up now? I'm not <a href="http://runnerwhocodes.blogspot.com/2008/03/eclipsecon-exercise-day-1ouch-it-was.html">running</a> anywhere! Oh, breakfast.</li><li>08:00: Traffic Ballroom Z: "Model driving gets kids to daycare" 101, and more.</li><li>10:00: Coffee - I get that.</li><li>10:30: Managing my small company's general ledger with a cool RCP based ERP (no, that was OOo Calc)</li><li>12:00: Lunch and Eclipse smalltalk. Minus Eclipse smalltalk.</li><li>13:00: Improvised BOF meeting with other <strike>Eclipse contributors</strike> people stuck in line in the hardware store.</li><li>13:30: Heave 13 sacks (450 kg) of shredded bark mulch into family car. Prepare for contribution as foundation for the coming <a href="http://www.bluerabbit.be/fiches/torens/bunker_0.html">platform</a>.</li><li>15:15: Daily General Meeting with kids being picked up from daycare.<br /></li><li>15:30: Check Planet Eclipse for postings on EclipseCon.</li><li>16:00: "Introduction to PDE/Build", or make that <span style="font-style: italic;">finally </span>updating my <a href="http://wiki.eclipse.org/XSLT_Project">XSL</a> workspace for M5. Noticing how "Project > Cleanup..." is still required for combinations of target, project, and CVS changes.</li><li>16:20: Fight against the <a href="http://dr.dk/Regioner/Kbh/Vejr/forside.htm">snow</a> build-up. It's not supposed to snow now that spring was here.<br /></li><li>16:30: Check Planet Eclipse again. Hmmm.<br /></li><li>18:00: ...</li></ul>I hope you get the idea... Please enjoy EclipseCon!Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com1tag:blogger.com,1999:blog-3318303833943079739.post-414124364983634792008-03-08T22:55:00.003+01:002008-03-09T17:15:31.487+01:00"It's the architecture, stupid!"When I first read the <a href="http://dev.eclipse.org/mhonarc/lists/eclipse.org-committers/msg00504.html">e4 project announcement</a>, I was puzzled as in "Am I misunderstanding something here?". Reading through the early e4 <a href="http://cdtdoug.blogspot.com/2008/03/what-do-you-want-eclipse-40-to-be.html">diversity</a> and <a href="http://douggaff.blogspot.com/2008/03/eclipse-40-will-it-be-diverse-and.html">openness </a>complaints on miscellaneous blogs, I was very relieved to see I wasn't the only one getting (what is now confirmed as) the wrong picture, as to the intentions of the incubation effort (I was even looking forward to Ed Merks' images of unbalanced ecosystems or the proverbial big and small fishes in the pond).<br /><br />But now we know: OK, e4 is a place to showcase the experimental code and grow ideas about the Eclipse 4.0 platform, not some coup d'etat. OK, the perception is not reality, just unfortunate communication. OK, the platform team wants to solicit feedback from the community. OK, so you would rather show it in code than in colorful diagrams (given the audience, that makes sense).<br /><br />My day job is in software architecture, and not in Eclipse at all (which makes me a very small fish indeed). However, it also gives me a different perspective in which to view this controversy: <a href="http://en.wikipedia.org/wiki/It%27s_the_economy,_stupid">It's the architecture, stupid</a>. The future of the Eclipse platform is not just about the code, it's also the scope, the requirements, the stakeholders, the constraints, the APIs, the process, the resources, and it's the dependencies and dependents of the very heart of Eclipse. In that respect, we still don't know anything about <span style="font-weight: bold;"></span>e4.<br />Eclipse is built on a strong architecture, and architecture is all about keeping the stakeholders happy, but it looks as if there's still serious uncertainty with a number of stakeholders:<ul><li><span style="font-weight: bold;">What </span>is being worked on here? Are we talking runtime / SWT / RCP - stuff? Is this about the "IDE meat", where a lot of the identified <a href="http://wiki.eclipse.org/Top_Ten_Architectural_Problems_in_all_of_Eclipse">"biggest architectural problems"</a> reside)?</li><li><span style="font-weight: bold;">Why </span>is this going on? Or, which requirements or innovations are going to be driving the effort? Why is this more important than anything else?<br /></li><li><span style="font-weight: bold;">When </span>is all this going to happen? (should we expect a 3.5 in 2009?)</li><li><span style="font-weight: bold;">How </span>are you planning to do this without creating adverse effects for stakeholders?<br /></li><li><span style="font-weight: bold;">Where </span>will the impact be - will this be a distributed effort? Where will the parts which currently make up the Eclipse Platform end up (in case of a refactoring effort)?<br /></li><li><span style="font-weight: bold;">Who </span>gets to decide and prioritize? And implement?<br /></li></ul><span style="font-size:85%;">(yes, those are <a href="http://en.wikipedia.org/wiki/Rudyard_Kipling">Kipling</a>'s <a href="http://www.kipling.org.uk/poems_serving.htm">six honest serving men</a>, inspired by their use in the <a href="http://en.wikipedia.org/wiki/Zachman_framework">Zachman EA Framework</a>. Hmmm; Zachman - IBM - conspiracy?)</span><br /><br />For humans, a common reaction to change and uncertainty about is to expect the worst, especially if you feel like you are out of the loop. OK, we know now that part of e4 is to find the answers to the questions above, except perhaps the first "who" which I would expect should be the <a href="http://wiki.eclipse.org/Architecture_Council">architectural council</a> (whose <a href="http://dev.eclipse.org/mhonarc/lists/eclipse.org-architecture-council/maillist.html">mailing list</a> is just buzzing with e4 activity right now). There are processes in place to mend this.<br /><br />But shouldn't we always start with the "why" rather that the "how"?Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com5tag:blogger.com,1999:blog-3318303833943079739.post-71031139423245471482008-01-31T23:53:00.000+01:002008-02-06T22:41:45.318+01:00Think globally, link locally (updated)Today I attended my first meeting in the local (i.e. Danish) Eclipse users group called <a href="http://eclipse.dk/index.php/home/in-english">Eclipse.dk</a>, today's topic being the use of Eclipse RCP for the primary front-office business-applications in a bank, such as teller systems and in call centers.<br /><br />In Denmark, banks are rarely among the early technology adopters -- to say the least (I assume this is partly due to the severe regulation in the sector). Not just adopting, but broadly betting on Eclipse RCP for in-house development is thus a bold decision, even when it's warranted and desired by the business users. It goes against the grain of the ten year industry-wide push of browser-based solutions, and didn't happen without some amount of "idea sales"; the architect having to refocusing his/her language to the audiences at hand (easier when you stick to the facts and leave the evangelism behind.)<br /><br />The meeting featured a presentation, a demo, and lots of discussions about design trade-offs, architecture, etc. amongst the apprx. 25 attendees. Useful, inspiring, and not doable by IRC! This kind of face-to-face meeting around such a focused subject is a rare event indeed.<br /><br />My message is thus: Find and join your local Eclipse user group - if you can't find one, go start one yourself. Show up, share, discuss, link up with people with similar interests.<br /><br /><b>Update:</b> The Eclipse Wiki contains a <a href="http://wiki.eclipse.org/Regional_Communities">page of local communities</a>.Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0tag:blogger.com,1999:blog-3318303833943079739.post-9295653571449138902007-11-02T23:55:00.000+01:002007-11-02T23:55:08.261+01:00They grow old so fast...Two years ago, I initiated the <a href="http://www.mulesource.org/display/IDE/Home">Mule IDE</a> project, an Eclipse plugin for the Mule ESB. It was started as a hobby project back when "Mule UMO" was mostly a (popular!) community effort with a few dedicated developers working on it.<br /><br />Since then, things have really taken off for the Mule ESB, and it's now the centrepiece of MuleSource, Inc. - arguably an Open Source <a href="http://www.infoworld.com/article/07/09/10/37FE-boss-platforms_2.html">success story</a>. Meanwhile, Mule IDE hasn't received too much attention since the 1.3 version from February '07 (as I have too many other (offline) things going on)<br /><br />But that's all changed, since <a href="http://admin.muleforge.org/projects/mule-ide/members">Ted and Moosa</a> joined the Mule IDE project. And now <a href="http://mule.mulesource.org/display/IDE/Mule+IDE+1.4.3+Release+Notes">Mule IDE 1.4.3</a> is out, with none of my doing whatsoever. Congratulations, I'm looking forward to seeing what's coming next!<br /><br />But at the same time, I can't help feeling that it's a little bit like sending a child off to school...Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0tag:blogger.com,1999:blog-3318303833943079739.post-11955839035128528312007-09-14T11:15:00.000+02:002007-09-14T12:36:03.184+02:00On diversity and contributorsMuch has been blogged recently about diversity in the project members and committer communities, and of the willingness to embrace contributions from the outside.<br /><br />While I agree with what appears to be a consensus - that diversity is "A Good Thing"(TM), I would like to point out that there are other kinds of diversity than what can be calculated from the host-part of committers' email addresses.<br /><br />One such diversity is that of contribution patterns. I would guess that most module owners work on their modules to fulfill the plans of both their daytime employers and the OSS project itself. Many contribute to one or more Eclipse projects on a regular basis, some may ONLY work on Eclipse itself.<br /><br />And then there's people such as myself, who can hardly even qualify as software developers on "the day job". I just contribute minor stuff here and there: The odd bug report, a patch, technical clarification on some unexpected (but correct) behavior. When I get hit by a bug, and I'm able to, I'll gladly dig down to the bottom of the implementation of some plugin or other and fix it. But I <em>rarely</em> stay at the bottom for long - and thus I'm hardly committer material.<br /><br />At any rate, I'd say that ad-hoc contributions are useful:<br /><ul><br /> <li> A fixed bug is a good bug, even if you didn't know it was there in the first place.<br /> <li> They sometimes add a missing piece of functionality which all downstream users may benefit from (unplanned).<br /> <li> They serve as a litmus-test for code clarity and quality. If a "total stranger" can find and fix a bug without prior knowledge of the code base, that's a good sign. People giving up after an initial glance is a bad sign.<br /> <li> They sometimes help to cross pollinate, inspiring adoption of useful code from other projects. So many software bugs come from re-inventing the wheel when it could just be imported.<br /> </ul><br />The Eclipse projects I've been in contact with (mostly WTP, some EMF) welcome this kind of contribution <b>with open arms</b>, typically respond quickly, and give good, positive feed-back, even for rejected bugs/patches/ideas. That leads me to conclude that this kind of <em>diversity of contribution</em> is definitely appreciated by the projects, even if 95% of the people supporting it come from the same company.<br /><br />As I see it, while the diversity of committers is crucial for the long-term survival of a project, nurturing the "satelite contributors" helps to keep the project healthy, too.Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com2tag:blogger.com,1999:blog-3318303833943079739.post-53862552375143011252007-08-08T00:12:00.000+02:002007-08-08T00:13:44.821+02:00Monkey see, abe gør(Abe gør = monkey do, in Danish)<br /><br />I'm lazy, sure, no denying that. Sometimes I'm a bit too lazy, especially when programming -- and a while ago, I was too lazy to extract all the strings of a web application into a message bundle. Anyway, the application was only going to be in one language, so why bother?<br /><br />Then, when scope crept in on me, and the inevitable second language had to be added, I suddenly had ~45 JSP/facelet pages to go through and extract all the strings. And, this being a hobby effort, I had no other developers to pass the tedius jobs on to.<br /><br />The procedure is as follows:<br />* Go to the target JSP page<br />* Select the text to externalize<br />* Cut<br />* Switch to the resource bundle's text editor<br />* Enter the desired message key name<br />* Paste the text<br />* Copy the chosen message key name<br />* Switch back to the JSP page<br />* Enter the text output text boilerplate code and the key name, such as <tt>#{messages['LoginPage.label.userName']}</tt><br /><br />All in all, it added up to about 400 strings! No way I was going to do that by hand. Enter Eclipse Monkey, a "macro" system for Eclipse, where you can run JavaScript scripts (or other engines) within Eclipse without having to deal with making your own plugins and whatnot. But building a "localization macro" with Eclipse Monkey was harder than I thought, but then again it was my first ever script for the Monkey.<br /><br />First up was the choice of which monkey DOMs I had available. A Monkey DOM makes one or more objects available to the scripting context, serving as an interaction point into Eclipse. You may also reference classes directly, but only in a few select packages (due to the access restrictions managed by OSGi). Although I was tempted to write one myself, I could make do with one of the builtin DOMs (<em>org.eclipse.eclipsemonkey.lang.javascript</em>), since I only needed access to the text editors, as in the variable "editors" below.<br /><br />Second was the need for configurability. My Monkey script needed to know which file to copy the lozalized string to, but I have yet to find a mechanism for storing user-specific script parameters other than in the script itself. So I put the filename into a variable (<em>destinationFileName</em>), easy to adjust for anyone. The replacement template is specific to JBoss Seam, you can also tailor this to your need.<br /><br />Third, I chose a viable keyboard shortcut, and out the file into the <strong>scripts </strong>directory in my project. The rest, as they say, is just code:<br /><br /><small><pre><br />--- Came wiffling through the eclipsey wood ---<br />/*<br /> * Menu: Localization > Extract String<br /> * Key: SHIFT+F12<br /> * Kudos: Jesper Steen Møller, Paul Colton (Aptana, Inc.)<br /> * License: EPL 1.0<br /> * DOM: http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript<br /> */<br /><br />function askKey(oldKey, targetString) {<br /> dialog = new Packages.org.eclipse.jface.dialogs.InputDialog(<br /> window.getShell(), <br /> "Localization Key",<br /> "Enter the localization key for string '" + targetString + "' ?",<br /> oldKey, null)<br /> result = dialog.open()<br /> if (result == Packages.org.eclipse.jface.window.Window.OK) {<br /> return dialog.getValue()<br /> }<br />}<br />// Simple info dialog<br />function show(text) {<br /> Packages.org.eclipse.jface.dialogs.MessageDialog.openInformation(<br /> window.getShell(),<br /> "Extract String",<br /> text<br /> )<br />}<br />// Simple error dialog<br />function showError(text) {<br /> Packages.org.eclipse.jface.dialogs.MessageDialog.openError(<br /> window.getShell(),<br /> "Extract String",<br /> text<br /> )<br />}<br /><br />function main() {<br /> // Change this for using a different editor source<br /> var destinationFileName = "messages_da.properties";<br /> var destinationEditor = undefined;<br /> var sourceEditor = editors.activeEditor;<br /> var valid = false;<br /> for each( editor in editors.all ) { <br /> if (editor.title == destinationFileName) {<br /> destinationEditor = editor;<br /> valid = true;<br /> }<br /> }<br /> if (! valid) {<br /> showError("No editor is open for " + destinationFileName);<br /> }<br /> if (valid && (sourceEditor == null)) {<br /> valid = false;<br /> showError("No active editor");<br /> }<br /> // make sure we have an editor<br /> if (valid && (sourceEditor === undefined)) {<br /> valid = false;<br /> showError("No active editor");<br /> }<br /> // insert replacement<br /> if (valid) {<br /> var range = sourceEditor.selectionRange;<br /> var offset = range.startingOffset;<br /> var deleteLength = range.endingOffset - range.startingOffset;<br /> var source = sourceEditor.source;<br /> var replacement = source.substr(range.startingOffset, deleteLength);<br /> <br /> replacement = replacement.replace(/(\r)?\n/g, "\\n\\" + destinationEditor.lineDelimiter + " ");<br /> <br /> var keyLine = findKeyLineNo(destinationEditor);<br /> var oldKeyName = "key" + keyLine;<br /> <br /> if (keyLine >=0 ) {<br /> var theLine = lineContents(destinationEditor, keyLine);<br /> oldKeyName = theLine.substring(0, theLine.indexOf('='));<br /> }<br /> <br /> var key = askKey(oldKeyName, replacement);<br /> if (! (key === undefined)) {<br /> var text = "#{messages['" + key + "']}";<br /> <br /> // apply edit and reveal in editor<br /> sourceEditor.applyEdit(offset, deleteLength, text);<br /> sourceEditor.selectAndReveal(offset, text.length);<br /> <br /> // now copy the replacement text into the property file<br /> var curLine = destinationEditor.getLineAtOffset(destinationEditor.selectionRange.endingOffset);<br /> var replacementOffset = destinationEditor.getOffsetAtLine(curLine+1);<br /> if (replacementOffset < 1) replacementOffset = destinationEditor.sourceLength; <br /> var replacementText = key + "=" + replacement + destinationEditor.lineDelimiter; <br /> destinationEditor.applyEdit(replacementOffset, 0, replacementText);<br /> destinationEditor.selectAndReveal(replacementOffset, replacementText.length);<br /> }<br /> }<br />}<br />// Get the string contents of a line<br />function lineContents(anEditor, lineNo) {<br /> var firstOffset = anEditor.getOffsetAtLine(lineNo);<br /> var lastOffset = anEditor.getOffsetAtLine(lineNo + 1);<br /> var s = anEditor.source.substr(firstOffset, lastOffset - firstOffset);<br /> //alert("Contents of line " + lineNo + ":" + s + " (" + firstOffset + "," + lastOffset + ")");<br /> return s;<br />}<br />// Finds the nearest line which starts a key=value <br />function findKeyLineNo(anEditor) {<br /> var beginLine = anEditor.getLineAtOffset(anEditor.selectionRange.startingOffset);<br /> <br /> // Search up...<br /> var i = beginLine;<br /> while (i >= 0) {<br /> if (lineContents(anEditor, i).indexOf('=') > 0) return i;<br /> --i;<br /> }<br /> var lastLineNo = anEditor.getLineAtOffset(anEditor.sourceLength);<br /> var i = beginLine + 1;<br /> while (i < lastLineNo) {<br /> if (lineContents(anEditor, i).indexOf('=') > 0) return i;<br /> ++i;<br /> }<br /> return -1;<br />}<br />--- And burbled as it ran! ---<br /></pre></small><br /><br />The funny header and footer makes it easy to paste the script into you Eclipse workspace, just mark everything (including the headers) and choose Scripts > Paste New Script, and you're flying.<br /><br />The morale is: Look for script that do similar things, and experiment from there.Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com5tag:blogger.com,1999:blog-3318303833943079739.post-64742486966054700032007-07-25T09:41:00.000+02:002007-07-26T17:05:51.641+02:00Bug day is tomorrow...... but I must honor all schema locations today<br /><br />I was bitten by <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=197947">this bug</a> so I fixed it, although it may not make it into the next WTP maintenance release since it contains more or less "gratuitous" UI changes/additions.<br /><br />The underlying problem is that of XML schemas that directly or indirectly import several schema files from different locations, like this:<br /><br /><span style="font-weight: bold;font-size:85%;" >A.xsd</span><span style="font-size:85%;"> defines element </span><span style="font-weight: bold;font-size:85%;" >nsA:A</span><span style="font-size:85%;"> in </span><span style="font-weight: bold;font-size:85%;" >nsA</span><span style="font-size:85%;"> and imports </span><span style="font-weight: bold;font-size:85%;" >B1.xsd</span><span style="font-size:85%;"> and </span><span style="font-weight: bold;font-size:85%;" >B2.xsd</span><span style="font-size:85%;"><br /></span><span style="font-weight: bold;font-size:85%;" >B1.xsd</span><span style="font-size:85%;"> defines element </span><span style="font-weight: bold;font-size:85%;" >nsB:B1</span><span style="font-size:85%;"><br /></span><span style="font-weight: bold;font-size:85%;" >B2.xsd</span><span style="font-size:85%;"> defines element </span><span style="font-weight: bold;font-size:85%;" >nsB:B2</span><span style="font-size:85%;"><br /></span><span style="font-weight: bold;font-size:85%;" >A-instance.xml</span><span style="font-size:85%;"> contains an </span><span style="font-weight: bold;font-size:85%;" >nsA:A</span><span style="font-size:85%;"> which contains a </span><span style="font-weight: bold;font-size:85%;" >nsB:B1</span><span style="font-size:85%;"> and a </span><span style="font-weight: bold;font-size:85%;" >nsB:B2</span><span style="font-size:85%;">.<br /></span><br /><span style="font-size:78%;">(confused? This is a simplification of an example derived from a simplification of the real-world problem)</span><br /><br />Now, the XML Schema spec says this is undefined and that a processor is free to ignore the <span style="font-family:courier new;">schemaLocation</span> attribute of the subsequent imports. Nevertheless, the Danish government office for IT standardisation and such has decided in ~2003 to mandate such use in their guidelines (OIOXML), and if you want to design XML interfaces to work in the public sector in Denmark, you'd better play along. Sigh. Many implementations, such as Microsoft's, did the sensible thing and ignored the extra <span style="font-family:courier new;">schemaLocation</span>, some even with a warning.<br /><br />Now, WTP's XSD editor supports this in general (due to elaborate 'best effort' lookups in the EMF model for XML Schema), but the validation framework uses the Xerces schema functionality, not the EMF model, for validation. This validation drives the annotations you see in the <span style="font-style: italic;">Problems </span>view and the as-you-type squiggly lines in the editor.<br /><br />Fortunately, the problem was <span style="font-weight: bold;">mostly</span> solved in WTP a while back, possibly in 1.0.1, by introducing the <span style="font-style: italic;">"Honour all schema locations"</span> checkbox in the XML Schema preferences.<br />However, this only works for the validation of the schema files themselves, not for XML files which use such schemas.<br /><br />Now at least there's a solution, if the patch is accepted.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRjNjE3HaM5JRTMyr0GEuY8VEeOy5yux1ODPK6zlm11Y8GETpDmvvaXncanB-RXDpdP7a7PG8GqRmbx69suQCEFx1txSRwMVQelm4CRZBlSCFDmvikBjkyUaOCXN7Zf2GKdUqo5mYydj8/s1600-h/HonourAll.PNG"><img style="margin: 0pt 10px 10px 0pt; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRjNjE3HaM5JRTMyr0GEuY8VEeOy5yux1ODPK6zlm11Y8GETpDmvvaXncanB-RXDpdP7a7PG8GqRmbx69suQCEFx1txSRwMVQelm4CRZBlSCFDmvikBjkyUaOCXN7Zf2GKdUqo5mYydj8/s320/HonourAll.PNG" alt="" id="BLOGGER_PHOTO_ID_5091520557916708546" border="0" /></a><br /><br />Next question is: Which bug to pick for bugday?Jesperhttp://www.blogger.com/profile/15983201810190556000noreply@blogger.com0