Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/chalmerlowe/intro_to_sprinting

A gentle introduction to contributing to open source projects / open source sprints
https://github.com/chalmerlowe/intro_to_sprinting

education git github open-source sprinting sprints

Last synced: 1 day ago
JSON representation

A gentle introduction to contributing to open source projects / open source sprints

Awesome Lists containing this project

README

        

# Intro to Sprinting

This project is designed to help beginners learn AND practice the basic skills necessary to contribute to open source projects. While it is designed to be delivered as a workshop for a group of students, it can also be used individually as self-study.

It can be used in multiple ways:

* as a lead-in for open source sprints at programming conferences
* as class material for teachers
* as preparation for hackathons OR group projects
* as a resource for open source project leaders

# Why an introduction to sprinting?

At many programming conferences, time is set aside for developers to come together to work on open source projects (called sprints or sprinting). Many project leaders welcome new developers of all skill levels to contribute. This works fine if a newcomer has contributed to a project before and has an understanding of the tools and processes.

The struggle for both the project maintainer and the newcomer has been that beginners often have a significant learning curve and need to become familiar with too many new tools and new skills before they can successfully contribute.

They often turn to the sprint leader for help and mentoring on the basics of "contributing to open source". Things like these are fundamental skills, most of which are not specific to a given project.

* using version control software,
* interacting with version control repositories (repos)
* process of submitting patches and contributions
* setting up virtual environments (for Python developers)

They are often limited by the sprint leader's availability to help them learn. The sprint leader becomes, through no fault of their own, a bottleneck. The beginners often spend so much time figuring out the basics that they can't really get into the project sufficiently to understand nuances of the bugs they want to fix OR the contributions they want to add. Due to limitations on time, new contributors often leave the sprints without having successfully contributed to the project, at all. Furthermore, once new contributors arrive at home, they are often so removed from the project and the mentorship opportunity, that they may not be able to pick up from where they left off.

This project aims to fix some of these problems by having materials and instructions available via group/classroom study AND self-study so that new contributors can learn the basics before they ever sit down with their sprint leader and can start focusing more on the project and less on the learning curve. In addition, should they run into a problem, they have a ready resource to return to, thus taking some of the burden off the sprint lead.

# Overview

This workshop provides a high-level overview of the steps, tools and tradecraft needed to introduce beginners to open source sprints. The workshop provides lecture/demo **AND** lots of hands-on in the following areas.

* Using version control tools such as git and github
* Hands-on: Creating additions and changes to an open source project
* Getting those changes incorporated into the project via pull requests
* Understanding, creating, and using virtual environments

In addition, the overview will include numerous resources for self-study.

This project is based on conda, git, and github for Python sprints.
This project can be modified for the needs of other sprints and other languages.

# Prerequisites

Beginners will need to already know the following:

* How to edit plain text files on their computer

It helps if a beginner knows:

* The basics of using the command line (`cd`, `ls/dir`, etc)

For help with the above, see the [Student Preparation instructions](https://github.com/chalmerlowe/intro_to_sprinting/blob/master/class_materials/prereq_student.md)

Beginners will NOT need to have in-depth knowledge on the following:

1. Programming OR Python (many contributors to open source never write code: they help with design, documentation, etc)
2. Any specific open source project

| Next |
|:---------|
| [Table of Contents](./class_materials/README.md) |