Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] bus-factor automation #3

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Conversation

pigoz
Copy link

@pigoz pigoz commented Apr 8, 2016

This tries to give some numbers on the actual distribution of diffstats for
last year's contributors.

do not merge yet discussion is needed

This tries to give some numbers on the actual distribution of diffstats for
last year's contributors.
@dhinus
Copy link
Contributor

dhinus commented Apr 8, 2016

Awesome! 👍

I would like an algorithm to generate a single number from that data. A naive implementation could be
bus_factor = number of people with > x% contributions

For example for x = 5, you would get:
clojure/clojurescript bus factor 1 (only 1 contributor has more than 5%)
Microsoft/TypeScript bus factor 8 (8 contributors have more than 5%)

A better implementation should take the exact percentages into account and could return a float instead of an int. I need more coffee to think of how it could be implemented, though.

@caesarsol
Copy link

In my opinion this bus-factor index should be an index ranging from 0% to 100% where:

  • 0% means the total of commits are done by 1 person, which is bad
  • 100% means every person made an equal percentage of commits, which is good (and utopic)

what do you think?

@pigoz
Copy link
Author

pigoz commented Apr 8, 2016

Yes, I prefer @caesarsol suggestion.

With @dhinus approach, for any number of x you will encounter bad cases. For instance for X=5, in

82.46% – wm4 – (1713809)
7.73% – pigoz – (160735)
3.10% – haasn – (64531)
0.84% – giselher – (17462)
0.83% – ubitux – (17186)
0.76% – kevmitch – (15867)
0.65% – divVerent – (13551)
0.65% – Kovensky – (13456)
0.60% – lachs0r – (12520)
0.46% – rossy – (9504)

you would get bus-factor = 2, but you are going to look at a totally different project if the first or the second maintainer leaves

@Granze
Copy link
Member

Granze commented Apr 8, 2016

Probably the one suggested by @caesarsol is a better approach.

The problem with the @dhinus formula is that we have to choose what x should equal to. And we could discuss this for hours, days, forever. :)

@mfirry
Copy link

mfirry commented Apr 8, 2016

Should we give Truck-Factor a try?

@dhinus
Copy link
Contributor

dhinus commented Apr 8, 2016

@caesarsol I like the idea, how would you compute the index?

@mfirry that looks very interesting but seems very conservative and I'm afraid all compile-to-js languages would be TF=1 or TF=2. I tried downloading it and analysing a few repos, I got TF=2 for clojurescript and scala-js, and an error for Typescript ("Too much columns.", which sounds like a Dogescript error :P). It's also a bit of a pain to use, it requires you to manually clone the repos you want to analyse, and if you don't run it from the correct directory it fails with weird errors.

@mfirry
Copy link

mfirry commented Apr 8, 2016

So number-of-commits / number-of-committers?

@caesarsol
Copy link

Hey, I have currently no idea how to implement a similar index 😄

But I'm experimenting a little with different metrics and visualizing graph data, take a look at
https://gist.github.com/caesarsol/05d3bee9f75aa35fe7e2390fd49a2f58
(with the help of @YeasterEgg)

For a quick view, paste it in http://requirebin.com/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants