Feb 15, 2011

Eclipse Code Recommenders 0.1!

We are happy to announce the first release drop of Code Recommenders as Eclipse project!  It's just 4 weeks ago that the project was provisioned - but quite a lot has changed since.

During last weeks Code Recommenders stepped out of its fairly ad hoc build and test process and moved towards a somewhat more mature and defined process. We'll see whether the love we put into the build system pays out in future :-)

Apropos love: The project website is up with a new project logo and new screencasts. Please check out eclipse.org/recommenders/ and read eclipse.org/recommenders/about/logo for an explanation of the logo. We are curios to hear how you like website and logo!

But despite all this, let's get to the nitty-gritty stuff. What has changed in the code?

Okay, okay... let's get to the important stuff!

The guiding principle for the first releases drops of Code Recommenders is "It shouldn't hurt!" This means we spent most of the time on improving performance.

For instance, a lot effort has been spent on making Code Recommenders' code completion fast. There is still some extra overhead when a recommendation model has to be loaded the first time, but after that, computing  recommendations for these types takes 10-50 milliseconds only! Compared to previous versions this is at least one order of magnitude faster!

Furthermore, given that most of the time is spent (re-) doing work that JDT code completion has done before (computing proposals, figuring out which completion kind was requested etc.), there is quite a lot potential push performance down to just a few milliseconds! The pure recommendation process is that fast!

What else changed? Let's look at the screenshots below:

Code Completion on Variables:
Well, this stayed the same compared to previous versions. Thus, just for completeness:

Of course, this works with prefix tokens as well:

Completion in Anonymous Inner Classes:

This is pretty new - and fast! Whenever you trigger code completion on variables even declared in an enclosing class, Code Recommenders can propose you a set of likely methods for this context too.

Completion on This:
Maybe obvious but somewhat tricky to implement is this:

Completion on Anonymous Method Returns:
Earlier versions of Code Recommenders required you assign anonymous types to local variables before anything was proposed. This is history now:

Completion on Class Bodies:
Want to know which methods you may override in the given class? Here you go:

Cool! What else changed? 
The configuration. Code Recommenders is now enabled on a per project basis. Thus to enable Code Recommenders you have to either

Enable Code Recommenders via code completion shown below:

or by selecting Add Recommenders Nature from  the project's context menu:

Can I Use It For My Projects? Which Frameworks Are Supported?

For this release drop we worked on performance and IP cleanliness. Over the next releases drops we will add more and more frameworks. Luckily, the guys around Yoxos / EclipseSource support our mining efforts by providing us with tons of example applications. Many thanks to the team around Jochen Krause, Jordi Böhme Lopez - and Holger Staudacher as the man-in-the-middle supporting us with tips and tricks in many ways :-)

To see which frameworks are currently well supported please checkout this temporary listing here. We will provide more detailed statistics as soon as we have the new data collection framework online. Promised.

Where do I get it?
Pick it from the Eclipse marketplace or direct your Eclipse update client to this update site: http://download.eclipse.org/recommenders/updates/dev

What Comes Next?
Exciting features are almost ready:

Andreas Kaluza further improve the call chain completion as described in this post. This feature will probably be part of the next release drop.

Stefan Henß' templates completion engine (somewhat similar to the SWT templates engine but driven by the calls recommender engine) is almost ready for release next drop.

But there is quite a lot in the pipeline... stay tuned.

Special Thanks

First, the Code Recommenders team now consists of two full time committers (and a bunch of students :-)). Johannes Lerch joined me back in December and has made a fantastic job since then. My thanks to him for his great passion on working on code recommenders' website, build/test system and in particular for improving code recommenders.

Second, I wanna thank the Eclipse IP team, namely Sharon Corbett and Gunnar Wagenknecht, who already spent quite some time on checking our dependencies - and will probably spent much more time later on. Thanks!

Third, thanks to my project mentor Chris Aniszczyk for pushing me through the IP process and initial steps, and thanks to Jochen Krause and Ralph Mueller for the meetings and discussions on Code Recommenders.

Please enjoy this release update drop but report all errors (even the smallest one) to the forum or directly to our bugzilla!


P.S.: Say it thousand times: "It's a drop, it's a drop, it's a drop..." until there is a official review by the EMO :-)