Skip to content

Development process

Tomáš Blatný edited this page Aug 23, 2016 · 4 revisions

Short overview

  • find issue ("BUG" > "FEATURE")
  • contact other assigned developers
  • mark as "IN PROGRESS" and optionally ask for more info (and add "NEED MORE INFO")
  • create new branch and start coding
  • finish coding
  • check if issue is completed
  • create PR and pass through code review and +1s
  • squash and forcepush
  • wait for tests
  • merge
  • repeat

Details

1. Finding job

1.1. Finding issue for me

  • open issues tab
  • open current milestone
  • filter all, where you are assigned and which do not have "IN PROGRESS" label
  • choose any of those issues according to what you want to do, but keep in mind this priority stuff:
    • issues with "BUG" label have priority over "FEATURE" labels
    • issues in milestone can be ordered, and in most cases, higher priority issues are at top

1.2. Other developers

  • check if you are the only assignee, if yes continue to 1.3., else:
  • contact other assignees and discuss who will do what and if they will take part in development
  • unassign anybody who wont take part of development in this issue

1.3. Getting job description

  • add "IN PROGRESS" label to this issue
  • read carefuly description of the issue, think about every line, every detail
  • if you dont have any question, skip to 1.5., else continue with 1.4.

1.4. Getting more info

  • ask questions you need to know in issue description or on Slack
  • use quoting syntax with the part you are refering to, e.g.:
> Every user should have an email address
Should this email address be validated?
  • in that message mention the person you are asking
  • add "NEED MORE INFO" label

1.5. Starting working

  • fetch / update remote and local dev
  • create new branch from local dev
  • branch naming (kebab-case):
    • start with feature- or hotfix-
    • continue simple 1-3 words that describe feature or hotfix
  • work in that branch (any number of commits)
  • push commits any time you want, forcepushes are also allowed

2. Finishing work

2.1. Creating pull request

  • check if all functionality requested in issue and its comments is fully functional and done
  • check if codestyle is matched against rest of code and internal coding style
  • create pull request with name in this style: Core: fixed saving of user (should be the same as commit name)
  • in PR description, add /cc @user1 @user2 for every user you want to code review your code
  • add Fixes #XXX or Closes #XXX (depending on if it is a bug or feature) with GitHub issue number
  • wait for code review

2.2. Code review process

  • after you receive a comment regarding your code, you can either:
    • fix it and commit + push changes or:
    • put another comment explaining your opinion
  • after resolving all comments, you can receive a +1 from a person or persons you requested code review from

2.3. Finalizing work

  • after you have a +1, you can squash your commits into one or more (depending on type of issue you are facing)
  • forcepush squashed commits
  • wait for passed tests
  • if tests do not pass, fix them with another commits and repeat steps in 2.3.
  • if tests passed and you have a +1 from all persons from which you requested code review, you can click "merge"

2.4. Cleanup

  • issue should be closed automatically, but double-check it
  • delete branch in which you developed that issue
  • eat, drink, sleep, repeat from step 1.1.