CIS 399 Fall 2016: Open Source Software

Course Overview

Free and open-source software (FOSS) has evolved into an important model of development in the software industry. This course exposes students to the cultural, technical, and legal aspects of FOSS development and provides students with an opportunity to work on a real-world open-source software project, and gain experience in software maintenance and enhancing software quality.

The course also covers topics such as: the need for and benefits of free and open-source software; open-source licensing and business models; intellectual property; and humanitarian free and open-source software (HFOSS).

Class meetings will be run in a seminar style and involve discussion of assigned readings. There will also be a semester-long project in which you become involved in and contribute to an open source project.

This course assumes you have completed CIS 350 Software Design & Engineering or have substantial software development experience.

Educators who are interested in adopting a similar course are invited to view the syllabus on the foss2serve wiki.  

Instruction Staff

Instructor: Chris Murphy
TA: Nova Fallen

Class Meetings

Tues/Thurs 3:00-4:30pm, location TBA

In general, Tuesday class meetings will consist of discussions of the reading assignments, and Thursday class meetings will be for "code sprints" during which we will all get together to work on our projects and write lots of code and probably eat unhealthy snacks.

Reading Assignments

Each week you will be asked to read 2-3 articles, essays, blog posts, etc. regarding various aspects of open-source software, and then write a short (200-300 word) response and post it to your public blog. We will then discuss the readings during the class meeting after the response is due.

Specific reading assignments will be posted in Canvas but are likely to include the following topics:

FOSS Background

What motivates people to contribute to FOSS?

How do you get started in a FOSS project?

What are different ways of contributing to FOSS?

What are some of the technical challenges of running a FOSS project?

What are the business opportunities around FOSS?

What are some of the legal and licensing issues with FOSS?

How do you start and grow a FOSS community?

What are some FOSS success stories?

What are some of the criticisms of FOSS?

Does/Can FOSS live up to its promises?

HFOSS: Humanitarian Free Open-Source Software


Contributing to an actual FOSS project is a great way to gain real-world software development experience and is a core component of this course. The project will run for the duration of the semester as follows:

  • Weeks 1-2: identifying a project
  • Weeks 3-4: getting involved in and familiar with the developer community; setting up development environment
  • Weeks 4-5: working on small issues (minor bugs, documentation, etc.)
  • Weeks 6-8: identifying and completing a small task
  • Weeks 9-13: identifying and completing a larger task

You will have weekly check-ins with your project mentor and/or the course TA to make sure you are staying on track and that any problems are addressed quickly.

You will also need to maintain a blog documenting your progress, and do a weekly update at class meetings.