CSE 40677 Open Source Software Development is an elective Computer Science and Engineering course that 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!
Unit | Date | Topics | Deliverables |
---|---|---|---|
Milestone 1: Infrastructure | |||
Open Source Software | Tue 01/11 | Copyright, History Slides Slides | |
Thu 01/13 | Licenses, Culture, Principles Slides | Progress 0 | |
Infrastructure | Tue 01/18 | Sprint | |
Thu 01/20 | Briefing | Progress 1 | |
Milestone 1 | Tue 01/25 | Sprint | |
Thu 01/27 | Presentation | Milestone 1 | |
Milestone 2: Design | |||
Design | Tue 02/01 | Sprint | |
Thu 02/03 | Briefing | Progress 2 | |
Milestone 2 | Tue 02/08 | Sprint | |
Thu 02/10 | Presentation | Milestone 2 | |
Milestine 3: Prototype | |||
Prototype | Tue 02/15 | Sprint | |
Thu 02/17 | Briefing | Progress 3 | |
Tue 02/22 | Sprint | ||
Thu 02/24 | Briefing | Progress 4 | |
Milestone 3 | Tue 03/01 | Sprint | |
Thu 03/03 | Presentation | Milestone 3 | |
Spring Break | |||
Milestone 4: Packaging | |||
Packaging | Tue 03/15 | Sprint | |
Thu 03/17 | Briefing | Progress 5 | |
Tue 03/22 | Sprint | ||
Thu 03/24 | Briefing | Progress 6 | |
Milestone 4 | Tue 03/29 | Sprint | |
Thu 03/31 | Presentation | Milestone 4 | |
Milestone 5: Debriefing | |||
Debriefing | Tue 04/05 | Sprint | |
Thu 04/07 | Briefing | Progress 7 | |
Tue 04/12 | Sprint | ||
Thu 04/14 | Briefing | Progress 8 | |
Milestone 5 | Tue 04/19 | Sprint | |
Thu 04/21 | Presentation | Milestone 5 |
The class meeting time will be used for lecture unless it is one of the following types:
Component | Points |
---|---|
Progress Weekly Progress Reports. | 8 × 5 |
Milestones Project Milestones. | 5 × 40 |
Requirements Project Requirements. | 5 × 5 |
Contributions Individual Contributions. | 35 |
Total | 300 |
Grade | Points | Grade | Points | Grade | Points |
---|---|---|---|---|---|
A | 280-300 | A- | 270-279 | ||
B+ | 260-269 | B | 250-259 | B- | 240-249 |
C+ | 230-239 | C | 220-229 | C- | 210-219 |
D | 195-209 | F | 0-194 |
Students will be graded on the following items:
Progress Reports: Each non-Presentation week, every group will submit a slide deck to their group Google Drive folder that summarizes the work they have done for that week, addresses any questions the instructor has about their work, and describes their plans for the upcoming week.
Milestones: At the end of each phase of the development cycle, every group will present their work to the class in the form of a short presentation and demonstration that addresses the requirements for that particular milestone.
Requirements: At the end of the semester, the instructor will evaluate how well the final project met the Project Requirements enumerated below.
Contributions: At the end of the semester, students will be asked to anonymously rate or evaluate their group members and external contributors to determine their overall contribution to the project.
Each course project will encompass all the elements necessary for a successful open source project:
Web Presence: 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.
Code Repository: 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.
Communal Development: 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.
Contribution Process: The project must have a formal process for accepting contributions including mechanisms for code review, testing, and automated verification and deployment of software artifacts.
MVP: 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.