Tuesday, October 6, 2009

Refactoring Sequential Java Code for Concurrency

As programmers, we have an innate understanding of the power of computation.  I would estimate that more effort has been made on developer's tools and libraries than any other singular domain.  We make programs to help us program.  It's a challenge we understand.

From a strictly technical standpoint, any job that a programmer can do, a program can do, given sufficient understanding of the problem.  Highly-technical problems in particular lend themselves to automation.  The Concurrencer prototype is a recent example of this: an Eclipse-based refactoring tool to automatically multi-thread recursive Java functions.

It seems to do a reasonably good job of performing some code translations, and can catch many issues that a developer might miss.  Theoretically, these tools can be very useful going forward.

But I have two major objections with this tool, neither of which are technical in nature:
  1. If you want your tool to be used, host it somewhere visible: First off, this is an Eclipse plug-in, and should have an update site.  Eclipse provies some simple tools to enable this.  It's an easy way to get more people to use your program.  Also, there have to be better places to host a project than a personal university web page--those are prone to disappearing with IT upgrades.
  2. If you want your tool to improve, make the source public: I understand this is a research paper, and the authors may want to keep the code private until they publish a paper on it.  But once the paper is published, there's no good reason to keep the code private.  I can download the .jar and decompile the bytecode anyway, so why add hurdles?  Host it on SourceForge.  It'll attrack more interest in your work.  Hey, it's not even so hard to host an Eclispe update site on SourceForge.  The paper discusses an assortment of potential enhancements to the tool that I suspect the authors will not have time to implement themselves.  Why not make it easy for others to build off your work?
It is the responsibility of academics not merely to discover, but to share their knowledge.  There's no reason I should have to wait until the 2020s before universities begin to disperse their research in an open way.

If researchers are hesitant to take these measures because they are time-consuming, there's no reason not to off-load that work to grad students.  Whatever measure, the usefulness of a tool is generally proportional to its community.  Why not build a community around your ideas?

No comments:

Post a Comment