Project 6: Open Source Excursion¶
Learning Goals¶
- Holistically apply software engineering methods in the context of a real-world problem, including process, requirements, architecture, measurement, and quality assurance
- Gain broad and deep exposure to the culture and practices of open-source communities
- Understand commonly used infrastructure used in open-source, and how to choose infrastructure when starting a new open-source project
- Engage with an open-source community
- Identify process issues and suggest improvements in real-world projects, including communication, collaboration, tooling, quality assurance, formal and informal rules and policies
- Coordinate within a team and adopt practices for efficient teams
- Understand a project’s architecture and design and make a decision about the feasibility of a proposed task
- Divide and schedule work within a project
- Discuss how agile practices affect development
- Discuss business concerns and business models of software development
Project Description¶
Your high-level goal is to produce and submit a non-trivial modification or extension to an open-source project in a way that maximizes the chances that the project maintainers accept it. In past semesters, we've had teams merge code into popular open source projects like CPython, Pandas, and MyPy - see our Hall of Fame for details.
If you demonstrate to us that your change has been accepted and integrated into the project’s code base, you will get 15 bonus points. Your team will select an open source project, select a change to implement, actually contribute to the project, and present your insights to the class. You will individually reflect on your teamwork and open source experience.
Follow the project's policy on AI
Many open-source projects now have explicit rules about AI-assisted contributions. Some ban AI-generated code or text outright, some require you to disclose which tools you used, and others leave it to the reviewer. Before you commit to a project, find its policy (look in CONTRIBUTING.md, the code of conduct, the pull request template, and recent maintainer discussions) and follow it in everything you send the project: code, pull request descriptions, issue comments, and chat messages. If the project has no written policy, ask the maintainers before relying on AI tools.
Be careful here. Maintainers are volunteers, and many are overwhelmed by low-quality AI-generated pull requests. Submitting code you cannot explain, or breaking a project's AI policy, wastes their time, will likely get your contribution rejected, and can get you banned from the project. It also hurts the reputation of every future 17-313 team that contributes there. You are responsible for understanding and standing behind every line you submit.
Deliverables and Deadlines¶
This is your final project with your group. There are 3 parts to this project. The project is worth a total of 300 points.
A) Project & Task Selection – 100 points
- Project selection - due Friday, November 13th, 11:59pm
- Checkpoint Presentation (slide deck) (100 points) - due Sunday, November 15th, 11:59pm
- In-Person Presentation of Check-In Slides - Monday, November 16th during recitation
B) Project Final Report & Presentations – 160 points
- Project Report (60 points) - due Monday, December 7th, 1:00pm
- Extra Credit (15 points)
- Project Presentation (100 points) - Held during the final exam timeslot on Monday, December 7th, 1:00pm-4:00pm
C) Individual Reflections – 40 points
- Reflections & Peer Review (40 points) - due Monday, December 7th, 11:59pm
Tip
This is a large assignment spanning from now until your final exam timeslot. We estimate that this project will take each student on the team on average 8 hours/week over the next 4 weeks. We highly recommend reading through the entire assignment before starting so you are aware of our expectations for the later deliverables.
To manage all of the write-ups, we recommend saving the pages as a PDF to print or annotate on as you work through the assignment with your team.
Contributions
We want to ensure that everyone is participating fully in the final project. For this project, we will be assessing participation in a variety of ways, including: artifact evaluation, self & peer evaluation. Credit due for the team components of P6 will be awarded based on evidence of full participation in the team. Partial participation will receive partial credit.
If severe teamwork issues arise please contact the course staff.