Eclipse Code Recommenders 2.4.0 Release Review

Type
Release
State
Successful
End Date of the Review Period

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Release

2.4.0

Description

This release includes a new installable feature: Code Recommenders News Feed. This feature allows users to subscribe to RSS news feeds and be notified of new articles in their IDE. Moreover, it allows plugins to pre-configure news feeds to inform the user, e.g., about updates or tips and tricks.

Code Recommenders itself and Code Recommenders Snipmatch received only minor bug fixes in this release.

 

API Certification

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

Architectural Issues

With Code Recommenders 2.0.0, the code base has seen a significant architectural redesign to cleanly separate UI from components useful in a headless environment. Compared to the 2.3.0 release, the 2.4.0 release has seen little changes with the exception of addition of the Code Recommenders News Feed feature. As this feature is largely independent of the rest of Code Recommenders, it makes full use of E4 functionality, including its DI framework and event bus.

The rest of Code Recommenders still exhibits these architectural issues of the original 2.0.0 release, hwoever:

  • 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. This change is 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 by default Code Recommenders performs network I/O in the following cases:

  • 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.
  • Whenever a library is accessed for 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.
  • Code Recommenders has the ability to query Maven Central in order to identify a library used by the user. To do so, a cryptographic hash will be send to a server not hosted by the Eclipse Foundation. By default, this ability is not used; it must be explicitly enabled by the user.
  • On start-up, the optional Snipmatch component pulls snippets from a Git repository hosted on git.eclipse.org.
  • Due to its nature, Code Recommenders’ log messages often refer to portions of the user’s code. If the user makes use of the Eclipse’s Automated Error Reporting facility, he or she should take care to read and, if necessary, sanitize the error report before sending.

If the user works in a severely restricted environment with limited or no Internet connectivity, Code Recommenders and its recommendation models can be downloaded and installed at once. The project website provides instructions for this use case, which is expected to be rare, however.

By default, Code Recommenders uses no cryptography. However, recommendation models or snippets may be served by HTTPS if the remote server supports this.

Wherever possible, links to web pages (e.g., documentation) from within Code Recommenders use HTTPS, not plain HTTP.

 

Non-Code Aspects
  • User Documentation: The current project website (online since December 2013) contains a short Getting Started guide, an extensive Manual, and a FAQ. The project website is linked to on the Welcome to Eclipse view shown after installation. Several subpages (manual, FAQ) are linked to from various places in the software (dialogs, preferences).
  • Localization: As of Eclipse Kepler, 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.1.13 on (released 23 March 2014).
  • Build system: 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 uses Eclipse Oomph both for the main project and its incubator projects.
  • 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 integrate additional recommendation engines with Eclipse Code Recommenders or how to obtain recommendations using the headless API. 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.4.0 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.

Subtypes-aware code completion maintains an index of the user’s project dependencies, which may take several minutes. This index is created on demand in a background thread, but only if the user expliclity enabled subtypes-aware code completion. (The user will be prompted to do during content assist the first time subtypes-aware code completion is applicable.)

 

End of Life

All components of Code Recommenders 2.3.x are also part of the 2.4.0 release.

Standards

Not applicable.

Communities

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

  • Blog posts announcing new features of Code Recommenders occur infrequently. 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.
  • The Eclipse Forum has never seen much traffic and is not used anymore. There exists an external support forum, which receives light traffic (1-2 questions/month).
  • Bugs and enhancements are tracked and discussed in Bugzilla.
  • Code Recommenders also solicits feedback on Stackoverflow. These sites are advertised on the Code Recommenders preference page and the Code Recommenders website’s community page, respectively.
  • Uservoice, another external website to solicit feedback, is not used anymore.

The Code Recommenders project 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 10-15 mails/month during the Google Summer of Code season and 2-5 mails/month during the rest of the year.
  • 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 and rarely. They are syndicated on Planet Eclipse.
  • As part of the Google Summer of Code 2016, the project has attracted one student contributor working on a Code Recommender Incubator project.

Code Recommenders coordinates itself with three other Eclipse projects: JDT, m2e, and Mylyn.

  • Regular testing against JDT milestones is performed by the Code Recommenders team. Coordination between the projects is mostly one-sided: JDT evolves and Code Recommenders adapts to it.
  • With the switch from the Aether library supplied by m2e to the one supplied by the Eclipse Aether project, many OSGi-related issues ceased to exist. Unfortunately, the Aether project has left Eclipse again for the Apache Foundation again. It has unclear whether this requires a switch back to m2e Aether or whether Code Recommenders can switch to the newer Aether libraries released by the Apache Maven project. At the moment, there exist just one outstanding bug that is due to an older version of Aether being used by Code Recommenders (Bug 480727), so making the switch to either source of Aether is not urgent.
  • Minimal 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. Since its release as part of Code Recommenders 2.0.7, this feature has required almost no maintenance effort.

 

This release is part of Neon