My name is Chingiz. I'm a student
from Kazakhstan. I would like to participate in GSoC this year
contributing to the Review Board project.
My main area of interest in IT is web development. I'm experienced with Zend Framework and also familiar with Django.
I used svn in my projects and had later switched to git and familiar with both at a good level.
My proposal is about IDE integration. I would like to get feedback on it from the developers of Review Board.
The proposal follows.
Review Board and Emacs integration
==================================
Abstract
========
GNU Emacs is an extensible IDE supported over a wide variety of platforms.
It can be extended with Elisp. A wide range of Elisp-based modes
currently allow users to perform many development-related tasks not
limited to writing code.
In this project I propose to integrate
Review Board with Emacs environment by creating a plugin which will
allow to post, examine and update review requests. It will also allow to
browse review request diffs and locally apply them.
Detailed description
====================
Task description and subdivision
--------------------------------
The plugin will communicate with a Review Board server using the REST API. [2]
The review board server URL will be determined from the VCS settings.
Review request post will be initiated by a key-bound command which will display a form to fill in the request details.
In
this view, another key-bound command will create a new request on the
server using the specified details. This command will take an optional
revision range parameter and will post the request by invoking
post-review.
Another command will list the user's review requests grouped by
categories (screenshot 1). From this view, a user will be able to open
the review request view (screenshot 2).
The review request view
will display request metadata and list available diff revisions. From
this view a user will be able to change the review request status,
examine a particular diff revision and apply a diff revision to the
local source tree (screenshot 2).
Diff revisions will be displayed using Ediff [3], a mode in Emacs
which allows to browse through the differences between a pair of files
(screenshot 3). It will display two files side-by-side visually marking
the changes.
After examining the diff revisions a user will be able to apply a
specific diff to the VCS by clicking a button in the review request
view.
Mockup screenshots
-------------------
(1)
Review request list view
(2)
Review request details view(3)
Diff revision view
Benefit to reviewboard
======================
This
plugin will enhance the workflow of Review Board users who use Emacs by
providing the functionality to browse and apply review requests from
within the editor.
Milestones and project plan
===========================
April 25 - May 23
-----------------
Study Elisp and the necessary editing mode functions.
Think
over the best way to apply the review request changes to the source
tree. For example, after patching the code, the plugin could insert the
review request URL and description into the commit message and allow the
reviewer to edit the message before committing. The commmit invocation
could be done via the emacs VC tool which supports all open source VCs
used by Review Board.
Design the functionality to switch between multiple files while viewing a diff revision.
May 23 - June 7
---------------
Implement review request posting.
June 7 - June 21
----------------
Implement review request list retrieval and display. Implement review request details view.
June 21 - July 15 (mid-term evaluation)
Implement side-by-side diff revision view with Ediff. Implement patching of the local source tree with a specified diff.
July 15 - August 1
------------------
Implement
switching between multiple files while viewing diff revisions. Complete
the local source tree patching. Define key-bindings for all commands.
Write user documentation.
Continuing development or maintenance
=====================================
After GSoC I will maintain the plugin focusing on its stability. I will fix bugs and keep in touch with interested people.
References
==========
[1] A guided tour of Emacs
http://www.gnu.org/software/emacs/tour/[2] Review Board REST API
http://www.reviewboard.org/docs/manual/dev/webapi/
[3] Ediff introduction
http://www.gnu.org/software/emacs/manual/html_node/ediff/Introduction.html