Group Assignment 3 (Worth 20%)
Group Assignment 3: PR for Open Source - Part A [100/100 MARKS]
Starting The Assignment
Activity 1 - OSS Project Selection [0/100 MARKS] Selecting a Repository
Activity 2 - Working on the OSS Project [10/100 MARKS]
Activity 3 - Opening and Submit a PR to the project [10/100 MARKS]If PR is accepted [5 Bonus Marks]
Activity 4 - Documenting the Process [50/100 MARKS]
Activity 5 - Work/Consistency In the Repository [30/80 MARKS]
Activity 6 - COMP6210 Students ONLY
Activity 7 - Group Presentation
Group Assignment 3: PR for OpenSource - Part A [100/100 MARKS]
The previous 3 assignments have exposed you to:
Analysis of user stories
Analysis of issues, branches, pull requests, and understanding how a repository works
Working as a team to complete a project with good issues, pull requests,communication, documentation and testing
This assignment builds on all all of these skills and exposes you to working on a real-lifeOSS repository. This assignment is comprised of two parts:
A report, answering the questions listed below, and
A group presentation detailing your work on the assignment. See the full details hereGroup Presentation.
Starting The Assignment
As a group, take a look at all of the recommended repositories listed here on thisGoogle Sheet. Those are just suggestions, if nothing there interests your group, youcan also take a look at the Awesome for beginners repository and the ApacheProjects Directory. Info Do
Important
You must discuss with your tutor about which repository and issues you would liketo work on. More information on this can be found in Activity 1. Please note that youwill need to get approval from your tutor before you can start working on yourassignment.
You CANNOT work on wyvernlang, however if this is something you are interested in, emailAlex (alex.potanin@anu.edu.au) about it.
Activity 1 - OSS Project Selection [0/100 MARKS] Very carefully read the starting instructions here. See also emailing your tutor.
After discussing amongst your group, and with your tutor about which repository andissues you would like to work on.
Selecting a Repository
It is essential that you find repositories that are suitable for you to work on. You should beable to find a repository that:
Has good, well documented, and easy to follow setup/installation instructions
Is an active repository, with recent commits and issues. Avoid projects that have notbeen committed to or have any issues in the last 6 months or longer. Watch out forMIA maintainers!
Is not too hard to follow or understand. You should be able to understand thecodebase and the issues you are working on. It should also have clear goals andoutcomes.
Is in a language that you are comfortable with. If your group is not comfortable withthe language, and you do not want to have the additional burden of learning a newlanguage, find something else. If you are unsure, stick with a Java project.
Something you, and your group will enjoy working on. This is a taste of what it is liketo not only work on OSS, but working in the real-world.
If you are unsure, talk to your tutor!
How Do You Choose Issues?
No two issues are created equal. It is up to you to choose issues you want to work on as agroup based on the following criteria:
Difficulty: How difficult is the issue? Is it a simple bug fix, or a more complex featurerequest?
Size: How big is the issue? Is it a small bug fix, or a large feature request?
Time: How much time do you anticipate needing to work on the issue?
Workload: How do you plan to split the work amongst your group members?
If you are unsure, talk to your tutor! You can always change issues later on, but try and findsuitable issues to start with to avoid the need to email your tutor multiple times.
Approaches
Select issues individually, write up the appropriate justification, and then work on it,consulting and engaging with other group members to review code, resolve issues,etc.
If you have selected a larger issue, you may want to assign 2 or 3 group members towork on it. If you choose to do this, you must justify to your tutor that there issufficient work for 2 or 3 group members.
Discuss with your tutor any other approaches you wish to take on.
Even though you may be working in smaller groups within your larger group, you areencouraged to work together as a group where you deem necessary, or before largemilestones such as opening the PRs.
How Many Issues Will You Need To Choose?
There will not be any set number of issues your group has to take on. This is up to you, yourgroup, and your tutor to decide and come to an agreement. There will need to be evidencethat enough work is present for your group size.
group name is listed here. For example: COMP2120 Group Assignment 3 IssueSelection: Workshop-01-Group-1
The email MUST include the following information:
The name and URL of the repository you would like to work on.
The list of selected issues you would like to work on + who is working on each issue.
Your answers to the questions listed here for each issue.
The GitHub usernames of all group members. If you do not have a GitHub account,you will need to create one BEFORE sending the email.
Only after your tutor agrees to your issue selection, by replying to and confirming youremail, can you start working on your assignment.
If any changes are made to your issue selection, send another email with the format abovefor the changed issue(s).
Activity 2 - Working on the OSS Project [10/100MARKS]
With any codebase, it is vital that you are able to pull it apart and understand how it works.This is the first step in being able to contribute to it. Figuring out and understanding whatthe issue(s) you are working on that someone has reported are, how they are triggered, andhow to solve/fix them is a vital skill in being able to contribute to an OSS project.
Either individually, as a pair, or in some other arrangement within your group, youwill need to work on understanding the codebase you have selected and what theissues you are working on consist of. Document your findings in the report.
Break down the issue(s) and understand what needs to be done to fix them.
You should be committing your proposed changes to the repository you are workingon after it has been reviewed by at least one other member of your group. Try andspot any issues within your proposed commits to ease the burden placed on themaintainers of your selected project. Take on any feedback from your groupmembers, and ESPECIALLY any feedback from the maintainers of the project youare working on.
Document the process, as described in Activity 4.
Your report must also include a screenshot of the email(s) you sent to your tutor, anyfollow ups if you changed issues, and all confirmations from your tutor.
Activity 3 - Opening and Submit a PR to the project[10/100MARKS]
After you have worked on the issues, you will need to open a PR to the project, afterdiscussion with your group, and at least the majority of your group has taken a lookat it. Your tutor should take a look before you open any PRs. Try and avoid things likethis, and try not to put too much of a burden on maintainers. It is not recommendedto open PRs too close to the assignment deadline, but it will be a good learningexperience.
If PR is accepted [5 Bonus Marks]
If any one of your PRs is accepted into the project, you get a one off 5 bonus marks. Thetotal mark for this assignment cannot exceed 100.
Activity 4 - Documenting the Process [50/100MARKS]
You will need to document your findings in the group report, which will be submittedas part of your assignment. Some things (as a non-exhaustive list) include:
Document what the issue is, how it is triggered, and how you plan to fix it.
What moving parts of the codebase are involved in the issue?
What was involved in opening and submitting the PR?
Some things you should consider explaining in your report (not an exhaustive list):
Can you explain all the moving pieces within the repository that relate to, rely on, areimpacted by, or anything else by the issue you are working on?What would solving this mean to the project?
Does your solution fit neatly into the rest of the project? Does it follow theconventions of the project?
Is it easy to understand what you have done/propose to do?
Are there edge cases / performance problems / other things that you (or they - theindividual who opened the issue) have not considered/addressed?
Was there anything you could have improved on?
You can also use screenshots, external references, etc. to help explain your findings.
It is ESSENTIAL to clearly label your work within the report, who you worked withwhile working on the issue(s), what they contributed, and any other supportinginformation. You must also include a section reiterating and matching up each groupmember to a GitHub username. Each issue your group works on must have a paragraph or two explaining how youcontributed, who you worked with, and what they did. Be very specific andexhaustive. You are encouraged to work freely with all group members even if youare not working on the same issue, or have split up within your group. Discuss,review, and work together to improve your understanding of the codebase and theissues you are working on, especially if there is something you don’t understand.
Activity 5 - Work/Consistency In the Repository[30/80 MARKS]
You will be marked on your work within the repository: do you follow the guidelines,standards/conventions, and contributing rules of the project? Do you make it easy for themaintainers to review and understand your work? Do you engage in discussion and otheractivities in a professional manner? Make sure it is easy for your tutor to see what issuesyou have worked on, and how you have contributed to the project. In addition to the above, document and list where you found information regardingto any guidelines, conventions, or rules of the repository and anything else youdeem necessary. Keeping in mind that passing off work (regardless of if it is within your report,passing off the work of someone else in the GitHub Repository, or any otherbehaviour) that is not your own is a violation of the ANU Academic Integrity Policy.Make sure to reference anything you used within your report that is not your ownwork.Do Do Important
Activity 6 - COMP6210 Students ONLY
You will need to submit in Wattle an individual essay of around 1000 words that will beworth 20% of your mark for this Group Assignment (the other 80% will be as per the aboveinstructions - the same as the COMP2120 students).
In this short essay we want you to reflect on the different licenses used in the open sourceapplications (look at the slides for week 12 that lists the most commonly used licenses).These can also be found here.
For the open source project you contributed to, which license did it use and did youconsider it appropriate for its goals. Discuss and justify your reasoning.
Read the following research paper from ICSE 2017 (International Conference on SoftwareEngineering - the top venue in software engineering):
https://ieeexplore.ieee.org/document/7985655
It discusses automatic detection of FOSS license violations. Explore any other related workon the subject by either following the citations of the paper “back in time” or searching forpapers that cite this paper in their references “going forward in time”.
Discuss the work in this field of automatic detection of open source license violations anddiscuss where this work may lead to in commercial settings in your personal opinion.
Activity 7 - Group Presentation
See the Group Assignment 3 Presentation page for more information.