Eclipse Code Recommenders 2.1.0

2.1.0

Description

This release integrates the Snipmatch code snippet search engine (formerly an Incubator project of Eclipse Code Reocmmenders), which makes it easy to search for and insert code snippets provided by the community.

Under the hood, the performance of loading recommendation models has been greatly improved.

API Certification

The project leadership certifies that the APIs in this release are "Eclipse Quality".

Architectural Issues

With Eclipse Code Recommenders 2.0.0, the code base has seen a significant architectural redesign to cleanly separate Code Recommenders’ IDE-integration from the recommendation engines, which are now also usable in a headless environment. This redesign has proven itself during the work on Code Recommenders 2.1.0 and remains unchanged.

Two architectural issues of the previous 2.0.0 release remain:

  • Eclipse Code Recommenders uses Google Guice as its primary dependency injection mechanism; some extension have to be contributed using Guice Modules rather than using Eclipse extension points. In addition, Code Recommenders internally mixes Eclipse 4 and Google Guice DI for accessing preferences. For future releases we may investigate how to move from Guice to Eclipse 4 DI, but this would require a significant amount of work to be done in both Code Recommenders and E4 to support required concepts. It’s not yet on the roadmap for any future release.
  • Code Recommenders uses Google Guava’s implementation of an EventBus instead of reusing Eclipse 4 IEventBroker. This is mainly because there was no reason to switch from Guava to the Eclipse implementation. This may change in future releases.
Security Issues

Code Recommenders does not handle personal information and does not share details about a user’s code with any entity on the web. Users should be aware, however, that Code Recommenders performs network I/O in three cases:

  1. On start-up, Code Recommenders checks for updates of a model index file hosted on download.eclipse.org. If updates are available, a larger download (< 1 MB) is triggered.
  2. Whenever a library is accessed the first time, Code Recommenders checks for updates to the respective recommendation models hosted on download.eclipse.org. If updates are available, a larger download (up to several MB) is triggered. Both update checks and downloads may leak information about the libraries used by a developer. To prevent this, auto-download mode can be disabled; model archives can still be downloaded upon explicit user request.
  3. On start-up, the optional Snipmatch component pulls snippets from a Git repositroy hosted on git.eclipse.org.

By default, Code Recommenders does not use cryptography. However, recommendation models or snippets may be served of HTTPS if the remote server supports this.

Non-Code Aspects

User Documentation: In December 2013, the Eclipse Code Recommenders website has received a complete overhaul. The website contains both a short Getting Started guide and an extensive Manual. The project website is linked to on the Welcome to Eclipse view shown after installation.

Localization: As of Eclipse Kepler, Eclipse Code Recommenders is fully internationalized and relies on the Eclipse Babel project for localization. Internationalized resource files have been made available to the Babel project from Code Recommenders 2.0.6 on (released 10 March 2014) with the notable exception of resource files part of the Snipmatch component, which only later became part of the Code Recommenders code base (on 30 April 2014, after a restructuring review).

According to Babel’s translation statistics the translation of Code Recommenders 2.x has already progressed farther than that of Code Recommenders 1.0 (part of Kepler).

Build System: Eclipse Code Recommenders is build with Apache Maven and Eclipse Tycho. It makes some use of the Common Build Infrastructure (Gerrit, Hudson, signing webservice), but does not (yet) inherit from the CBI’s parent POM. To ease initial project setup, Code Recommenders is an early adopter of Eclipse Oomph.

Developer Documentation and Code Examples: Code snippets showcasing how to use the low-level headless APIs introduced with Code Recommenders 2.0.0 are kept with the source projects. They should provide sufficient information on how to design your own recommenders on top of Eclipse Code Recommenders.

The Jayes bayesian network library part of the Eclipse Code Recommenders project is featured on the project website and has furthermore been documented in an extensive blog post.

Usability Details

Code Recommenders 2.1 is stable and designed for daily and frequent use. It should run without any issues in terms of performance or memory consumption on standard development machines.

 

Users of the subwords completion feature (disabled by default) should be aware that it may, in case of constructor or type completion, trigger long-running indexing operations in JDT and thus may occasionally fail due to timeout limits that are put in place. As these timeouts are a function of the user’s workspace size, users with large workspaces (>150 dependencies) can selectively disable subwords completion in the preferences (Code Recommenders > Completions > Subwords) for constructors, types, or both.

End of Life

Users who have previously installed the Snipmatch feature from the Code Recommenders incubator project should be able to seamlessly migrate to the updated Snipmatch feature under the Code Recommenders umbrella; said feature will no longer be available from the incubator’s update sites.

Standards

Not applicable.

Communities

The Eclipse Code Recommenders project interacts with its end users in various ways and places:

  • Blog posts announcing new features of Code Recommenders occur about bi-monthly. They are syndicated on Planet Eclipse.
  • Short announcements are made on both a Google+ page and Twitter account. However, much of the communication happens over the project lead’s Google+ and Twitter accounts. A better support by the Eclipse Foundation (in particular on Google+) would be greatly appreciated.
  • The Eclipse Forum has never seen much traffic and is not not used anymore. There exists an external support forum, which receives very light traffic.
  • Bugs and enhancements are tracked and discussed in Bugzilla.
  • The Code Recommenders 2.0 release has been presented during four Eclipse DemoCamps. The current 2.1 release will be presented this summer as part of three further Eclipse DemoCamps (at different locations).

The Eclipse Code Recommenders projects interacts with both its adopters and developers/committers through the same set of channels:

  • The project’s developer mailing list is the primary instrument for coordination among developers. The list receives about 20-50 mails per month. A significant amount of traffic is due to new committers, in particular Google Summer of Code participants, finding their way around the codebase.
  • Planning and prioritizing decisions are noted in Bugzilla by assigning target versions to the individual issues.
  • Contributions are accepted through Gerrit only. Part of the code review are automatic integration tests on the project’s Hudson instance (HIPP).
  • Blog posts on technical topics surrounding Code Recommenders in particular and Eclipse/OSGi development in general are published infrequently. They are syndicated on Planet Eclipse.
  • As part of the Google Summer of Code 2013, the project has attracted five student contributors. Four of them have become regular committers for Eclipse Code Recommenders or one of its incubator projects. In the Google Summer of Code 2014, six students (three of them have already participated in 2013) are mentored by committers of the Code Recommenders project.

Code Recommenders coordinates itself with three other Eclipse projects: Aether, m2, and Mylyn.

  • In the wake of Code Recommenders 2.1.0, significant coordination effort was required with the Eclipse Aether and m2e projects, as Code Recommenders switch from the Sonatype Aether library provided with m2e 1.4 to the recently released Eclipse Aether library. In particular, compatibility with both m2e 1.4 (which uses Sonatype Aether) and m2e 1.5 (which uses an incompatible, pre-1.0 version of Eclipse Aether) has been thoroughly tested. It is expected that the necessary amount of coordination with these two projects will decrease again in the future, once m2e switches to Eclipse Aether 1.x.
  • Minor coordination effort is required with the Eclipse Mylyn project, due to an (optional) integration of Eclipse Code Recommenders’ intelligent code completion engine with Eclipse Mylyn’s task-focussed UI. This feature has been released as of Code Recommenders 2.0.7 and has not caused any compatibility issues.
This release is part of Luna