truck-factor
A tool that estimates the Truck Factor of GitHub projects
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.4%) to scientific vocabulary
Keywords
Repository
A tool that estimates the Truck Factor of GitHub projects
Basic Info
Statistics
- Stars: 237
- Watchers: 15
- Forks: 24
- Open Issues: 7
- Releases: 3
Topics
Metadata Files
README.md
Truck-Factor
This is a tool for estimating the Truck Factor of GitHub projects, using information from commit history. Truck Factor (also known as Bus Factor or Lottery Number) is the minimal number of developers that have to be hit by a truck (or leave) before a project is incapacitated.
Environment
The scripts for extract commit information from git repositories are implemented using Shell and AWK. So, the execution environment must support those script languages. Optionally, the Ruby interpreter is required if you decide to use the Linguist library to automatically discard files like documentation and third-party libraries. See the specific Linguist requirements in linguist page.
[!NOTE] To use docker you can change the
git_repository_pathin.envfile.
Usage
Get the last version of the truckfactor-tool
To run the tool to perform these steps:
Clone the repository to be analysed.
- example:
git clone https://github.com/mtov/Truck-Factor.git
- example:
Build the necessary Java code.
- commands:
cd Truck-Factor/gittruckfactor; mvn package - docker:
cd Truck-Factor/gittruckfactor; docker compose jar
- commands:
Execute the scripts to extract information from the git repository to be analyzed:
- Extract commit and file information.
- command:
./scripts/commit_log_script.sh <git_repository_path> - example:
./scripts/commit_log_script.sh git/Truck-Factor - docker:
docker compose commit_info
- command:
- Extract files to be discard using Linguist library (Optional)
- command:
./scripts/linguist_script.sh <git_repository_path> - example:
./scripts/linguist_script.sh git/Truck-Factor - docker:
docker compose linguist
- command:
- Extract commit and file information.
Execute the gittruckfactor tool.
- command:
java –jar gittruckfactor-1.0.jar <git_repository_path> <git_repository_fullname> - example:
java –jar gittruckfactor-1.0.jar git/Truck-Factor aserg-ufmg/Truck-Factor - docker:
docker compose execute
- command:
Optional Settings
Repository specifc information can be provided using the files in the folder repo_info, which can improve the TF calculation results. The additional information supported are:
- Filtered files (
filtered-files.txt): set files that must be discard before start the TF calculation.- Info pattern:
<git_repository_fullname>;<file_path>;<filter_info>
- Info pattern:
- Aliases (
alias.txt): set developers aliases.- Info pattern:
<git_repository_fullname>;<developer_alias1>;<developer_alias2>
- Info pattern:
- Modules (
modules.txt): map files to modules.- Info pattern:
<git_repository_fullname>;<file_path>;<module_name> - * Module calculation not implemented yet.
- Info pattern:
Run-time settings
Algorithm's variables can be set by modifying the config.propertiesfile.
Example
Here are the TF values as estimated by this tool for some popular GitHub projects (using data from November, 2016):
- FreeCodeCamp: 1
- Bootstrap: 3
- D3: 1
- React: 4
- AngularJS: 6
- Font-Awesome: 1
- jquery: 4
- electron: 1
- tensorflow: 2
- docker: 13
- meteor: 5
- swift: 5
- vue: 1
- rails: 11
- atom: 4
More Info
Guilherme Avelino, Leonardo Passos, Andre Hora, Marco Tulio Valente. A Novel Approach for Estimating Truck Factors. In 24th International Conference on Program Comprehension (ICPC), pages 1-10, 2016.
Owner
- Name: Applied Software Engineering Research Group
- Login: aserg-ufmg
- Kind: organization
- Location: Belo Horizonte, Brazil
- Website: http://aserg.labsoft.dcc.ufmg.br
- Repositories: 32
- Profile: https://github.com/aserg-ufmg
Department of Computer Science, Federal University of Minas Gerais
Citation (CITATION.cff)
cff-version: 1.2.0
message: 'If you use this tool in your work, please cite it as below.'
authors:
- given-names: Guilherme
family-names: Avelino
email: gaa@ufpi.edu.br
affiliation: UFPI
orcid: 'https://orcid.org/0000-0002-8203-0638'
- given-names: Marco Tulio
family-names: Valente
email: mtvalente@gmail.com
affiliation: UFMG
orcid: 'https://orcid.org/0000-0002-8180-7548'
title: 'A Tool for Estimating Truck-Factors'
version: '1.2'
date-released: '2018-04-12'
url: 'https://github.com/aserg-ufmg/Truck-Facto'
keywords:
- truck factor
- bus fctor
- github
- knowledge concentration
preferred-citation:
type: conference-paper
message: 'If you use this tool in your work, please cite it as below.'
authors:
- given-names: Guilherme
family-names: Avelino
email: gaa@ufpi.edu.br
affiliation: Federal University of Piaui (UFPI)
orcid: 'https://orcid.org/0000-0002-8203-0638'
- given-names: Leonardo Passos
family-names: Passos
email: lpassos@gsd.uwaterloo.ca
affiliation: University of Waterloo
orcid: 'https://orcid.org/0000-0001-6591-993X'
- given-names: Andre Hora
family-names: Hora
email: hora@dcc.ufmg.br
affiliation: Federal University of Minas Gerais (UFMG)
orcid: 'https://orcid.org/0000-0003-4900-1330'
- given-names: Marco Tulio
family-names: Valente
email: mtov@dcc.ufmg.br
affiliation: Federal University of Minas Gerais (UFMG)
orcid: 'https://orcid.org/0000-0002-8180-7548'
doi: "10.1109/ICPC.2016.7503718"
collection-title: "24th International Conference on Program Comprehension (ICPC'16)"
pages: 10
start: 1 # First page number
end: 10 # Last page number
title: "A novel approach for estimating Truck Factors"
year: 2016
GitHub Events
Total
- Issues event: 1
- Watch event: 75
- Issue comment event: 6
- Pull request event: 7
- Fork event: 4
Last Year
- Issues event: 1
- Watch event: 75
- Issue comment event: 6
- Pull request event: 7
- Fork event: 4
Committers
Last synced: 10 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Guilherme Avelino | g****o@g****m | 31 |
| Marco Tulio Valente | m****v | 10 |
| Kevin Hernández Rostrán | k****5@g****m | 4 |
| Lars K.W. Gohlke | l****2@g****e | 1 |
| Clay Baenziger | c****b@c****t | 1 |
Issues and Pull Requests
Last synced: 11 months ago
All Time
- Total issues: 14
- Total pull requests: 12
- Average time to close issues: 9 months
- Average time to close pull requests: 15 days
- Total issue authors: 12
- Total pull request authors: 9
- Average comments per issue: 2.79
- Average comments per pull request: 0.5
- Merged pull requests: 6
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 4
- Average time to close issues: N/A
- Average time to close pull requests: 4 minutes
- Issue authors: 1
- Pull request authors: 4
- Average comments per issue: 0.0
- Average comments per pull request: 0.25
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- darioamorosodaragona-tuni (2)
- bkimminich (1)
- valeriocos (1)
- oferzi23 (1)
- dotchev (1)
- adelcast (1)
- leni-kirilov (1)
- astrojuanlu (1)
- yomimono (1)
- yeldiRium (1)
- eldy (1)
Pull Request Authors
- gavelino (3)
- kevinah95 (3)
- vrs1234salagar (2)
- nathanhleung (2)
- shapr (2)
- lkwg82 (1)
- m-clare (1)
- cbaenziger (1)
- pchaigno (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- com.google.guava:guava 18.0
- com.jcabi:jcabi-github 0.23
- log4j:log4j 1.2.17
- mysql:mysql-connector-java 5.1.32
- org.eclipse.jgit:org.eclipse.jgit 1.3.0.201202151440-r
- org.eclipse.persistence:eclipselink 2.5.2
- org.postgresql:postgresql 9.3-1100-jdbc41
- junit:junit 3.8.1 test
- ruby 2-alpine3.13 build