CSci 395.86, Open Source Software Development
Prof. Stewart Weiss
Spring 2019

Class meetings:

 Tuesdays, Fridays 9:45 - 11:00, Room 1001A HN

On-line Resources


Logistics and General Information


Course Overview and Content

This course is an upper-level course for students who are motivated and interested in learning about open source software and want to learn how to participate in open source software projects. It is intended to give students direct experience in the creation of free and open source software (FOSS) technology projects while simultaneously giving them a deeper understanding of the theoretical and practical foundations of open source and its societal, commercial, legal and philosophical origins and effects. It is hoped that students will participate in the discourse within open source communities. It is primarily an activity-based class, run like a seminar, with many in-class activities and many out-of-class activities as well. To the extent that it is possible, emphasis will be placed on Humanitarian Free and Open Source Software (HFOSS) projects.


Objectives and Outcomes

The objectives and outcomes are explained in the course syllabus. The objectives are repeated here:

  • will be able to explain to others the nature of open source software, particularly how it differs from proprietary software;
  • will become a contributing member of a software development community;
  • will be able to choose an appropriate license for open source things in general and to explain what can and cannot be done with software that has a specific license;
  • will be able to explain how software licensing works in general, what choices of license exist; and
  • will be able to give several examples of the ways in which companies earn money in the open source ecosystem.

Lecture Notes, Tutorials, and Other Resources


Prequisites

The student should have completed at least CSci 127, CSci 135, and CSci 235. Exceptions might be made for those who have not had CSci 235.


Textbooks

  • Producing Open Source Software, 2nd edition, Karl Fogel
    A book about creating open source software, but it has many relevant chapters for those who want to participate in an existing project.
  • The Architecture of Open Source Applications,
    Amy Brown and Greg Wilson (editors)
    A collection of articles in which each chapter describes the architecture of an open source application, including how it is structured, how its parts interact, why it is built that way, and what lessons have been learned that can be applied to other big design problems.
  • Practical Open Source Software Exploration,
    Greg DeKoenigsberg, Chris Tyler, Karsten Wade, Max Spevack, Mel Chua, and Jeff Sheltren
    Although this book was last revised in 2010, much of its content is independent of its age, and it is very relevant to anyone considering working in the open source community.
  • ProGit, 2nd edition, Scott Chacon and Ben Straub
    This is an excellent tutorial and reference on using git (not GitHub).
  • The Linux Command Line,
    William Shotts
    There are many books about how to use bash and the Linux command line. This one is very accessible and easy to follow.

Activities


Assignments

  • Assignments are generally described in the class schedule on this page.