COMS 4995 Open Source Development

Fall 2020

Course info

In this course, students will learn how to build and maintain open source projects.

Students will be responsible for both supporting an existing open source project of their choosing, as well as creating their own open source project (both in either Python or Javascript, under the direction of the instructor). In lieu of homeworks or exams, ongoing progress reports and a final presentation on these two will serve as the grading basis for the course.

The course will include an overview of general software engineering concepts, including version control, testing, modern development workflows (primarily GitFlow), and software licensing, as well as a brief history of open source software (GNU, FSF) including major court cases in copyright, patent, and trademark law (e.g. Oracle v. Google).

We will also learn about popular tools for

Beyond the basics, students will learn how these tools can be integrated together in their open source projects to better manage their development and community.

Supplementary materials

News

Schedule

Note that the following schedule is tentative. It will be updated as we go.

# Date Topic Readings Assignments
1 T 9/8 Course Overview - slides Producing Open Source Software Chapter 1
2 R 9/10 History - slides GitHub setup and gitter
3 T 9/15 Projects The Cathedral and the Bazaar Due Thursday, September 24, 2020 by 11:59pm EST
PR project proposal to the proposals repo
4 R 9/17 Git
5 T 9/22 Starting Your Project Due Tuesday, September 29, 2020 by 11:59pm EST
Add desciption and tags to your project, add a license badge with Shields.io
6 R 9/24 Agile/Kanban
7 T 9/29 GitHub Project Setup Due Thursday, October 1, 2020 by 11:59pm EST
Change project repo to new name. Create first issues. Create issues to add testing, add docs, and release v1. PR into proposal with new name and link
8 R 10/1 Testing Due Tuesday, October 13, 2020 by 11:59pm EST
Setup automated testing for project. Require tests to pass for PRs to master. Add badge to README.
9 T 10/6 Testing Libraries Due Thursday, October 15, 2020 by 11:59pm EST
Setup code coverage for project. Add badge to README.
10 R 10/8 Static Analysis Due Tuesday, October 20, 2020 by 11:59pm EST
Add linting step to CI.
11 T 10/13 Documentation
12 R 10/15 Documentation2 Due Thursday, November 5, 2020 by 11:59pm EST
Setup documentation. Host documentation on Readthedocs. Setup API autodocumentation for at least 4 things.
13 T 10/20 Website / Web Presence Due Thursday, November 12, 2020 by 11:59pm EST
Setup personal github pages website. Include link to your project.
14 R 10/22 Versioning, Release, and Packaging Due Tuesday, November 17, 2020 by 11:59pm EST
Tag and push v0.1.0. Write release notes on GitHub.
14 T 10/27 Demos and Examples Due Thursday, November 19, 2020 by 11:59pm EST
Add examples/demos.
16 R 10/29
17 T 11/3 Election Day
18 R 11/5
19 T 11/10
20 R 11/12
21 T 11/17
22 R 11/19
23 T 11/24
24 R 11/26 Thanksgiving
25 T 12/1
25 R 12/3
25 T 12/8
25 R 12/10