Open Source Software Development

CPSC 91R Special Topics
Fall 2024

Painting of catehdral and bazaar

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; case studies of successful open source software projects; humanitarian free and open source software; and diversity, equity, inclusion, and accessibility issues in open source software development.

Prerequisite: Students are expected to have completed CPSC 35 Data Structures and Algorithms.

Class Meetings

Class meetings are scheduled to be held Tuesdays and Thursdays from 9:55 to 11:10am. Although these class meetings may be recorded for students who are unable to attend for reasons that could not be anticipated in advance, attendance is expected.

Rather than consisting of lectures, class meetings will involve discussions and activities related to assigned readings and background material; it is expected that all students will come to class prepared to participate in class.

Most class meetings will be led by groups of 2-3 students, who will facilitate the discussion/activity and assess their classmates’ participation.

Topics are likely to include the following:

FOSS Background

  • What is FOSS?
  • How does FOSS compare to traditional software?

Contributing to FOSS

  • What motivates people to contribute to FOSS?
  • What are different ways of contributing to FOSS?
  • How do you get started in a FOSS project?

Business and Legal Issues

  • What are the business opportunities around FOSS?
  • What are the different types of FOSS licenses?

Technical Issues

  • What are the challenges in setting up a FOSS project?
  • What tools are typically used in a FOSS project?
  • How is software quality ensured in a FOSS project?

Ethical Issues

  • What challenges do contributors face in FOSS communities?
  • How responsible are individual FOSS contributors for the ethical impact of the software?
  • How do FOSS communities ensure that their software is accessible?

Reflecting on 25 years of FOSS

  • Has FOSS lived up to its promises?
  • What are some FOSS success stories? What are some failures?
  • Where does FOSS go from here?

We may also have guest speakers from FOSS communities.

Labs

In addition to the class meetings, this course has a lab component. Students must register for one of the two lab sections (Thurs 1:05-2:35pm, or Thurs 2:45-4:15pm), and attendance is expected.

The format of the lab may vary from week to week, but will typically include things like:

  • Activities based on tools used in FOSS communities
  • Tutorials related to technologies for certain FOSS projects
  • Activities relevant to topics discussed in class meetings
  • Working time on projects, as described below

Assessment

Students’ grades in the course will be based on the following (weightings to be determined later):

  • Leading class meeting discussions and activities
  • Participation in class meetings
  • Lab attendance
  • Contributions to internal FOSS projects
  • Contributions to external FOSS project
  • Final course project

For “contributions to internal FOSS projects,” we will set up a small number of projects with existing code (Python, C++, Java, JavaScript, etc.) and lists of possible features and issues that need to be resolved. Students will be expected to apply what they have learned in labs so that they can work with other members of the course community to make contributions to some or all of these projects.

For “contributions to external FOSS project,” students will be asked to find a real-world FOSS project that interests them, engage with the community to identify a contribution that they can make, and then work with the community to complete their task. In past offerings of a similar course at another institution, students have contributed to projects such as CesiumJS, OpenMRS, and Sahana.

For the “final course project,” students will have an opportunity to investigate a topic in more detail (either alone or with another student), and to deliver either a paper, video, in-class presentation about their topic.

There will be no quizzes or exams in this course.

For more information, please contact Prof. Chris Murphy: cmurphy@cs.swarthmore.edu

Top