For Project 2, you will work on an open-source repository related to virtualization. You will select several open issues from the respository and work with maintainers to implement a fix/feature/change for each issue. You will work on Project 2 in a group of 1-4 students; your group does not have to be the same as your Project 1 or presentation group. Please sign up for an existing Project 2 group on Canvas - do not create a new group.
We roughly categorize issues into three types:
- Easy issues. Worth 1 point. Roughly 1-2 days of work for a single person. Could be as simple as adding documentation or fixing a one line bug.
- Medium issues. Worth 3 points. Roughly 1 week of work for a single person.
- Hard issues. Worth 5 points. Roughly 2 weeks of work (or more) for a single person.
Requirements:
- Single person team must complete 3 points
- Two person team must complete 5 points
- Three person team must complete 7 points
- Four person team must complete 9 points
You are free to use any combination of easy, medium, or hard issues for Project 2. I would recommend being careful with Hard issues. Issues must be approved by course staff before you can work on them. Please email course staff or post privately on Piazza as you find and comment on issues. You are also welcome to discuss issues with course staff in office hours.
Students have contributed to these repositories in previous years. This is not an exhaustive list. Feel free to explore other projects!
- https://github.com/firecracker-microvm
- https://github.com/lxc/lxd/
- https://github.com/mgba-emu/mgba
- https://github.com/kubernetes/kubernetes
- https://github.com/cloudius-systems/osv
- https://github.com/ottomatica/slim
- https://github.com/weaveworks/ignite
- https://github.com/containerd/containerd
- https://github.com/hermitcore/libhermit-rs
- https://github.com/moby/buildkit/
- https://github.com/mirage/mirage/
- https://github.com/kubevirt/kubevirt
-
When you see a repository you like, for example the FireCracker MicroVM repo (https://github.com/firecracker-microvm/firecracker), check out its issues page (https://github.com/firecracker-microvm/firecracker/issues).
-
You can filter based on labels like "Contribute: Good First Issue", "Easy", or "Help Wanted"
-
Once you see a issue you would like to work on, comment in the issue introducing yourself (mention you are from UT taking the Virtualization class), and asking if you can work on it. If another person is already working on this issue, find another issue to work on. We don't want multiple teams working on the same issue.
-
Once the developers agree you can work on it (in public github comments) and course staff have approved the isssue, that issue is considered assigned to you.
February 23, 2023: Soft deadline to post on selected issues.
March 28, 2023: Submit a ~1-2 page report listing the issues being tackled and progress so far.
April 27, 2023: Submit a ~5 page report detailing what you worked on and how you solved the issues.
There is no hard deadline for posting on issues or reaching out to developers. We recommend starting early to give developers time to respond and to allow time to switch issues if necessary.
30% of your grade comes from Project 2. It is worth 60 total points.
- 10 points for your short report due March 28.
- 50 points for the 5-page report.
- 20 of these points come from completing the proposed issues. You do not need to get your fixes merged for them to be considered completed.
- 30 points come from your description of the issues and how you solved them.
The report should include the following:
- Links to all of the chosen issues and PRs, if applicable. Please include each issue’s difficulty rating.
- If you have not made PRs for all of your issues, please include links to your fork of the repository or files with relevant code changes.
- A brief description of each repository that you worked on. This does not need to be comprehensive, but should provide an overview of the purpose of each repo for someone who is not already familiar with it.
- A description of each issue, how you solved it, and what challenges you encountered.
Note: The 5-page limit is a guideline, not a requirement. The length of your report will depend on the size of your group and how many issues you worked on.
Grading notes:
- 20 out of 50 points come from completing your chosen issues. Your solution does not have to be submitted as a PR or merged to be considered complete.
- If an issue already had a clearly defined deliverable or goal, we will be looking to see that your solution hits that goal. If you worked on harder or less-well-defined issues, there may not be an obvious completion point; for these issues, we’d like to see that you defined and achieved a reasonable goal for your group.
- In some cases, an issue ends up being much more difficult than initially planned, or there are other blockers outside of your group’s control that may prevent you from fully finishing the issue. Please check with us on Piazza or in office hours if you believe you are in this situation.
- If you were not able to complete any issues, describe the challenges you faced and solutions that you tried; you will be graded on the amount of effort put into these issues
- You are allowed to discuss different issues in your final report than you submitted in your progress report. For example, it’s fine to drop issues that your group included in the progress report if other issues were increased in difficulty. You may include new issues that were not discussed in the progress report only if they have been approved by developers and course staff.
- If you do drop any issues, be sure that you still hit your group’s point total requirement.