Archive for the Development Category

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?

EclipseCon 2007 WRUP

Eclipse 2007 was a unique experience, despite being in the exact same location as last year’s conference. I think it was a far more user focused event than the previous two years, signifying a possible shift in the demographic that Eclipse is reaching. Also, it was the first where I was presenting without much guidance from my mentor, David (although thankfully in partnership with Amy Wu). And then there was the Sumo wrestling…

Sunday

As is usual for me when traveling, I pack almost directly from the dryer into my suitcase. This has the unfortunate effect of keeping me up late into the night and ensuring that I arrive at the airport groggy and grumpy for a trip that would have me in the air for at minimum 7 hours. I remember not getting much sleep last year, either. Compounding all of this is the usual anxiety that someone who only speaks publicly once or twice a year is bound to have. I did have the forethought to spring for a new set of headphones that I could wear comfortably for the entire day. I had worn a set of Sony MDR-Q22LP headphones the last time I was on a plane, spring-loaded over-the-ear clip-ons that are perhaps the most comfortable I’d ever found, at least to me, but they were terrible at keeping out any background noise. To my surprise, noise canceling earphones have come down in price quite a bit and the pair I’d picked one up a few days earlier proved to be quite handy. Besides isolating me from outside noises it also canceled a fair amount of the engine noise of the plane. Even sitting next to the engines on the second leg of the trip, it made the time fly by (with the help of old episodes of The Office , to which I’d finally relented to watching and was enjoying tremendously). Being able to take a much-needed nap in peace didn’t hurt, either. Arriving earlier in the day than I’d expected, I had dinner in the hotel bar with some friends from Red Hat and then tried to get some sleep for the big day ahead.

Monday

While we’d completed our presentation before leaving for the conference, I was still unsure of their contents. As with the slides I’d used for EclipseWorld 2006, it was tricky to find a balance between putting in just the talking points and putting in large amounts of technical detail that would make for useful reference later. Chris Aniszczyk had mentioned in the IRC Committer channel that he was preparing parts of his tutorial as cheat sheets , the prevailing opinion from last year being that you can’t legitimately design a session for unknown attendees whose experience ranges from “never used Eclipse” to “stepped through source code” with the expectation that everyone would finish every step within the time allotted. Tutorials requiring that the attendees be able to leave with ready-to-run code also led us to create a plug-in project template for a simple web deployment descriptor editor, hoping that this with the cheat sheets would allow the attendees to proceed at their own pace with the two of us roaming the room for more on-on-one discussion.

The morning passed without incident, but as the presentation time approached, I still hadn’t thought of a grandiose way to open the tutorial. A humorous anecdote? A disarming question? At the least I was sure my old friend the “dramatic pause at the start” wasn’t the right way to go (it worked in college, really). I don’t remember what I ended up saying, but I don’t think it mattered in the grand scheme of things. As usual, I’m sure I spoke way too fast, but that was a constant problem for me even during my Public Speaking course back in college, some (incoherent mumbling) years ago. Except for some glitches setting up our 2.0M5 development milestone build (such as the little-known fact that WTP 2.0 effectively requires JRE 1.5 ), I think it went pretty well. I then went to a short tutorial on Java Web Application Development with WTP and had an enjoyable dinner with some other WTP Committers.

Tim deBoer and a very tired Craig Salter

Tuesday

For me, the highlight of the day was a talk showing off Lotus Notes 8.0 (formerly known as Hannover), the first version to be built on top of Eclipse RCP. Some elements of the application remain native for backward compatibility, and they mentioned some interesting usability issues they ran into that led them to the UI that was shown. If nothing else, the prospect of being able to write full-fledged plug-ins for it opens up a world of possibilities. If Eclipse was originally built to integrate development tools, Notes 8.0 has the potential to integrate all sorts of communication and collaboration software.

The receptions afterward were an interesting mish-mash of things. For one, with a limited number of tickets for drinks, even for a soda, I followed Ben Konrath’s suggestion of trying a non-alcoholic beer.

Me, holding one of the most foul things I've ever drank

It was mostly out of curiosity, as I don’t drink alcohol, but the flavor reminded me somewhat of BAWLS. IBM held an “Asian-themed” reception (although they seemed to ignore that India is in Asia) that included, of all things, Sumo wrestling. Sumo wrestling’s just something I’ve been wanting to try out for a while, and as the evening wore on (and after some folks I know had left), I did. Now, bearing in mind that my opponent was noticeably taller than me and that the suit made it impossible for me to bend my knees, the outcome was no surprise.

What have I gotten myself into? Fear me!  And stop laughing! Ow.

Wednesday

I attended the keynote on Wednesday morning. It was fairly entertaing with a lot of ideas and notions put forth, some of which I disagreed with, but some, such as that Open Source software tends to be the crappiest available, were surprising. In a perfect Free Market, that would tend to be true since the low cost of acquisition would drive inferior proprietary solutions out of business, leaving the remaining proprietary solutions clearly superior to the Open Source ones. My biggest problem with this notion is that it enforces the excuse of “hey, it’s free” for when something goes wrong.

Gerry Kessler and I hammered out some API details that should make things easier on folks working with custom tag libraries. Wednesday also saw the What Sucks About Eclipse panel take place. Expecting there to be nothing but venting and haterade, I skipped it but in my absence a few interesting questions were asked, including why there are so many different XML editors around from Eclipse.org. The answer is three-fold.

  1. Timing. Eclipse 1.0 debuted in late 2001 while WTP’s initial source contribution was in the Summer of 2004. You had to be able to edit Ant scripts and plugin.xml files somehow before that.
  2. Dependencies. WTP’s XML Editor and DTD and XML Schema models require EMF, and EMF is not part of the Eclipse SDK.
  3. Feature sets. The other editors aren’t so much general-purpose XML editors as editors that understand the syntax and their own problem domain. They don’t have DTD and XML Schema support under them, nor are they aimed at being extensible to the extent that WTP’s is.

The evening ended with a mass gathering in the hotel bar with the staff struggling to keep up and the attendees overrunning the entire place. I may be developing a taste for near beer.

Thursday

Back again next year?  Looks like!

As I was feeling oddly under the weather on this day, I again missed the keynote. I did make to to the Usability and User Interface Best Practices panel, though. Being extensible is a huge strength of Eclipse, but the lack of an overall UI design can easily lead to a cluttered UI when lots of unrelated plug-ins are thrown together. It’s not a simple or easy problem to solve, especially when not everyone’s even paying attention. While there are guidelines that address some issues, but it’s good to know that there are folks keeping an eye on the future.

Friday

Back to Raleigh, back to working on WTP 1.5.4 and 2.0M6. And then there’s the planning for next year…