This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process document) and is written to declare its intent and scope. This proposal is written to solicit additional participation and input from the Eclipse community. You are invited to comment on and/or join the project. Please send all feedback to the https://dev.eclipse.org/mailman/listinfo/mylyn-dev mailing list.
Code reviews have many benefits, most importantly to find bugs early in the development phase and to enforce coding standards or guidelines.
ReviewClipse was started as a research project by Mario Bernhart, Christoph Mayerhofer and Prof. Thomas Grechenig in 2008. ReviewClipse is a code review plug-in for Eclipse, which helps developers to review the source code efficiently on a per changeset basis - the item under inspection is one changeset in the revision control system, influenced by the changeset definition of SVN. The tight integration of the review plug-in into the Eclipse development environment helps the developers to accept the review task as part of their daily workload, like writing code, debugging or refactoring. Because of its simple design it is possible to configure the review process with flexible assignments and filters according to the role of each team member. The review data is stored in XML files stored directly in the revision control system. There is no need to setup any further server-side application. The reviewer uses the review editor to inspect the filtered changesets, compares different versions of a source code file with the compare editor and leaves his rating and optional comments for the committer of the changeset. The review editor aligns with the usability concepts of the Eclipse environment, so the initial training consumes little time. Currently the development effort is aimed towards various feature requests from the community, especially inline commenting for source code reviews.
ReviewClipse has an active user community and was presented at EclipseCon 2009, Eclipse Summit Europe 2009, SubConf 2009, Eclipse Magazin 06.09 (German), DZone, Heise Developer (German) and Eclipse Demo Camp Vienna 2009.
The concept and architecture of ReviewClipse in a nutshell: ESE09 Slides
From a Mylyn user's perspective, binding the review to a Mylyn task would be highly beneficial for the following reasons:
- the task is the core element of the developer's work
- a task state may serve as trigger for reviews
- a task relates to corresponding changes (e.g. list of changesets or an attached patch) which may be reviewed together
The scope of the Mylyn Reviews project is to:
- do reviews based on Mylyn tasks
- filter the review scope e.g. all test cases
- provide inline-commenting for source code reviews
- incorporate the review tasks in the Mylyn task list
- NOT change any existing APIs of Mylyn
Mylyn Reviews aims to be a convenient review tool for Mylyn. It does not require any server-side components other than a Mylyn task repository and optionally a SCM server.
The review tasks will be rendered as Mylyn tasks and possibly as subtasks of the corresponding task under review. Review tasks can be generated the following ways:
- Manually generated from the changesets/revisions of changes related to a Mylyn task.
- Manually generated from a patch attached to a Mylyn task.
- Manually generated from a Mylyn task context.
A review can be planned for multiple reviewers, which may have a different filtered selection of the review scope e.g. reviewing of all test cases. A review is represented as one task in the respective task repository and contains the following information:
- The review definition: scope, reference to the original task, references to the scope, filters, list of reviewers etc. (one task attachment)
- The review data: state and comments (one task attachment per reviewer)
While this proposed design does not directly support the ReviewClipse work-flow, a migration path will be provided at a later time.
|.reviews.core||This plug-in contains the logic for creating the review task. It is also responsible for persisting the review information.|
|.reviews.ui||This plug-in contains the UI components for the task editor page for review tasks|
|.reviews.egit||This plug-in contains the SCM connector for git using EGit.|
|.reviews.cvs||This plug-in contains the SCM connector for CVS.|
|.reviews.subclipse||This plug-in contains the SCM connector for subversion using SubClipse.|
|.reviews.subversive||This plug-in contains the SCM connector for subversion using Subversive.|
The UI and non-UI logic are separeted into different plug-ins.
Configuration of the corresponding Team Provider of the projects is used.
The initial contribution will cover the .reviews.core, .reviews.ui, .reviews.subclipse and the .reviews.subversive plug-ins. The EGit and CVS Support is currently under development and will be merged later on. The existing code depends only on freely available plug-ins (see the MANIFEST.MF of ReviewClipse for further details) and uses the following libraries: lib/commons-logging-1.0.4.jar, lib/log4j-1.2.11.jar, lib/jsr173_1.0_api.jar, lib/resolver.jar, lib/schema.jar, lib/xbean_xpath.jar, lib/xbean.jar, lib/xmlbeans-qname.jar, lib/xmlpublic.jar. Further, the SWTCalendar (under the MIT Licence) was modified and used.
Our agile development process will follow eclipse.org's standards for openness and transparency. Our goal is to provide a tool to conduct code reviews as part of the day-to-day developer activities. We will actively encourage contributions to Mylyn Reviews. We also plan to help improve the Eclipse platform by submitting patches and extension point suggestions. The initial committers are:
- Mario Bernhart (INSO): project lead
- Christoph Mayerhofer (INSO)
- Kilian Matt (INSO)
- Stefan Strobl (INSO)
The following projects have expressed interest extending the model or tools, contributing ideas, guidance and discussion. Key contacts listed.
- Vienna University of Technology, Research Group for Industrial Software INSO
- ReviewClipse Project
- Tasktop Technologies
The following Architecture Council members will mentor this project:
- Mik Kersten
- Chris Aniszczyk
We expect to extend the initial set of committers by actively supporting a developer community. We will make it easy for interested parties to take an active role in the sub-project by making our planning and process transparent and remotely accessible.
ReviewClipse was downloaded 6000+ times. We assume to have around 1000 active users. With the tight integration into Mylyn, the potential user community will be extended significantly. Many ReviewClipse users requested a task-centered review approach. Though, to support a direct migration from ReviewClipse to Mylyn Reviews, a non-task based approach may be implemented.
2009-12 v0.1: First open source release
2010-01 v0.2: Patch based reviewing
2010-02 v0.3: Task changeset and context based reviewing
2010-04 v0.4: Inline commenting for source files
Changes to this Document
|2009-12-14||First public version|