Eclipse Code Recommenders 2.5.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.

Wednesday, December 6, 2017
Release: 

2.5.0

Description: 

This release includes new functionality:

Code Recommenders Statics-Completion

Statics-completion will provide users with recommendations as to which static method to call. For example, when triggering content assist on java.util.Collections, the proposals for emptyList may be highlighted, along with a percentage how likely such a call is. (In the future, these recommendations may be extented to accesses to static fields, like EMPTY_LIST.)

This functionality is part of the Code Recommenders for Java Developers feature. For Oxygen.2 (to which Code Recommenders 2.5.0 will be contributed) statics-completion will be disabled by default. Users will have to explicitly enable on the Code Recommenders > Completions preference page.

After some experience with the feature has been gained, the feature is planned to become enabled by default for Oxygen.3.

 

API Certification: 

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

Architectural Issues: 

The Code Recommenders 2.5.0 introduces no architectural changes. In particular, the new feature introduced with version 2.5.0 (statics-completion) uses the same architectural separation between headless API and UI components that has been introduced with Code Recommenders 2.0.0.

The Code Recommenders project is aware of the planning councils’s recommendation to move to Guava 21 for Oxygen. However, as Guava types like Optional and ImmutableList are part of Code Recommenders’ public API, this cannot be done without a major release, as clients may be broken (see this post to cross-projects-dev for reasons why). As Code Recommenders is unprepared to break clients at this point in time, we have chosen to stick with Guava 15 for now. To avoid any OSGi wiring issues arising out of multiple Guava versions available in the same OSGi runtime, extra care has been taken to verify that the manifests of al Code Recommenders OSGi bundles use proper uses directives.

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.
  • Code Recommenders registers an RSS news feed, which will be polled at regular intervals (every 9 days) from  www.eclipse.org. This happens only if the user has the Ecliipse Code Recommenders News Feed plug-in installed. This plug-in is installed by default in the Eclipse IDE for Java Developers and Eclipse IDE for Eclipse Committers EPP packages. While the RSS news feed is hosted at www.eclipse.org, the posts linked from the feed may be hosted on non-Eclipse servers (e.g., in an external blog of a Code Recommender committer).

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 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).
  • News Feed: The Code Recommenders project offers an RSS news feed, which links to blog bosts that describe a Code Recommenders feature in more detail and that announce an update. If the Code Recommenders News Feed plug-in is installed, notification popups inform the user once about new news items.
  • Localization: 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.
  • 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.

 

Conforms To UI/UX Guidelines: 
Not verified
Usability Details: 

Code Recommenders 2.5.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.4.x are also part of the 2.5.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. They also may be included in the Code Recommenders News RSS feed registered with the News Feed Eclipse plug-in
  • 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 is used for announcements and surveys. Aside from that, it sees very little support requests.
  • 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.

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 0-3 mails/month, not counting mails sent by the Eclipse Automated Error Reporting service.
  • 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).
  • The Code Recommenders project make heavy use of the Eclipse Automated Error Reporting service and regularitly scans incoming reports.
  • 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. They are not included in the Code Recommenders News RSS feed.

Code Recommenders coordinates itself with two other Eclipse projects: JDT 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. There has been one instance, however, where testing against milestones failed to catch a bug introduced rather late on the way to Oxygen.0: Bug 522054, caused by a change in JDT, prevents recommendations on types for a modular JRE.
  • 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, alhough occassionally bug reports are directed at the wrong project (Bug 526264), creating some small review overhead.
This release is part of Eclipse Oxygen.