Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Opening opensource : The Jenkins Way

7,954 views

Published on

Published in: Education

Opening opensource : The Jenkins Way

  1. 1. Opening Opensourcethe Jenkins Way<br />BreizhCamp 17 juin 2011<br />©2011 Cloud Bees, Inc. All Rights Reserved<br />
  2. 2. Nicolas De loof<br /><ul><li>Java-Boy
  3. 3. New-Bee at
  4. 4. (ex-)CommitterMaven
  5. 5. JUG-Leader</li></ul>©2011 CloudBees, Inc. All Rights Reserved<br />
  6. 6. Jenkins ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  7. 7. de factocontinuousintegration Server in Java ecosystem(non exclusive)<br />Basis for Software Factory automation<br /><ul><li>Q&A Code inspection
  8. 8. Release management
  9. 9. Continuousdeployment
  10. 10. Business Intelligence …</li></ul>©2011 CloudBees, Inc. All Rights Reserved<br />
  11. 11. Hudson / Jenkins : the fork<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  12. 12. ©2011 CloudBees, Inc. All Rights Reserved<br />User choosed Jenkins<br />13 000 downloads / week<br />1 500 member on jenkins-users<br />4 000 followers @jenkinsci<br />
  13. 13. 900 members on jenkins-dev<br />48 active contributors, 94 publicized<br />170 Pull-requestsfromoccasionalcontributors<br />11,3 changes per release(6,7 before the fork)<br />… as Developersdid<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  14. 14. OpenSource model<br />How to attract new contributors ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  15. 15. Voice committer<br />Committer<br />Contributor<br />Supporting User<br />User<br />Standard OSS model « meritocratic »<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  16. 16. Use the tool<br />Contribute to user-forum<br />Getfamiliarwith the code<br />Contribute to dev-forum<br />Fix bugs and post patches<br />Be nicewitheverybody<br />Do some lobbying<br />How to become a Committer …<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  17. 17. Difficult to getinto the code<br />Difficult to getspare time<br />Difficult to fix bug or add new features<br />Laborious to create and maintain patches<br />Frustrating to wait for approval<br />How manytalentuousguys do weloosehere ?<br />In practice…<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  18. 18. Mypersonalexperience<br />©2011 CloudBees, Inc. All Rights Reserved<br />Motivation<br />(# of contributions)<br />(neveroccurred)<br />
  19. 19. Rule #1 : lower the contribution barrier<br />The Jenkins-way<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  20. 20. Want to contribute ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />Ask for commit<br />
  21. 21. « Withgreat power, comesgreatresponsibility »<br />Self-censoredcontributors<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  22. 22. Discover a regression : revert<br />Test harness to the rescue(stillmuch to do there)<br />Possible if therewas few changes between releases !<br />Hey, thisis SCM roleafter all !<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  23. 23. Rule #2 : Release often (even more)<br />The Jenkins-way<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  24. 24. One release per week<br />Few changes between releases<br />Easy to rollbackwhensomethingisbroken<br />+ « stable but older » branch (3 month) withCritical bug fixes only<br />Jenkins releases<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  25. 25. OpenSource model<br />How to merge contributions ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  26. 26. Contributormayask for code review<br />Contribution mayrequire few changes beforebeeingapplied<br />Wedon’twant to discouragecontributors<br />WTF ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  27. 27. Diff format isdefinitly not a sexy format for humans<br />> +@Deprecated<br />> +public class Base64<br />> +{<br />> + public Base64()<br />> + {<br />> + super();<br />Doesitreallyneed to call Object.super(). Can we not leaveitwith<br />the default constructor as Plexus' original has?<br />> + }<br />Diff format (SVN patch)<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  28. 28. GitHub pull request<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  29. 29. Rule #3 : Tools matter, use the right ones<br />The Jenkins-way<br />©2011 CloudBees, Inc. All Rights Reserved<br />patch<br />Pull request +<br />Commit pattern<br />
  30. 30. Origin of the Hudson/Jenkins fork(java.netoutage)<br />200 forks on Jenkins GitHub repo !<br />170 pull requests<br />Jenkins atGitHub<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  31. 31. Opensource model<br />Embrace new features<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  32. 32. 250 plugins !(maven plugin is the only one in core)<br />Evengrowingecosystem<br />Contributorcan focus on some plugin thatbringthem value daily<br />Modular design<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  33. 33. Extension point withruntimediscovery<br />Need to plugsomewhere in Jenkins ? add a new extension point<br />Someidea for a new plugin ?  add for a repo on github/jenkins-ci<br />Extensibility<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  34. 34. Rule #6 : design for extensibility<br /> Multiple technical solutions (incl. @Inject)<br />The Jenkins way<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  35. 35. OpenSource model<br />How to talk together ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  36. 36. User forum<br />Dev forum<br />Private forum<br />(+ lobbying)<br />Multiple discussion levels<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  37. 37. Need for private discussion whenitcouldhurtsomeone<br /><ul><li> invitation for new Committers</li></ul>… but wedon’t have to « filter » committersanymore<br />WTF ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  38. 38. All discussions are public<br />On jenkins-dev<br />On irc #jenkinsci<br />Meeting bi-weekly on irc<br />Logged by irc-bot for lateravailabilityhttp://meetings.jenkins-ci.org/jenkins<br />transparency<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  39. 39. Rule #4 : Makethings transparent<br />The Jenkins way<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  40. 40. OpenSource model<br />Who’s the boss ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  41. 41. Right, projectneedssome sort of lead… but not a despot !<br />« BenevolentDictator For Life »-syndrom<br />Lead<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  42. 42. Highly active contributor<br />Good knowledge of projecthistory<br />Good technicalskills<br />Visionary<br />Newbie-compliant<br />Not egocentric<br />Lead must be …<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  43. 43. Kohsuke Kawaguchi<br />Andrew Bayer<br />Dean Yu<br />(all from != companies)<br />And discuss in public !<br />Lead-commiteeissafer<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  44. 44. Rule #5 : choose a good Lead model<br /> focus first on building a community<br />The Jenkins way<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  45. 45. Opensource (x)or Business ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  46. 46. (<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  47. 47. CloudBees relation with Jenkins ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  48. 48. Nectar : enhanced & supported Jenkins<br />DEV@Cloud : hosted software factory<br />RUN@Cloud : Java PaaS<br />Public : hosted by Amazon<br />Private : on yourownvirtualized infra<br />CloudBees in 5 words<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  49. 49. KK is a CloudBeesemployee… but CloudBeesengaged to neverinterferewith Jenkins Lead committee<br />DEV@Cloudisawesomethanks to active opensourceecosystem !<br />CloudBees vs OpenSource<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  50. 50. CloudBeescontributesbugfixes to OSS<br />CloudBees vs OpenSource<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  51. 51. Q&A, stabilised + support (here I am!)<br />Some entreprise plugins<br /><ul><li>Security (RBAC)
  52. 52. Virtualisation, auto-scaling, hypervisorintegration
  53. 53. Jobs classification (folders)
  54. 54. Advanced Backup
  55. 55. …</li></ul>Nectar value for entreprises<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  56. 56. Jenkins cluster<br />Multi-tenant masters<br />Pool of slaves<br />Automaticprovisionning<br />On phisical or virtual machines<br />Centralised management (plugins, upgrades, default config…)<br />DEV@CloudPrivate Edition<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  57. 57. Thanks to flexible Jenkins model<br />Easiest maintenance<br />Easiest contributions to oss<br />All thosesfeatures are Plugins !<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  58. 58. )<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  59. 59. Does Jenkins model applyelsewhere ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  60. 60. I’mtrying to for GWT-maven-plugin<br />Does Jenkins model applyelsewhere ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  61. 61. #1 : lower the contribution barrierjustask to join the team !<br />#2 : release oftenone release per month<br />#3 : toolsmattermovedfromcodehaussvn to GitHub<br />#4 : makeit transparenteverythinghappens on googlegroups<br />#5 : choose a good lead-modelmyself + Olivier Lamy, may change …<br />#6 : design for extensibilitymore investigation requiredhere<br />Applyingrules<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  62. 62. Future willsay…<br />Allready 3 contributors to join :<br /><ul><li>complaining about missingfeatures,
  63. 63. encouraged to contribute,
  64. 64. added to team,
  65. 65. theyfixed issues by themself !</li></ul>Salvador Diaz to analyse Pull Request<br />Pierre-Yves Ricaucommitted 5 fixes<br />Doesitwork ?<br />©2011 CloudBees, Inc. All Rights Reserved<br />
  66. 66. Q&A<br />Thankyou<br />©2011 CloudBees, Inc. All Rights Reserved<br />

×