Program finds popular GitHub projects with a bus factor of 1.
Input: programming language name, number of projects to consider.
Output: list of tuples containing the project's name, top contributor's name and their contribution percentage.
With given programming language name (language
) and a project count ( project_count
),
program fetch the first project_count
most popular projects (sorted by the
number of GitHub stars) from the given language
.
Then, for each project, its contributor statistics are inspected.
Project's bus factor is 1 if its most active developer's contributions
account for 75% or more of the total contributions count from the top 25 most active
developers.
Bus factor is a measurement which attempts to estimate the number of key persons a project would need to lose in order for it to become stalled due to lack of expertise. It is commonly used in the context of software development.
For example, if a given project is developed by a single person, then the project's bus factor is equal to 1 (it's likely for the project to become unmaintained if the main contributor suddenly stops working on it).
$./ bus-factor --language rust --project-count 50
project: 996.ICU user: 996icu percentage: 0.80
project: ripgrep user: BurntSushi percentage: 0.89
project: swc user: kdy1 percentage: 0.79
project: Rocket user: SergioBenitez percentage: 0.86
project: exa user: ogham percentage: 0.85
project: rustdesk user: rustdesk percentage: 0.85
project: sonic user: valeriansaliou percentage: 0.94
project: iced user: hecrj percentage: 0.88
project: delta user: dandavison percentage: 0.88
project: navi user: denisidoro percentage: 0.79
project: hyper user: seanmonstar percentage: 0.79
project: book user: carols10cents percentage: 0.76
project: xsv user: BurntSushi percentage: 0.92
project: py-spy user: benfred percentage: 0.81
Clone the repository:
git clone https://github.com/wkargul/bus-factor.git
Build the repository using Docker:
docker build --build-arg REPO_NAME="bus-factor" -t bus-factor:latest .
Run the application either with your env file (consists of GITHUB_TOKEN=):
docker run --env-file Docker-test.env bus-factor:latest bus-factor --language <language> --project-count <project_count>
or just with env var as a command line parameter:
docker run -e GITHUB_TOKEN=<your GITHUB_TOKEN> bus-factor:latest bus-factor --language <language> --project-count <project_count>