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.