A presentation on how good open source tools can be integrated together to push development efficiency up.
First, here are all the involved tools references
Git (Distributed Version Control System-DVCS tool)
Gerrit (Code Review tool)
Mylyn (Eclipse-based Application Lifecycle Management-ALM tool)
Why GIT?
- DVCS
- Open Source
- Airplane-friendly (all commits can be done offline since in DVCS, commits are done locally - a push is required to put it on remote servers)
- Push and Pull (inter-developer direct exchange, no need to pass via central server)
- Branching and Merging (amazing for this aspect - automatic merging tool which was required because of the so many Linux kernel contributors) - based on the if it hurts, do it more often!
Why Hudkins?
- CI
- Open Source
- Large community
- Lots of plugins
Why Gerrit?
- Code reviews for GIT (line by line annotations)
- Open Source
- Permit to build a Workflow in the system
- Access Control (originally created to manage Android contributions)
Why Mylyn?
- 90% of IDE's content is irrelevant... (see image) - (lack of integration, information overload, context-loss when multi tasking or when exchanging tasks with another developer)
- Open Source
- Part of Eclipse 99% of the time
- NOTES: Other IDEs supported? Seems not. Apparently, it has performance issues (Eclipse users seem to disable Mylyn right off the bat...)
Pie chart of a developers's day
see preso image, but essentially, a typical developer takes 34% of his day reading/writing code, 10% testing code and the rest of the day producing nothing significant (including a 22% for pure interruptions inefficiencies)
Why Mylyn part 2?
- Mylin can track all you do within a task (what classes you changed, the web pages you access, etc.)
- Ex: A guy goes on vacation; you can by reopening the task to complete it in his place, access the context that actually follows the tasks and thus see the relevant classes, web pages, etc.
- Task focused interface (task system in the background - like JIRA, Bugzilla, etc.)
- Over 60 ALM tools supported
Contribution Workflow
See image from preso
Before: Patch based code reviews
- essentially a back and forth thing between contributors and intergrators (code did not compile, then a test did not pass, etc.) - typically, it used to take approximately 2 days to integrate a piece of code into one of the open source projects listed above
- Limited automation
- Difficult to trace changes
- cumbersome process
- Late feedback
- Code pushed to Gerrit (which acts as a GIT repository - with code review automation)
- Code changes then pulled from Hudson, build is done and Hudson vote back to Gerrit based on all required gates passed or not (build OK: vote +1, tests OK: vote +1, etc.); if a step fail, data flows back into developer IDEs mentioning for example that a certain test failed, etc. the feedback is almost instantaneous.
Demo: Collaboration
A complete demo was conducted to show the previously discussed tools integration. Very interesting even though it was Eclipse-based ( ;-) )
NOTE on Business Processes
It is possible to model business processes at Gerrit level. For example, all developers could have access rights to commit to Gerrit, but only a certain predefined user can commit to the central repository.
Awesome! How do we do it at home now?
Setting up the server (in that order)
- Install all the softwares and then:
- Clone GIT repository
- Initialize Gerrit
- Register and configure a Gerrit human user
- Register and configure a Build user (the automating user)
- Install Hudkins Git and Gerrit plugins
- Configure standard Hudkins build
- Configure Hudkins Gerrit build (integrate the review within the build)
Setting up the client (contributor - in that order)
- Install EGit, Mylyn Builds (Hudson), and Mylyn Reviews (Gerrit)
- Clone GIT repository (pull)
- Configure Gerrit as remote master
- There is no step 4! Done.
Setting up the client (committer - in that order)
- Configure a Mylyn builds Hudson repository
- Configure a Mylyn review Gerrit repository
- Create a task query for Gerrit
- There is no step 4! Done.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.