Workflow

Integration Manager Workflow

The OpenWSN project uses the Integration Manager Workflow (see http://git-scm.com/about/distributed):

  • a small number of integration managers commit to the develop branch of the different repositories.
  • developers fork that repository, push to their own independent repositories, and submit a pull request to pull in their changes.

This is a very common type of development model seen with open source or GitHub repositories.

As a Developer

If you are a developer who wants to contribute to the OpenWSN project, the following workflow has proven to work well:

  • Create an issue at https://openwsn.atlassian.net. Let's call it "FW-123"
    • Assign it to yourself
       
    • Click the "start progress" button
       
    • Your issue is now marked "in progress". This ensures people know you're working on a fix.
       
  • Fork the repository you want to modify under your username
    • Navigate to the the repository you want to modify, on GitHub. Click the "fork" button
       
    • This will create an exact copy of the entire repository, but under your name. That is, "https://github.com/openwsn-berkeley/openwsn-fw" is forked to  "https://github.com/myusername/openwsn-fw". 
    • Optionally, rename your fork openwsn-fw_FW-123.
  • Implement a fix for the issue
    • Commit/push all your changes to your fork.
    • Start every commit message by the issues key, followed by a "." , for example:
      FW-123. Fixed the packet format of RPL DIO.
      This will ensure that your commit activity appears in the "Development" section of your issue.
    • From time to time, merge the main repository into your fork, which called syncing a fork. (You can refer to here.)

  • When you're done
    • Merge the main repository into your fork one last time,
    • From the GitHub interface, create a pull request by clicking the "create pull request" button
    • In the issue tracker, click the "Resolve Issue".
       
    • Your issue will now appear as "resolved"
       
    • This tells everybody you consider being done. Normally, you have nothing else to do.
  • The integration managers now merge your fork into the main code
    • If people have comments on your fix, you can discuss directly through GitHub. This can be done line-by-line, making discussion and commenting extremely efficient.
       
    • If you want to make further changes, no need to close the pull request, just continue making changes to your branch, your pull request will reflect those further changes automatically.
    • Once the discussion is over and you have done final adjustments to your code, the integration manager merges your pull request into the main repository. On GitHub, your pull request now appears as "merged"
    • The integration manager marks your issue as "closed".
       
    • You can now delete your fork.