truck-factor

A tool that estimates the Truck Factor of GitHub projects

https://github.com/aserg-ufmg/truck-factor

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

bus-factor code-authorship mining-software-repositories truck-factor
Last synced: 7 months ago · JSON representation ·

Repository

A tool that estimates the Truck Factor of GitHub projects

Basic Info
  • Host: GitHub
  • Owner: aserg-ufmg
  • License: mit
  • Language: Java
  • Default Branch: master
  • Homepage:
  • Size: 21.9 MB
Statistics
  • Stars: 237
  • Watchers: 15
  • Forks: 24
  • Open Issues: 7
  • Releases: 3
Topics
bus-factor code-authorship mining-software-repositories truck-factor
Created over 10 years ago · Last pushed about 2 years ago
Metadata Files
Readme License Citation

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_path in .env file.

Usage

Get the last version of the truckfactor-tool

To run the tool to perform these steps:

  1. Clone the repository to be analysed.

    • example: git clone https://github.com/mtov/Truck-Factor.git
  2. Build the necessary Java code.

    • commands: cd Truck-Factor/gittruckfactor; mvn package
    • docker: cd Truck-Factor/gittruckfactor; docker compose jar
  3. Execute the scripts to extract information from the git repository to be analyzed:

    1. 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
    2. 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
  4. 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

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>
  • Aliases (alias.txt): set developers aliases.
    • Info pattern: <git_repository_fullname>;<developer_alias1>;<developer_alias2>
  • Modules (modules.txt): map files to modules.
    • Info pattern: <git_repository_fullname>;<file_path>;<module_name>
    • * Module calculation not implemented yet.

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

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

All Time
  • Total Commits: 47
  • Total Committers: 5
  • Avg Commits per committer: 9.4
  • Development Distribution Score (DDS): 0.34
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email 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
Committer Domains (Top 20 + Academic)

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

gittruckfactor/pom.xml maven
  • 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
.docker/linguist/Dockerfile docker
  • ruby 2-alpine3.13 build