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

Class meetings:

 Mondays, Thursdays 9:45 - 11:00, Remotely, From Your Safe Confines

On-line Resources



Logistics and General Information


Course Overview and Content

This course is an upper-level course for students who are interested in open source software development and want to learn how to participate in open source software projects. It is a very “hands-on” class, run like a seminar, with many in-class and out-of-class activities. Learning takes place through participation in these activities and therefore attendance is both important and mandatory.

This course is highly significant now, because participating in open source software development can be done "in your pajamas at home" if you like, safely, without being in physical contact with others.


Objectives and Outcomes

The objectives and outcomes are explained in the course syllabus. The objectives are repeated here. Students who successfully complete this course:

  • will be able to explain to others the nature of open source software, particularly how it differs from proprietary software;
  • will be able to evaluate open source software projects with respect to their maturity, level of activity, community friendliness, and complexity;
  • will be able to find suitable open source software projects in which to participate;
  • will become a contributing member of a software development community;
  • will be able to choose an appropriate license for their creative works 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.

Prerequisites

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.


Lecture Notes, Tutorials, and Other Resources


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.

Activity and Exercise Instructions


Assignments

  • Assignment 1: Set up your blog before January 30 and write your first blog entry in the Week 01 post, due by the end of February 2, about why you decided to take a course in open source software.
  • Assignment 2: Read the webpage How to Contribute to Open Source Without Coding and be prepared to talk or write about the ways you would like to contribute during the course of this semester.
    Read the assignment from Day 2 in the Daily Schedule regarding completing the Goals.md file in a new private repository created for you on GitHub.
  • Assignment 3: If you did not complete Part 5 of the Firefox-Add-on-Activity then complete it before the class on Thursday February 6.
  • Assignment 4: Read the Getting Started chapter in the Pro Git book, and read the second chapter, Git Basics, up to and including the section, Recording Changes to the Repository. This is in preparation for our lesson on Git next week.
  • Assignment 5:There are instructions on the website for making contributions to OpenStreetMap at
    http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci395.86/activities_f19/openstreetmap_editing.pdf.
    Read these instructions and start to make contributions to OpenStreetMap. Make at least two independent contributions and add them to the Contributions tab in your blog, in the correct format.
  • Assignment 6: Start to contribute to your classmates' blogs using the workflow in the blog editing assignment instructions.
    Read the project evaluation activity on the website:
    http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci395.86/activities_s20/project_evaluation_activity.pdf
    and be prepared to do this on Monday in a team.
  • Assignment 7: Everyone individually must complete evaluation of the project assigned to you in class, following the same instructions that were used for the in-class activity. You must (1) complete the evaluation, (2) add the entry to the class wiki, and (3) submit the pull request before 10:00 P.M. on March 1. The evaluation must include detailed results about the outcome of the installation process. The objective is to have the full set of project evaluations completed and in the repository before class on March 2.
  • Assignment 8: Reminder: you have the OpenStreetMap editing assignment.
    Read the Blog Editing Activity:
    http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci395.86/activities_s20/blog_editing_activity.pdf. If you have questions about it, post them to Piazza. You do not have to start this activity yet, but next week I will go over any questions that anyone has and ask you to start editing each others' blogs.
  • Assignment 9: Continue contributing to your classmates' blogs using the workflow in the blog editing assignment instructions.
    If there are projects that you want to work on, add them to the list of projects in the class wiki Project Suggestions
    Prepare for a quiz on Git essentials to be given on Thursday February 27.
  • Assignment 10:Read the second chapter of the Pro Git book, Git Basics, starting in section Viewing the Commit History up to and including the section Working with Remotes.
    Read Section 5 of the GitHub guide, GitHub's How to Contribute, namely How to Submit a Contribution.