Twitter github

Plug-in Spy

By popular demand, I tossed Plug-in Spy on a temporary update site for people to try out and give feedback. Note, it needs Eclipse 3.3+ and to try it out, simply select things and press F9. If you have ideas, feel free to file bugs or enhancements against the PDE Incubator with the tag [spy]. I recently added the support of getting at those pesky menu ids you need to contribute to Eclipse menus (thanks Paul Webster).

Note, this is incubator code and there is no guarantee of stability or “product readiness.” Maybe given another bloody mary or two, I can add more functionality ;p

The real world of license hell

See anything missing from there? Google does a great job with its SOC program, but I think from an Eclipse perspective, there’s something missing about what type of licenses students can choose from that box. I think Google’s initial intentions were good (ie., not to confuse students), but in the real world there’s a ton of licenses out there and as a software engineer, you have to learn about them (even funny ones like BeerWare). Maybe Google could be more instructive to students about the various licenses and even categorize them like the OSI.

Introspecting Eclipse

William Godwin once said,

The philosophy of the wisest man that ever existed, is mainly derived from the act of introspection.

On my last plane ride (after a bloody mary), I did some introspection about what I think Eclipse is missing the most. With Eclipse 4.0 in the not so distant future possibly, it’s a good time for introspection.

I tried to think back about 4-5 years ago when I started to first get into Eclipse development. What was the worst pain for me? Well, here’s a good one. One of my first Eclipse-related task was to extend a commercial IDE by adding some menu entries to an existing view and develop a new editor. Sounds easy? Well, at least not back then for me. I was scouring source code to find what the relevant “object contributions” would be along with looking for the source code of the Java editor as a staring ground. This ate up a lot of time for me and left me frustrated with Eclipse but I sort of grew accustomed to it as a normal way of development (plus, I got really familiar with the Eclipse plug-in base when time went on).

I thought to myself… well, now that I’m a seasoned Eclipse developer armed with another bloody mary and about 90 minutes until my flight lands… what can I hack up as a proof of concept to improve my workflow? Let me introduce Plug-in Spy:

What’s going on here? I simply selected a class within the Package Explorer and hit F9 to let Plug-in Spy introspect what’s going on with Eclipse at the moment. Plug-in Spy pops up and lets me know what the active part (along with the implementation class PackageExplorerPart and which plug-in it came from) and active selection. This may not look incredibly useful to a seasoned Eclipse veteran, but for newcomers who ask the question “Where can I see the source for this view or editor” (which by the way, is the #1 asked question at conferences for the PDE team).

I also did a thought experiment while in the plane when analyzing one of the Mylyn features (Report as Bug):

I thought… either Mik/Eugene/Rob must’ve scoured some Eclipse source code first to figure out what the proper way of adding this functionality would be. After they implemented it, they probably thought, “this shouldn’t of taken as long as it did.” If they were armed with good introspection tools, they would have seen that an object contribution of type LogEntry would do it:

What’s the lesson learned here? Eclipse lacks good tools for introspection (we have things like SWTSpy but that’s not enough) in my opinion. I think when we look toward the future of Eclipse, we should keep tools like this in mind. This would allow developers to focus more on their implementation instead of crawling through and learning Eclipse’s internals.

Note: The Plug-in Spy currently exists in the PDE Incubator and is not “product ready” nor are there plans currently to make it so at the moment. It’s simply a proof of concept for now to collect ideas and see what people think. My next step with the spy is to add support for getting information about menus. This will help with the eternal question of “oh my gosh, how do I contribute to this menu or toolbar.” If you’re interested in enhancements, please report them to bugzilla under the Incubators component with the [spy] header.

Lotus is Built on Eclipse

The new version of Notes shipped today. This will probably mark one of the largest RCP deployments if not one of the coolest in my opinion. I still get a kick out of starting Notes with “-console” and doing silly things with the OSGi console 🙂

Oh, on a side note, it’s funny to see that one of my favorite IBM Zurich interns has launched an assault on the Eclipse mailboxes. Ah interns, what can you do without them 🙂

Eclipse 3.4 Plan

The Eclipse 3.4 Project Plan has been posted. My favorite items are around increased MacOS support, Provisioning and creating the Eclipse 4.0 plan. However, my dream of having a nice visualization toolkit (Draw2D/Zest) in the SDK (comparable to Java2D) is not on the plan (maybe we can fit that in with Eclipse 4.0…)

Eclipse and Innovation

I just wanted to point people towards an interesting post from Matt Asay on CNET. Mike has an interesting quote that I like to share:

“Free riding happens, but it hasn’t been an issue that has caused us any major problems. Every biological system has natural things like symbiotic relationships, parasitic relationships, etc. Those same things happen in the Eclipse ecosystem.

But the advantages of working with Eclipse to get things done far outweigh the advantages of getting something for free. Do you really want to rely on someone else to fund a project to solve someone else’s customer problems, rather than yours, and leave it to a process that may take more time than you have?

But it’s not just a time/money tradeoff, but rather a question of what is platform and what is product? Building proprietary infrastructure is rarely a good idea anymore. If a vendor is wasting R&D money on infrastructure then they are both wasting money and time, both of which could be better employed building on Eclipse.

If someone is going to make something proprietary, they need to be really, really sure that it’s giving their company sustaining, differentiating value. If they’re just reinventing the wheel, it’s the wrong business move 99% of the time.”

Eclipse is full of symbiotic relationships. We all need each other to ensure the success and growth of Eclipse as a platform.

SWT Ribbon

Since not everyone in the world browses the Nebula newsgroups, I figure I would point people to some interesting work being done by Emil Crumhorn (a newly minted Nebula committer). Pictures speak louder than words for me on this kind of stuff:

Noteworthy keyword

I’ve blogged about this issue in the past and today the wonderful Eclipse webmasters have finally added the ‘noteworthy’ keyword.

In PDE, we are tagging our bugs in such a way that you can query our noteworthy items for each release. (starting with 3.4, ie., 3.4M1). We also plan on using this as a way on tagging what we are working on that we think will be noteworthy in a future release. This provides us a small way of doing our planning in a more transparent manner. I hope other teams will follow suit if they think it’s useful for their project.

Resizing Images using SWT

I was toying with ECF today along with those new fancy custom tooltips.

In the process of doing this, I was dealing with images obtained from google’s GTalk server and they were coming back in crazy shapes and sizes. I thought to myself, it can’t be that hard to resize images, lo’ and behold… it really isn’t… here’s a code snippet to do it (may not be the best way, but it works):


private Image resize(Image image, int width, int height) {
Image scaled = new Image(Display.getDefault(), width, height);
GC gc = new GC(scaled);
gc.setAntialias(SWT.ON);
gc.setInterpolation(SWT.HIGH);
gc.drawImage(image, 0, 0,
image.getBounds().width, image.getBounds().height,
0, 0, width, height);
gc.dispose();
image.dispose(); // don't forget about me!
return scaled;
}

Now all I need to figure out is how to make those new fancy custom tooltips even better. I have a usecase where I want a user to click that tooltip, if so, leave the tooltip open and allow the user to click possible hyperlinks and close it manually later on. The reason I want to do this is because I want to allow people like the Mylyn folks maybe to plug something in where they could have a hyperlink to show relevant tasks on a user.

New TOC Editor

In the upcoming 3.4M1 release, the PDE and UA teams will be bringing you a new TOC editor. Most of the work was done by our talented new intern, Noam.

Thank you Noam!