Workflow Guide
#
IntroductionThis Workflow Guide documents the team's agreed upon standardization of workflow practices to adhere to in the development of the project.
#
Project ManagementThe team will follow a modified version of the Scrum workflow. We will have weekly meeting to plan for the goals for the upcoming weekly sprint and will draft them down in a github issue. Each developer will be responsible for one feature/ user story and will check back in with the other developers as they near completion. As the scrum workflow is suited to teams of 3-8 people. The modified scrum workflow we will be following will not have daily meetings, instead these will be replaced with daily reports through a messaging app. As there are only 2 members in this development team, we will also not have a Scrum master.
#
MilestoneWeekly milestones will be created to allow tagging of issues to a milestone and the milestone will only be closed once all the issues have been resolved. The versioning of the milestone follows a standard of:
- Monthly increment of 1
- E.g. First month V0, Second month V1 etc
- Weekly increment of 0.1
- E.g. First month First week V0.1, second week V0.2 etc
#
Weekly SprintAs mentioned above, we will create a Github issue to keep track of the tasks for the sprint. A sample is given below:
WK4 SPRINT
Forum
- Create a post
- Reply to a post
- Add tags
- Connect to Database
Quiz
- Update Creation logic
- Update UI
Login
- Update Firebase logic
Dashboard
- Minor UI fixes
Test
- Integrate Cypress
#
Weekly ReleaseA proper release is done by a core team member every week to conclude the work done in the previous week. In the release description, changes made to the existing codebase will be mentioned.
#
Branching WorkflowThe team will adopt the Feature branch workflow. In general, before working ona new issue, an individual will first update their local master branch with the master branch of the remote repository. Then a feature branch will be created and later on pushed to the remote repository for PR into the main branch. Typically, the command to do so would be as such (the second step is only necessary for the first time):
#
IssuesApart from listing user stories, issues will be used as the primary way to track in detail the tasks being worked on. When adding new issues, the following format will be adhered to:
- Issues will be labelled with a type and priority (e.g. type.Task, priority.High)
- Issues will be tagged with a milestone
- Issues will be assigned with an assignee
#
Pull Requests (PR)For code that is ready to be merged, a pull request will be opened from the working branch to the main branch of the remote repository. In addition, all pull requests will have the following format:
- PRs will be labelled with only a priority label (e.g. priority.High)
- PRs will be tagged with a milestone
- PRs will have no assignees which defaults to the author of the PR
- PRs will link clearly at the bottom of the PR message the issue it will address (e.g. Closes #34)
- PRs will need to pass all CI checks and require approval of at least one reviewer before merging
- PRs will be merged by the PR author after an approval from a reviewer
- PRs may be merged by the reviewer if given the PR authors permission.
#
ReviewsReviews may be done by any members of the team except for the PR author. An approval will be given only when the PR is deemed fully ready to be merged. Reviewers may give comments on how to improve the code but not edit the PR authors branch directly. We included a label called "JUST MERGE IT!!!" that can be tagged to a PR by the PR author. Thus if the reviewer sees such label, he/she can immediately merge the PR after approval. This is to reduce unnecessary wait time.
#
Unfinished WorkIf there is any unfinished work/ work that needs to be improved upon, add the
keyword //to-do
behind it followed by a comment on the actions that need to be
pursued afterwards. An example is as follows:
//to-do work on adding more Tests
Optionally, the author may write their name behind to signal that they will be
continuing work on this //to-do
so that other members do not write unnecessary
code. An example would be as follows:
//to-do Jun Xiong work on adding more Tests