blob: aab5f5546cd33da636ef425d7f18d1614bca61a5 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Netbeans Platform Interview: ThinkingRock and Getting Things Done</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="author" content="lloyd.dunn@sun.com">
<meta name="description" content="
Interview with Jeremy Moore, lead developer of ThinkingRock on the NetBeans Platform
">
<meta name="keywords" content="
NetBeans, IDE, Platform, integrated development environment, interview, ThinkingRock, Getting Things Done
">
<link href="../../../netbeans.css" rel="stylesheet" type="text/css" media="screen" />
<style type="text/css">
.photobox {
float: left;
padding: 0 1em 1em 0;
}
.photobox p.caption {
margin: 3px 0;
font-size: smaller;
}
.lead {
margin: 1em 0;
font-size: 1.2em;
}
.callout {
font: 1.5em/1.5em serif;
color: #ee6b00;
border-left: 1px solid #d1d1d1;
width: 180px;
float: right;
padding: .25em 1em .75em 1em;
margin: .5em 0 .5em 1em;
}
.infobox {
width: 180px;
border-left: 1px solid #d1d1d1;
float: right;
padding: 0 1em .75em 1em;
margin: .5em 0 .5em 1em;
}
.infobox p {
color: #ee6b00;
margin: .7em 0 .3em 0;
padding: 0 0 3px 0;
border-bottom: 1px solid #d1d1d1; }
.infobox li { margin: 0 0 0 -2em; }
hr {
clear: both;
border: 0 none;
height: 1px;
border-bottom: 1px solid #d1d1d1;
margin: .25em 0 1em 0;
padding: .25em 0 1em 0;
width: 100%;
}
h1, p { line-height: 1.5em; }
q:before { content:"“";}
q:after { content:"”";}
</style>
</head>
<body>
<h1>NetBeans Platform Provides the Pre-invented Wheel <br>So You Can Get Things Done
</h1>
<h3>An Interview with Jeremy Moore, Software Developer of ThinkingRock</h3>
<p class="lead">
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&nbsp; acronym: GTD<sup>®</sup>. 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, <a href="http://www.trgtd.com.au/">ThinkingRock</a>,
was built on the <a href="http://platform.netbeans.org/">NetBeans
Platform</a> 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.
</p>
<div class="photobox">
<img id="thinkingrock" src="../../../images_www/articles/interviews/thinkingrock.jpg"
alt="ThinkingRock development team" title="ThinkingRock development team" />
<p class="caption">The ThinkingRock development team out on a rock, er, thinking</p>
</div>
<p><b>What drew you to NetBeans?</b></p>
<p> 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.
</p>
<p> <b>As a long time NetBeans user, what changes have been the most
striking or useful for you
over the years?</b>
</p>
<p> 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.
</p>
<p> 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.
</p>
<div class="callout">
<q> We first just built ThinkingRock without using any platform at all,
but soon realized that we were re-inventing the wheel in many aspects.
</q></div>
<p><b>Did you evaluate other platforms?</b></p>
<p> 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.
</p>
<p> 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).
</p>
<p> 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.
</p>
<p><b>What did you like about the NetBeans Platform?</b></p>
<p> 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.
</p>
<div class="callout">
<q> NetBeans is now a mature IDE. I like the fact that it's open source
and it's continually improving.
</q></div>
<p><b>Earlier you said you found the NetBeans documentation particularly valuable to you?</b></p>
<p> 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.<br>
</p>
<p>Also, the e-mail lists, especially openide-dev, proved very
useful. I would have to also say that the <a
href="http://www.amazon.com/Rich-Client-Programming-Plugging-NetBeans/dp/0132354802/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1227622445&amp;sr=1-2">Rich
Client Programming book</a>
has been really helpful in understanding the NetBeans architecture. </p>
<p><b>What about NetBeans' plug-in architecture? How was it valuable to
you?</b></p>
<p>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. </p>
<p>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.</p>
<div class="infobox">
<p><b>What is ThinkingRock?</b></p>
<ul>
<li>ThinkingRock, a time-management&nbsp; application based on the principles laid out in David Allen's book "Getting Things Done"</li>
</ul>
<p><b>How do I get it?</b></p>
<ul>
<li>Download ThinkingRock <a href="http://sourceforge.net/project/showfiles.php?group_id=194713">here</a>.</li>
</ul>
<p><b>Operating systems?</b></p>
<ul>
<li>Windows, MacOS X, Linux</li>
</ul>
</div>
<p><b>What APIs did you like?</b></p>
<p>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.
</p>
<p>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.</p>
<p>But there are other APIs I like, too, such as the windowing system,
the explorer, the module system. ...</p>
<p style="font-weight: bold;">How many people are developing
ThinkingRock? Does NetBeans offer you
any advantages in working collaboratively with other programmers?</p>
<p>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. </p>
<p><b>Any closing words about the NetBeans community?</b></p>
<p>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.</p>
<h2>Additional Resources<br>
</h2>
<ul>
<li>Learn more about <a href="http://www.trgtd.com.au/">ThinkingRock<br>
</a></li>
<li><a
href="http://sourceforge.net/project/showfiles.php?group_id=194713">Download
ThinkingRock</a> at SourceForge</li>
<li>Learn more about <a href="http://platform.netbeans.org/">NetBeans
Platform</a><br>
</li>
</ul>
</body>
</html>