tree d3d9378e31578afc9e2215e0ff247e26e73601f9
author Edwin Kempin <ekempin@google.com> 1452255481 +0100
committer Edwin Kempin <ekempin@google.com> 1457595295 +0100

Android app for sorting and reviewing changes

The 'Review It!?' app is an Android application for Gerrit that allows
sorting of incoming changes and review of small/trivial changes.

There is a drawer menu that allows switching between the sorting and
the review mode of the app.

Sorting of incoming changes
===========================

When working with Gerrit it is a common workflow that reviewers are
not always explicitly assigned, but that committers and contributors
watch the incoming changes and choose those changes for review that
are interesting to them.

Watching incoming changes can be done in different ways, e.g
- manually go through the list of open changes
- register project watches to get email notifications about new
  changes

These approaches have some problems in common when the number of
incoming changes gets too high:
- some changes of interest are not noticed (e.g. get lost in the mail
  inbox)
- at the time of notification there may be no time for immediate
  review, and at the moment when there is time to review, some of the
  interesting changes have been forgotten
- changes that are not interesting popup again and again whenever they
  are updated

The 'ReviewIt!?' Android app tries to solve these problems by offering
a simple way to sort incoming changes:
- mark interesting changes to review them later (by putting a labeled
  star on them)
- mark non-interesting changes as ignored

The actual review of the changes may be done in the Gerrit web UI on a
large screen or directly in the app by using its review functionality
(see below).

The idea of the sorting is that it allows you to stay updated about
your project while you are not in office (see new changes and sort
them), but the code review is done only later, e.g. because the small
display of a phone is not supporting reviews very well.

The changes that have been starred are accessible by a change query or
a Gerrit dashboard, and hence they can be easily found when there is
time to do reviews. The app should configure a 'My' menu entry for
this dashboard automatically (not implemented yet).

Updates for ignored changes will be filtered out so that the noise is
reduced.

In addition to starring/ignoring a change, the app also offers to skip
changes. Skipping a change means that the user is asked about this
change once more when it was updated.

Within the app you can define a change query for the incoming changes.
The results are then presented one by one. For each change a decision
(star, ignore or skip) has to be made to go to the next change.
Starring/ignoring a change can be done by swiping the change to the
right/left side. In addition there are buttons to trigger starring,
ignoring and skipping a change.

The main sorting screen provides the information that is most relevant
to deciding whether a change is interesting:
- subject + commit message
- project, branch, topic
- age (when was the change last updated)
- owner
- patch set number
- number of positive and negative Code-Review votes
- number of comments
- number of reviewers
- positive/negative Verified votes
- whether the change is mergable
- change status if merged/abandoned

This information is presented in a very compressed way and the focus
is on the subject and the commit message.

By clicking on the bottom of the change one can also go to a detailed
change view where more information is presented, e.g. the change
number, the change link, the approvals and the list of files. This
detailed change view is zoomable.

The file diff can be seen in a unified diff view with intraline diff
highlighting. If wanted one can start reviewing the change here (see
more about review below).

All actions (star, ignore and skip) are undoable by clicking on the
undo action in the menu, so that mistakes in sorting can be easily
corrected.

Sometimes when watching a change one knows another person that is
well suited to review this change. This is why there is an add
reviewer action in the menu that allows to add another person as
reviewer. Reviewer names are auto-completed on typing.

There are also menu entries to abandon/restore and reload the current
change.

Review changes
==============

It is envisioned to present the user a change list from which he can
select a change and start reviewing it (not implemented yet).

The files are shown as unified diff with intraline diff highlighting.
You can see the unified diff for all files in a single scroll view or
page through the change file by file. While scrolling the file name is
sticky at the top of the screen.

Context lines are collapsed and can be expanded as needed.

At the bottom of the unified diff view there is an expandable panel
that presents quick-voting buttons for the Code-Review label.

Pressing on a quick-voting button leads to a publish screen where a
summary message can be provided and voting on other labels is
possible. By clicking on the 'Publish' button the review is sent to
the server. If Code-Review+2 is selected a 'Publish and Submit' button
appears that allows to submit the change right away.

Inline commenting is not implemented yet.

The goal is to allow review of small/trivial changes, but not to
support review of arbitrary large changes.

Settings
========

A setting screens allows to configure the change query for the
incoming changes, the star label and the server configuration.

The star label will be used to mark changes as interesting or as
skipped.

It is possible to configure multiple servers, each with URL, user and
password.

For googlesource.com servers there is support to easily import the
user credentials by copy and paste.

The configuration is stored in the app preferences and the
configuration values are encrypted.

When starting the app for the first time there is a short introduction
that explains the basic functions and asks for the server connection.

Licenses
========
The 'Review It!?' app is licensed under the Apache License 2.0.
Executable distributions also include other software components that
are provided under additional licenses.

To connect to the Gerrit server the app uses the
gerrit-rest-java-client [1] by Urs Wolfer which is available under the
Apache License, Version 2.0.

The used icons are taken from the Material icons set [2].

The Diffy logo was created by Sara Owens (http://inkylabs.com/).

Disclaimer
==========

This app is still a prototype and not fully functional. E.g. the
ignore, skip and star actions are not implemented yet and don't have
any effect.

The ignore, skip and star functionality requires a server that
supports labeled stars and runs notedb.

Here some things that were not done for this initial version:
- implement change list for starting reviews
- implement ignore/skip/star
- more info on the detailed change screen
  * summary comments
  * hashtags
  * related changes
- implement paging for approvals on detailed change screen similar to
  how it is done for the files (implement a custom widget for the
  paging functionality that can be reused)
- allow to display more details as icons in change box
  * number of files
  * change size
  * number of changes in the same topic
  * icon for other labels (abbreviated label name overlayed with small
    thumb up/down icon in lower right corner), e.g. for Verified
- when swiping change box to left/right, in addition to changing the
  color of the change box, show an overlayed star/ignore image
  (relying on coloring only is bad for color blind people)
- add commit message to file list
- make bottom panel in unified diff pullable
- show commit message in Abandon/Restore fragments (as it is already
  done in PostReviewFragment)
- the configuration should allow to store multiple query
  configurations + the user should be able to switch between them
  quickly
- make buttons in setting screens blue
- allow to expand the one sentence help text describing the app to get
  a detailed description of the app (basically provide more info from
  what is contained in this commit message)
- the user should be able to configure favourite reviewers that can be
  added by a single click
- in the configuration there should be a button to create/update a My
  menu entry on the server that opens a query that shows all the
  changes starred by the app
- feedback button
- automatically check whether the server version is compatible with
  the app
- notifications when there are new query results
- implement proper build without committing the used libraries
- support anonymous try-out mode that only allows to page through the
  changes without any actions
- remember missing avatars and don't try to download them again and
  again (e.g. if avatars are disabled on the server)

[1] https://github.com/uwolfer/gerrit-rest-java-client
[2] https://design.google.com/icons/

Change-Id: I6a85bb2f3c80c0a47a448474b47a977151823a95
Signed-off-by: Edwin Kempin <ekempin@google.com>
