Archive for the Development Category

Of the things that keep me up at night…

…this is one of them.

As Wayne Beaton reminds us, successful Open Source projects at Eclipse (or anywhere) require an active community, and that requires participation from the folks writing the code.  Working on the code that powers JSDT and WTP Source Editing is only part of being a Committer.  Of equal importance is interacting with users, fellow committers, and adopters.  But something’s been lurking in the back of my mind around all of this and I can’t quite see a solution.

A few months ago Konstantin sent a link to wtp-dev to a question on StackOverflow.  To those who’ve never used it, a gross oversimplification would be that it’s a programming Q&A site.  One of its creators, Jeff Atwood, is responsible for the well respected Coding Horror blog (which everyone really should read, but take with a grain of salt, even if the rate of posts has dramatically slowed since the launch of stackoverflow and co.).The post was a question about overall WTP performance, and although some progress on providing concrete answers was made, its existence gives me pause.  Not because the impression seemed to be that we don’t care about performance (we do), nor quality (we do), and that there were surely lots of people willing to step in (a retort from Zombieland’s “Tallahassee” comes to mind), but the problem for me was that it wasn’t asked on our own forums.  There are lots of questions related to Eclipse on Stack overflow, and many of them have gone unanswered for a very long time.  My gut reaction is to simply answer as many as I can, but that’s not practical.  I’ve tried it, and answering older questions never seems to attract the questioner’s attention for followups or filing real bug reports.  Plus I already spend a fair amount of time in eclipse.org’s own forums and IRC trying to make sure WTP questions don’t go unanswered.

So how do you make progress in a situation where an active and vocal part of your community chooses to congregate somewhere other than the place you’ve carved out just for them, away from the folks who might best be able to answer their questions?

Honestly I don’t have an answer for that.  I don’t blame the forum software, after all Eclipse’s forums have always had a traditional NNTP service underneath them, and I’m a staunch advocate of continuing to do so as it lets me use whatever interface I’m most comfortable with.  StackOverflow’s an invaluable resource provided by some pretty smart folks, and I can’t really fault users for asking questions there.  And so here I am, a quarter to 4 in the morning, hoping that getting this out in some form will finally let me get some sleep. Somehow I doubt it.

The bursting of bubbles

I’ve seen more than one post applauding the enhanced use of content-type specific icons in Eclipse 3.4M6 and showing how to make use of them through an extension or org.eclipse.ui.editors, but I think that something needs to be pointed out about that solution. Developers who do this aren’t just specifying their icons, they’re specifying whole new editors. This isn’t a bad thing, but every editor has to have a unique ID, and it’s easy to forget that some other features depend on that editor ID. The most common example is the org.eclipse.ui.actionSetPartAssociations extension point, which adds menu and toolbar actions automatically as you switch from workbench part to workbench part. In WTP, this is how the JSP and Web Page Editors ensure that the Run menu is present and populated with the Launch action set, and it’s how most editors expose the Annotation Navigation action set. So when you’re registering an editor to get that custom icon showing up, keep in mind that there may be more to it than reusing the right editor and editor contributor class.

Whoops

I'm speaking at EclipseCon

Statistics

Wayne’s been posting the User Data Collector results periodically, and one thing I’ve noticed is that WTP’s XML Editor has seriously moved up in the “rankings” to be just behind the Java editor we all know and love. Luckily I caught myself before starting to chant “we’re number two, we’re number two!” outloud. Its count still pales in comparison to that of the Java editor, of course, although I do have to wonder what will happen when Ganymede goes out the door. In the spirit of the EclipseCon Face-time Poker game, anyone have odds on the Java Editor keeping its lead through the end of the year? And anyone else think that by trading cards it feels more like Face-time Go Fish?

One thing that the results have brought into focus, for me, is that after discounting the commands in our WTP editors that are inherited from the Platform, the one we have for formatting is the most recorded outside of the Platform and JDT. While statistics can easily be misinterpreted or manipulated by interested parties, it’s enough to let me know that the subtle fixes being made to our formatters in WTP 3.0 was worth the time spent. My thanks go out to the contributors who are making it possible, and the folks from the XSL Incubator project for giving us the right kind of nudge.

Lastly, I’m writing all of this from my hotel room at EclipseCon while updating the USB keys for the tutorial I’m giving tomorrow. Although the team hasn’t yet completed all of our new APIs or features for this release, there’s still a lot of ground to cover in the time alotted. And in a break from tradition, tutorials are free. I think there are few better uses of presenters’ time than teaching people who want to learn, and this is fantastic news in that regard. The SSE tutorial’s always been comparatively well attended, and although I have no idea whether this change will mean more attendees or not, this may be the best EclipseCon yet.

I really don’t see how they’ll top sumo-wrestling, though.

FUDCon 8

During a misadventure over the past weekend, a friend reminded me that the last significant entry in my personal blog was about a Zombie Walk from October. The most recent one, however, was about my plan to attend FUDCon 8.

FUDCon is a gathering of Fedora users and developers, vaguely like Rational’s own annual Software Developer Conference. Most attendees are either working on developing Fedora itself or deploying and managing systems using Fedora, which somewhat put me on the sidelines. Fedora was one of the first distributions to include Eclipse compiled natively so it could be run with an open source VM. My own involvement with Fedora traces back to its predecessor, Red Hat Linux. And I don’t mean the Enterprise offering they market these days, I mean the original Red Hat Commercial Linux, from when modular kernels were new, automatic hardware detection didn’t happen, and when RPM was still written in Perl and the complete guide to using and creating packages for it took up one chapter in the supplied user guide. Old.

This FUDCon took place in Raleigh at Red Hat’s headquarters, and both my twin brother and and old friend showed up to attend. I was mistaken for my brother more than once during the event (”Why is Nalin running Windows?” as Warren Tagomi asked) as he is a Red Hat employee and used to work in that building. Each day of the conference began rather early, and Im not really a morning person.

Nope, that's not me.

The first day was a hackfest working on parts of Fedora, just like the third day. I didn’t do too much that day, or on the third day, since I really don’t go hacking on system code that much anymore. I did get to sit in a room with members of Red Hat’s kernel team and listen to what they were discussing. Most memorable to me were the fascination with the recently arrived OLPcs and that Dave Jones managed to get my Thinkpad X30 to no longer lock up randomly after starting X. I miss that kind of work sometimes, but working in the Eclipse world has its own fun challenges.

The second day was in a BarCamp format, which lives and dies with the attendees.

There were a lot of attendees.

There were a lot of suggested sessions.

This required some planning.

One of the earlier sessions I dropped in on was simply a meetup of folks with very tiny machines, such as the OLPC and Asus’ recently released EEEPC. The OLPC actually runs software provided by Red Hat and there were many of them in the room. The EEPC runs another customized Linux distribution, but is more of a conventional PC–essentially the hardware of early UMPC tablets in the more traditional laptop form factor. Both machines are surprisingly easy to work with.

A later session was going over how the bootup process could be improved. While much of it went over my head, it was still interesting to hear reasoned discussions of why certain replacements to the dated System V init daemon were better or worse, with a reminder that working code is often the best place to start from.


Afterwards was a talk on building RPMs the right way. Part tutorial and part refresher for me, it’s remarkable how complicated it’s gotten over the years while still keeping much of the original instructions written into the Red Hat Commercial Linux 2.0 manual valid.

A first round of drinks was sponsored by Red Hat later at The Flying Saucer. I don’t drink, but I was chided by a waitress for almost dozing off at the table. Good times.

Any day now…

I'm going to FUDCon

Execute them! Bogus.

Many of the Eclipse projects are presented as Platforms, but to make a successful platform you have to balance at least two factors in much the same way as an economist: the value provided and cost incurred. The value added is simply the feature set–is there something of use in there? The other factor, cost, is made up in part by the requirements. For Eclipse plug-ins this is often only thought of as which plug-ins it requires to run, but there’s also the Execution Environment to consider.

One of the great things about the PDE is that when you specify an Execution Environment for plug-in projects and have matching Installed JREs within the preferences, it will automatically target your plug-in projects to use the right JRE. No more warnings about generics in a project that hasn’t adopted Java5 syntax or about not supporting them in the targeted JRE. This even lets you build plug-ins specific to each environment if needed, allowing for multiple implementations of the same functions, or more commonly the graceful deactivation of certain features when running in older environments.

The larger ramification is that the Execution Environment is now every bit as critical to think about as the plug-in and version dependencies. If you are developing a plug-in that specifies an Execution Environment of J2SE-1.4 but has a dependency on a plug-in specifying an Execution Environment of J2SE-1.5, your plug-in now implicitly has an Execution Environment of J2SE-1.5 as well. Conversely, the Execution Environment you specify on your plug-in has a direct effect on how readily it can be used by someone else, and that affects the cost of adopting your platform. It’s little surprise that much of the Eclipse Platform as we know it requires J2SE-1.4 or less. So keep in mind the Execution Environment you choose for your plug-ins–some day you might find it running in the most unexpected of places.

The Bug Day Cometh

For those not in the know, a Bug Day is a day when we, the developers, pause for a moment and take a fresh look at our bug backlog. For the larger community it’s a chance to help triage bugs by sorting out which ones are still problems, or even just identifying the ones that need more information. After all, unless there’s enough information in the bug to help developers reproduce what’s broken, it can’t be fixed. For anyone who wants to get into the development of an Eclipse project, it’s also a great time to submit a patch and get feedback from the committers within the bug itself or through other avenues such as IRC. However you participate, it’s a day to remember that we can’t make our projects their best without the help of the community, and for the community to help us to scratch whatever has been itching at them.

As of right now, two committers have signed up to be contacts for the Web Tools Platform project, but I wouldn’t rule out there being more committers before the day itself arrives, or more projects at that. As has been pointed out elsewhere, the first day is largely an experiment.

Join us, won’t you?

Keyword filtering, or I hear the ’70s are making a comeback!

It’s a strange thing thinking about the evolution of interfaces for microcomputers. We started out with command lines, and then went to smarter command lines, and then swapped those out for GUIs. Browsing for the right command using windows, icons, and menus was supposed to be easier than trying to recall arcane command names and options, and yet here we are going back the other way. The rise of feature-laden applications and operating systems has led us back to relying on text, again, as Google Desktop finds itself preinstalled on my newest work machine and both Apple and Microsoft tout the built-in search facilities of their latest Operating System offerings.
And how is Eclipse related to this? Adopters probably realized early on that adding each preference page into their products had a cost: it made it harder for a user to find the important one. Eclipse 3.2 brought us the org.eclipse.ui.dialogs.FilteredTree control and used it in the Preferences and project Properties dialogs, helping to alleviate some of that problem. It searches the names of the individual pages for matches against what the user types into a text field, automatically benefiting from string externalization of the page titles. But did you know you it can go deeper? I present the org.eclipse.ui.keywords extension point. It allows you to define a list of keywords which can then be used for additional hits in the filter field, allowing a search on formatting to reveal WTP’s formatting-related preference pages:


Not bad for a extra couple of words.

On the eve of Europa

Looking back on the eve of Europa’s release, it’s hard to quantify just how much has happened since Callisto was unleashed upon the world. No doubt there will be many metrics reported within the next few days, builds done, plug-ins created, disk footprint altered, etc., but one number caught my eye: 45585. Well, 45586, now, and still counting. Bug 149295 has the strange honor of being opened at 9AM on June 30th, 2006, the minute that Callisto was meant to be released. That’s 149,294 entries in the system going from October 10, 2001 to the middle of 2006. And where do we stand now? The most recent bug I’ve seen opened is 194881, meaning that 45,486 entries have been added in the last year alone, and we’re still going.

Have you thanked your webmasters today?