Analysing Success

Analysis of Common Patterns among Successful GitHub Projects.

Get Started

Abstract

Open source projects are the backbone of today's technology . We find them in programming languages that are at the core of any software (e.g. Luna or Rust), frameworks that shape the web (e.g. Laravel, React or Angular), toolkits that help scientists handle and analyse data (e.g. numpy, pandas) or development tools used by all software teams around the world (e.g. git), to name a few examples.


Do successful open source projects have common patterns?

Through this project, we hope to gain some insights into what contributes to the success of an open source project. This might allow us to identify common patterns among successful projects , and formulate some guidelines that might be beneficial to other projects' success.









Conclusion

Through this ADA project, we were able to identify a series of common features among successful GitHub projects. These might be useful as guidelines for future projects:

  • Roles: certain roles emerge among contributors in these successful projects. Those are:
    • Supervising commits: these contributors focus on merging others' works. This can be for several reasons, such as reviewing the work or fixing formatting. Some projects use bots to help with this role.
    • Refactoring code: these contributors tend to refactor existing code, therefore increasing code quality and reducing code smell.
    • Dealing with issues/bugs: fixing bugs makes sense, but just how widespread this role is shows this ought to be be a priority.
    • Dealing with the issues reported on GitHub: as with above, dealing with issues is quite important, especially those reported by the community and that affect people in practice.
    • Dealing with merges: merging others' work makes sure that changes are applied well, and adds another tester to the chain.

  • Common patterns: these patterns are visible throughout the projects we analysed.
    • Commit summary length: just as recommended by git guides, an important portion of commits has a summary of around 50 characters. Summaries should be clear and concise.
    • Closing GitHub issues: another common pattern is resolving GitHub issues, showing the importance of being active and staying on top of them.
    • Average GitHub issue resolution time: most issues are resolved within a couple of months on average, taking into consideration the time for any discussion, development and testing.
    • Frequency of commits: on average, a new commit is made at least every day. (Alternatively, a line of code is committed every 15 minutes on average.)
    • Daily/hourly activity: most projects seem to have a certain work schedule, although community-driven projects have a more flexible schedule (in some cases having a weekend activity that surpasses that of weekdays).
    • The presence of a small but vital development team is a common pattern, both for community-driven and company-backed/sponsored projects.

  • Communities: we also notice common patterns when it comes to a project's community and interactions with it
    • Communication: being neutral when communicating is the go-to behavior among contributors and between contributors and the community. Still, interactions are generally slightly more positive than negative.
    • Having a popular community on StackOverflow/Reddit is also common, suggesting the importance of encouraging the growth of the community.
    • Having an active/responsive community on StackOverflow is another common pattern, which also makes sense as it's where people seek help to use a project.