Calculate development effort estimation from a Git repository.
usage: git2effort [-g] [<args>] <git_repository> | --help | --version
optional arguments:
-t THRESHOLD, --threshold THRESHOLD
Threshold value (in commits) to determine if a
developers is full-time devoted to the project.
Default=75.
-p PERIOD, --period PERIOD
Length of the time period (in months). Default=6.
optional arguments:
-g, --debug set debug mode on
-h, --help show this help message and exit
-v, --version show version
- Python >= 3.4
- perceval >= 0.12
- tabulate >= 0.8.7
Note that you should have also the following packages installed in your system:
- git
- build-essential
There are several ways for installing git2effort on your system: from packages or from the source code.
Perceval can be installed using pip, a tool for installing Python packages. To do it, run the next command:
$ pip3 install git2effort
To install from the source code you will need to clone the repository first:
$ git clone https://github.com/gregoriorobles/git2effort.git
Then you can execute the following commands:
$ pip3 install -r requirements.txt
$ pip3 install .
The threshold t determines what developers are considered full-time in a period of time p. So, if in p months a developer does t commits, the developer is full-time. If not, his/her contributions will be a fraction of that.
The value of the threshold t depends on the project, in particular, on its process (e.g., if there is a review process in place, if there is commit squashing when merging). Below you can find a list of projects that can serve as an example. The t values given below are supported by feedback provided by the developers of these projects. In all cases, the period is 6 months (the default one for git2effort).
Example threshold t values (for a default period of 6 months):
12: Strong review process with commit squashing, like in OpenStack and Moodle
18: Review process with commit squashing, like in Linux and Webkit
30: Soft review process, like in Mediawiki
50: Strong pull-request-driven process, like in Ceph
75: Soft pull-request-driven process, like in git2effort
100: Non-engineered process
To estimate the effort for a Git repository, execute the next command. Take into account that Git has to be installed on your system.
In the case of Perceval, we assume that it is a project that follows a strong pull-request-driven process, like the one in Ceph, so we choose a threshold value of 50:
$ git2effort --threshold=50 https://github.com/chaoss/grimoirelab-perceval.git
To estimate the effort for a Git repository, execute the next command. Take into account that Git has to be installed on your system.
In the case of git2effort, we assume that it is a project that follows a soft pull-request-driven process, so we choose a threshold value of 75 (as this is the default one in git2effort we do not need to specify it):
$ git2effort https://github.com/gregoriorobles/git2effort
This is research in progress. If you have any comments or suggestions, please contact me (grex at gsyc.urjc.es). I will be more than happy to hear to your feedback.
If you use git2effort in your research papers, please refer to Estimating development effort in free/open source software projects by mining software repositories: a case study of openstack -- Pre-print:
Robles, G., González-Barahona, J. M., Cervigón, C., Capiluppi, A., & Izquierdo-Cortázar, D. (2014, May). Estimating development effort in free/open source software projects by mining software repositories: a case study of openstack. In Proceedings of the 11th Working Conference on Mining Software Repositories (pp. 222-231).
@inproceedings{robles2014estimating,
title={Estimating development effort in free/open source software projects by mining software repositories: a case study of openstack},
author={Robles, Gregorio and Gonz{\'a}lez-Barahona, Jes{\'u}s M and Cervig{\'o}n, Carlos and Capiluppi, Andrea and Izquierdo-Cort{\'a}zar, Daniel},
booktitle={Proceedings of the 11th Working Conference on Mining Software Repositories},
pages={222--231},
year={2014}
}
Licensed under GNU General Public License (GPL), version 3 or later.