Open Source Software Development
CSE 40677 - Spring 2016

Instructor

Prof. Douglas Thain
Email: dthain@nd.edu
Office: 382 Fitzpatrick Hall
Office Hours: TBA

About This Class

This is a small, experimental class for 4-7 students that requires instructor permission to register. To take the class, you must independently form a group of people willing to work closely together for the duration of the semester, and then contact the instructor for registration permission.

The Project

Our objective is to build an experimental operating system kernel that implements a model of hierarchical containment. We are not going to re-create Linux, but try to design something different and better. I'll give you some starter code that boots up a raw machine, and the project team will design the system calls, the filesystem, the display code, and some applications. The end product will be your own custom OS kernel contained on a bootable CDROM.

Starting Points

  • Project Vision and Course Overview
  • Starter Code: Basekernel
  • OS Development Wiki
  • Minix Source, Linux Source
  • VirtualBox, Bochs
  • NetBSD, ReactOS Haiku, Syllable
  • Syllabus

    Objective

    This class is designed to give the advanced student the opportunity to create and implement a significant open-source software project. The goal is not merely to write code, but to create the infrastructure necessary for a sustainable project, including web pages, documentation, bug tracking, discussion groups, and more. With luck, the project may gain new contributors and have a life beyond that of the semester project!

    Prerequisites

    This class is open to CSE seniors with outstanding C programming skills. Students must first form a group of 4-6 people willing to work together for the duration of the semester, then contact the instructor for permission to register. Because group work is the core of the course, dropping will not be permitted after the add/drop period.

    Course Format

    Students will meet with the instructor once per week. At each meeting, one team member (rotating) will give a formal presentation of the project status, and the work completed by each team member in the past week.

    Team members will establish a schedule to spend 6-10 hours per week working on the project, including sufficient time to coordinate with each other and provide materials for the weekly presentation.

    Project Requirements

    The project will encompass all the elements necessary for a successful open source project:
  • A public, high quality, and editable web presence which includes a compelling project vision, instructions for downloading and using the software, technical documentation and links regarding the details of the software, and a description of the membership and governance of the project.
  • The project source code must be maintained in a public code repository, and changes accepted to the project through a standardized process. There must be a simple and well-documented process for building and using the source code.
  • Public venues for reporting bugs, requesting help, and discussing project features. These may include issue trackers, forum software, or whatever is most appropriate to the project. Project development must be carried out using these tools.
  • The final version of the software must meet the requirements of a Minimum Viable Product (MVP) which will be articulated by the team early in the semester.
  • Milestones

  • M0 - Project infrastructure and tools are chosen and online. Team collaboration model is documented. Description of MVP and acceptance test are written.
  • M1 - Project seed code works, is in source control, and has usable instructions to download, build, and run. At all points following M1, the code must continue to build and run correctly.
  • M2 - Minimum viable product (MVP) exists and can be downloaded and used, albeit with some bugs, features, or documentation missing.
  • M3 - MVP has been significantly improved through bug and feature fixes. MVP passes acceptance tests.
  • Grading

    The grade received by each student will take into account:
  • Individual weekly contributions to the project.
  • Individual performance of the weekly report, when it is your turn.
  • Group grade for the quality of the product at each milestone.