[sr-dev] code review tools

Alex Lutay alutay at sipwise.com
Tue May 20 11:33:38 CEST 2014


Hi all!

On 20/05/14 09:35, Daniel-Constantin Mierla wrote:
> Some time ago it was proposed to use a code review tool to analyze
> patches, ... gerrit was proposed before  by Victor Seva....
>
> Besides the above one, perhaps github has an integrated review tool. I
> can be considered as an alternative as well....

I have experience with Atlassian Crucible, GitHub and Gerrit.
Each of them do the job well, sure each has pros&cons.

====================================================
Atlassian FishEye+Crucible:
Pros:
  - recommended tool if you use Jira as bugtracker (nice integration 
with FishEye/Crusible/Bamboo/..)
  - commercial, but free license for opensource products is available.
  - Atlassian provides all the software you need for middle/big company 
(users/repositories/projects management, wiki, 
WebGit/corereview/bugtracking/...)
  - Nice interface with a lot of functionality for code review
  - A lot of metrics for management

Cons:
  - Java
  - Not the easiest/best integration with Jenkins
  - Atlassian focused in big companies, it requires hardware/human 
resources to setup/support the product(s)
  - Requires really good hardware for good performance, anyway 
performance is not the best one as WEB pages are heavy

====================================================
GitHub:
Pros:
  - Community likes GitHub
  - Perfect choice if you are startup (ho hardware/maintenance fee)
  - Nice/useful review/bugtracking functionality (quick, minimalistic 
design)
  - Perfect for projects which need no or minimum code support

Cons:
  - Not the best users management, also not very flexible access rights 
for teams
  - Using review on GitHub is nice if GitHub is the main storage for 
code, otherwise you have to deal manually with pull requests.
  - Jenkins continues integration before merging pull request to master 
is not easy task
  - No control on server/service

====================================================
Gerrit:
Pros:
  - Perfect speed of WEB pages, full control of your server/service, the 
best control for projects/people/roles/branches/tags/...
  - Good/clear and flexible workflow for supporting small/medium/big 
projects, samples:
     - https://wiki.openstack.org/wiki/Gerrit_Workflow
     - http://source.android.com/source/life-of-a-patch.html
  - Perfect integration with Jenkins and Git (google "gerrit git-review")
  - Mouse is not required to review the code (you have keyboard 
shortcuts and API for everything)
  - Transparent tests of code before merging the code to master. Even if 
project has no person to review it, the new code can be tested 
automatically on Jenkins and merged to master automatically if pass all 
the tests, otherwise inform the author that he failed the test with 
quick ability to upload fixed code (new "Patch set").

Cons:
  - Java (but it requires less resources the Atlassian FishEye+Crucible)
  - Difficult initial configuration
  - Not the best integration with bugs tracking systems (history of 
development is split between Gerrit and bugtracker)
  - 1 + 1 != 2 (Gerrit flags +2/+1/0/-1/-2 are not clear for newbies, 
but really the question of 10 minutes of education)
  - High availability out of the box is not available, but still possible.
  - Perfect tool for commits review, but not for "feature review", as 
reviewing big functionality requires a lot of small commits review.
====================================================

IMHO, Gerrit is the best choice here, because Kamailio already has own
Git/Jenkins/GitWeb infrastructure. Gerrit will be easily integrated here 
(it will stay between Git and Developers).

I can help Victor install and configure it just to try.

-- 
Alexander Lutay
Head of Quality Assurance
Sipwise GmbH, Campus 21/Europaring F15
AT-2345 Brunn am Gebirge

Office: +43(0)13012036
Email: alutay at sipwise.com
Website: http://www.sipwise.com



More information about the sr-dev mailing list