Week 9 Picking Open Source Project Tutorial

In this week you will learn about

  1. The process of exploring Open Source projects
  2. Getting a high-level overview for potential projects for group assignment 3

Overview

This tutorial is inspired from CMU’s tutorial from one of the previous years [1]

Many important software that we use are actually open source projects! From consumer browsers like Firefox, to Apache HTTP server, they are all open source. In this tutorial you will explore as a team, learn how to identify active open source projects, and learn how to contribute to them. This recitation is in preparation for Group Assignment 3.

Activity 1: Pick and active, maintained repository

Note that the the open source projects here are in Java, however, the process applies to large projects in any programming language.

As a group, take a look at all of the recommended repositories listed here on this Google Sheet. Those are just suggestions, if nothing there interests your group, you can also take a look at the Awesome for beginners repository and the Apache Projects Directory.

Points to consider#

Avoid mirrors. . Mirrors are often large project teams that hosts a mirror of their repository, but actually work on the project using elsewhere (e.g apache/kafka: Mirror of Apache Kafka)

Inform the instructors which repository you have picked to investigate before moving on to the next task

Activity 2: Investigate and learn about their process (20 mins)

Split up your groups and investigate your chosen open source project and answer the following questions.

Project Information#

  1. Who are the maintainers of this project?
  2. Is there a contributors guide?
  3. What is the code’s license?
  4. What’s the main programming language?
  5. What software frameworks do they use, if any?

Project Activity#

  1. How active is the community?
    • When was the last commit?
    • When was the last PR accepted?
    • How long does it take to get a PR accepted on average?

Project Pull Request Process and Maintenance#

  1. Who should you ask if you have questions about committing to the repo?
  2. Do you have to do anything procedural to contribute (sign a licence, etc)
  3. Do the project use issue tags, if so, how?
  4. Are there any PRs that the maintainers asked for changes before accepting?If so, what did they ask for?
  5. Are there any test requirements to commit?
  6. Are there any automated checks that run when PRs are filed?
  7. Do the project maintainers perform code reviews before merging PRs?
  8. Are there any code/documentation style guidelines?

Activity 3: Share findings with the class

Share generally with the class what you found about your project (2 minutes per team).

Focus your sharing on

  1. How many people maintain this project?
  2. How active is this project?
  3. How do you contribute to this project (from start to finish)?

References

[1] CMU Tutorials: https://cmu-313.github.io/recitations/

bars search times arrow-up