The time management book "Getting Things Done", by David Allen, promises to help readers handle work-life tasks more productively through a simple five-step plan: collect, process, organize, review, and do. The book's approach has become a popular model in the personal management and productivity industry, and has earned an eponymous acronym: GTD®. Now, a two-person development team in Australia has repurposed the GTD concept for the digital set, creating a software application to help the tech savvy but disorganised get things done. The application, ThinkingRock, was built on the NetBeans Platform and has been getting rave reviews. We spoke to the lead developer of ThinkingRock, Jeremy Moore, to learn about his team's experience using the NetBeans Platform.
What drew you to NetBeans?
I first started using NetBeans back around 2000 when I was learning Java. I think it was NetBeans 3.0 or something. The non-commercial and open-source nature of it was a big draw for me and there were no problems getting at any of the code. The documentation back then was lacking a bit, but there was always a good vibe with the NetBeans community. There was always help via the email lists.
As a long time NetBeans user, what changes have been the most striking or useful for you over the years?
NetBeans has come a long way and now has good documentation. I can't remember exactly what functionality was or was not there when I first started using it, but I do remember having all sorts of problems building an application on the Netbeans Platform, just trying to get the things that were supposed to work to actually work.
Now it is very easy to build a Rich Client Platform application (although the platform is not quite as separate from the IDE as I would like). There was not a lot of documentation back in those days and you really had to get your hands dirty. Now it's much better and there are blogs and lots of info on the Web as well as the NetBeans web site.
Did you evaluate other platforms?
Yes. We first just built ThinkingRock without using any platform at all, but soon realized that we were re-inventing the wheel in many aspects. For example, there was no need for us to implement our own drag-and-drop when that problem had been solved already. We then looked at various platforms, with the main contenders at the time (just over two years ago) being Eclipse and NetBeans.
We first looked at using Eclipse, but found it lacking. Our main reason for discarding it was their poor implementation of the Standard Widget Toolkit. Basically, it worked great on Windows, but not so great on the Mac. And, support for SWT was either buggy or non-existent on some platforms. (In fairness, the situation is probably a bit better today).
We wanted our application to work on as many platforms as possible, therefore we felt we needed a 100% Java solution. We also evaluated other platforms, but most were just getting started. They either lacked some functionality we really wanted, such as a plug-in architecture. Either that, or they were not mature enough.
What did you like about the NetBeans Platform?
It's 100% Java, and has the plug-in architecture that we needed, for starters. Also, it's now a mature IDE. I like the fact that it's open source and it's continually improving. Also, the NetBeans community spirit is a real plus.
Earlier you said you found the NetBeans documentation particularly valuable to you?
The documentation has gotten much better and the tutorials help a lot. For example, the Selection Management tutorial was a great help when we were working on that functionality.
Also, the e-mail lists, especially openide-dev, proved very useful. I would have to also say that the Rich Client Programming: Plugging into the NetBeans Platform book has been really helpful in understanding the NetBeans architecture.
What about NetBeans' plug-in architecture? How was it valuable to you?
Our rich client application consists of many modules which we can easily update and deliver via our update center—without making the user download the whole application. We are also adding new functionality which, because of the platform, we can deliver as plug-in modules. It's also nice that users have the flexibility to choose to add or remove functionality and modules.
Because NetBeans is open source, a main benefit is the fact that anyone can get the source, see what it actually does, and change it if they need to. So the developer is not totally reliant on some company to provide a solution that might be missing—usually for a fee and on their time schedule.
What APIs did you like?
The Lookup mechanism is probably one of the most useful. One of the things we use it for is with the service provider scenario. We can define a service API and then we, or anyone else for that matter, can provide service implementations and deliver them as plugin modules.
For example, we have a text component which allows the user to enter notes. They can also enter URL-type links to web pages and other things. We want this to be extensible so that we can easily handle new types of links or protocols so that, when the link is selected, the appropriate application will be fired up and take the user to the linked resource. We accomplished this by having a Service Provider API. Then we can look up all the provider instances to see if any can handle the selected URL, and if so, we call the provider application to handle it.
But there are other APIs I like, too, such as the windowing system, the explorer, the module system...
How many people are developing ThinkingRock? Does NetBeans offer you any advantages in working collaboratively with other programmers?
There are mainly two of us developing ThinkingRock, although we have had various contributions from our users. We haven't really needed collaboration tools apart from having our source in a subversion repository on SourceForge. For that, we use the NetBeans plugin for subversion, which works very well.
Any closing words about the NetBeans community?
You are always treated with respect when you ask questions on the email lists. I've seen that people go to a lot of trouble to help you. People have put a lot of effort into NetBeans over the years and not for financial reward (even though some are Sun employees). I think that the members of the NetBeans community really believe in what they are doing—and it shows.
- Learn more about ThinkingRock
- Download ThinkingRock at SourceForge
- Learn more about NetBeans Platform