Pages

Monday, March 28, 2016

Development workflow of OpenCV and HubTurbo



1. OpenCV

Overview & Pros

Uses the "Fork & Pull Request" contribution model and is very friendly for beginner to start contributing by recommending simpler form of an issue to the contributor. If there is one thing to take away contributing to OpenCV is its very well documented "Contributing guideline" which includes detailed work flow of what will happen at every stage after a pull-request is created. 


Flow chart of OpenCV contribution process

From the flow-chart above, there are several important points that could be integrated to HubTurbo:

  • very strict about ensuring build passes and demand responsiveness from contributor by active developers
  • reviewer provides straightforward example and lay out expectation clearly through each conversation via GitHub's Issue Tracker 
  • create relevant follow-up even if the pull-request is rejected or deemed not useful 

Cons

Though the project has developed quite a comprehensive work flow after countless iterations, it could benefit from using a CI to instead of relying too much manual review or dependent on contributor to write tests for each pull request

2. HubTurbo

Overview & Pros

 In comparison to OpenCV, HubTurbo ensures code written by each contributor to meet certain criteria such as code coverage, coding style and passes all tests automatically. With these requirements in place, reviewer can spend more time and effort reviewing the code instead of worrying about these requirements. 

Cons

Though there are many benefits from automated testing and code coverage, these processes could potentially mislead contributors into thinking that passing these online tests is most essential. There were several cases where these services could give erroneous reports and giving false confidence to the contributor.

Improvements

There are definitely room for improvement and takeaways from well-established project such as OpenCV:

  •  provide a more detailed "Contribution guideline" with detailed steps of what to do when something failed
  •  ideally, reviewers should point out recommended changes in one go