Your SlideShare is downloading. ×
0
Opening Opensourcethe Jenkins WayBreizhCamp 17 juin 2011                  ©2011 Cloud Bees, Inc. All Rights Reserved
Nicolas De loof•  Java-Boy•  DevOps at•  (ex-)Committer Maven•  JUG-Leader         ©2011 CloudBees, Inc. All Rights Reserv...
©2011 CloudBees, Inc. All Rights          Reserved
•  de facto continuous integration Server   in Java ecosystem (non exclusive)•  Basis for Software Factory automation  o Q...
Hudson / Jenkins : the fork     Jenkins	   Here	  we	  are	     Jenkins	  defines	  it’s	  own	  process	             Hudso...
User choosed Jenkins•  13 000 downloads / week•  1 500 member on jenkins-users•  4 000 followers @jenkinsci            ©20...
… as Developers did•  900 members on jenkins-dev•  48 active contributors, 94 publicized•  170 Pull-requests from occasion...
©2011 CloudBees, Inc. All Rights          Reserved
Standard OSS model « meritocratic »•    Voice committer•    Committer•    Contributor•    Supporting User•    User        ...
How to become a Committer …1.  Use the tool2.  Contribute to user-forum3.  Get familiar with the code4.  Contribute to dev...
In practice…•    Difficult to get into the code•    Difficult to get spare time•    Difficult to fix bug or add new featur...
My personal experienceMoKvaKon	  (#	  of	  contribuKons)	                                                                 ...
The Jenkins-way•  Rule #1 : lower the contribution barrier               ©2011 CloudBees, Inc. All Rights Reserved   13
Want to contribute ?                     Ask	  for	  commit	               ©2011 CloudBees, Inc. All Rights Reserved   14
Self-censored contributors« With great power, comes great responsibility »                ©2011 CloudBees, Inc. All Rights...
Hey, this is SCM role after all !•  Discover a regression :    revert•  Test harness to the rescue   (still much to do th...
The Jenkins-way•  Rule #2 : Release often (even more)              ©2011 CloudBees, Inc. All Rights Reserved   17
Jenkins releases•  One release per week•  Few changes between releases•  Easy to rollback when something is   broken•  + «...
©2011 CloudBees, Inc. All Rights          Reserved
WTF ?•  Contributor may ask for code review•  Contribution may require few changes   before beeing applied•  We don’t want...
Diff format (SVN patch)•  Diff format is definitly not a sexy format for   humans>   +@Deprecated>   +public class Base64>...
GitHub pull request             ©2011 CloudBees, Inc. All Rights Reserved   22
The Jenkins-way•  Rule #3 : Tools matter, use the right ones                    patch	                                    ...
Jenkins at GitHub•  Origin of the Hudson/Jenkins fork   (java.net outage)•  200 forks on Jenkins GitHub repo !•  170 pull ...
What about CLA ?           ©2011 CloudBees, Inc. All Rights Reserved   25
What is a CLA for ?•  Constrain contributors to transfer   Intellectual Property•  … but not to ensure they have•  License...
The Jenkins-way•  Rule #4 : We are developers, not lawyers              ©2011 CloudBees, Inc. All Rights Reserved   27
©2011 CloudBees, Inc. All Rights          Reserved
Modular design•  250 plugins !   (maven plugin is the only one in core)•  Even growing ecosystem•  Contributor can focus o...
Extensibility•  Extension point with runtime discovery•  Need to plug somewhere in Jenkins ?    add a new extension point...
The Jenkins way•  Rule #5 : design for extensibility Multiple technical solutions (incl. @Inject)               ©2011 Clo...
©2011 CloudBees, Inc. All Rights          Reserved
Multiple discussion levels•  User forum•  Dev forum•  Private forum•  (+ lobbying)                  ©2011 CloudBees, Inc. ...
WTF ?•  Need for private discussion when it could   hurt someone  invitation for new Committers… but we don’t have to « f...
transparency•  All discussions are public  –  On jenkins-dev  –  On irc #jenkinsci•  Meeting bi-weekly on irc  –  Logged b...
Multiple level of participation•    24/7 on #jenkins•    Active reader on mailing lists•    Join the bi-weekly #irc meetin...
The Jenkins wayRule #6 : Make things transparent             ©2011 CloudBees, Inc. All Rights Reserved   37
e-Mail avalanche syndrom•  Multiple levels of commitment    24/7 eMail addict    filter mails by subject    discuss maj...
©2011 CloudBees, Inc. All Rights          Reserved
Lead•  Many contributor involved•  Everyone can commit (with care)•  No need for long debates thanks to small   release cy...
A Lead•  … but not a despot !« Benevolent Dictator For Life »-syndrom              ©2011 CloudBees, Inc. All Rights Reserv...
Lead must be …•    Highly active contributor•    Good knowledge of project history•    Good technical skills•    Visionary...
Lead-commitee is safer   •  Kohsuke Kawaguchi   •  Andrew Bayer   •  Dean Yu   (all from distinct companies)   And discuss...
The Jenkins way•  Rule #7 : choose a good Lead model focus first on building a community             ©2011 CloudBees, Inc...
Opensource (x)or Business« all from distinct companies » ?              ©2011 CloudBees, Inc. All Rights Reserved   45
(©2011 CloudBees, Inc. All Rights Reserved   46
©2011 CloudBees, Inc. All Rights          Reserved
CloudBees in 5 words•  Nectar : enhanced & supported Jenkins•  DEV@Cloud : hosted software factory•  RUN@Cloud : Java PaaS...
CloudBees vs OpenSource•  KK is a CloudBees employee … but CloudBees engaged to never interfere with Jenkins Lead committe...
CloudBees vs OpenSource•  CloudBees contributes bugfixes to OSS             ©2011 CloudBees, Inc. All Rights Reserved   50
Nectar value for entreprises•  Q&A, stabilised + supported•  Some entreprise dedicated plugins  o Security (RBAC)  o Virtu...
DEV@Cloud Private Edition•    Jenkins cluster•    Multi-tenant masters•    Pool of slaves•    Automatic provisionning     ...
All thoses features are Plugins !•  Thanks to flexible Jenkins model•  Easiest maintenance•  Easiest contributions to oss•...
)©2011 CloudBees, Inc. All Rights Reserved   54
©2011 CloudBees, Inc. All Rights          Reserved
Does Jenkins model apply elsewhere ?•  I’m trying to for GWT-maven-plugin              ©2011 CloudBees, Inc. All Rights Re...
Applying rules•  lower the contribution barrier    just ask to join the team !•  release often    one release per month•  ...
Does it work ?•  Future will say…•  Allready some contributors to join :  o  complaining about missing features,  o  encou...
Thank youQ&A            ©2011 CloudBees, Inc. All Rights Reserved   59
Upcoming SlideShare
Loading in...5
×

Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees

2,935

Published on

Jenkins (formerly known as Hudson) is one of the most used tool in Java (non exclusive) to support continuous integration. Created as a hobby project, it quickly became a strategic tool for most development teams. Designed for extensibility, it also choosed from beginning an incremental development model, applying literally the 'release early, release often' principle. It focussed on building a large, active community, with the lowest contribution barrier I ever seen on opensource project and a complete transparency on project management, making Jenkins something uncommon in opensource world. During this session, I'll explain the Jenkins management & technical model, how it promotes contribution and how it allow CloudBees to both support the opensource community-driven project and deliver business value with proprietary extensions.

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,935
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
31
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees"

  1. 1. Opening Opensourcethe Jenkins WayBreizhCamp 17 juin 2011 ©2011 Cloud Bees, Inc. All Rights Reserved
  2. 2. Nicolas De loof•  Java-Boy•  DevOps at•  (ex-)Committer Maven•  JUG-Leader ©2011 CloudBees, Inc. All Rights Reserved 2
  3. 3. ©2011 CloudBees, Inc. All Rights Reserved
  4. 4. •  de facto continuous integration Server in Java ecosystem (non exclusive)•  Basis for Software Factory automation o Q&A Code inspection o Release management o Continuous deployment o Business Intelligence … ©2011 CloudBees, Inc. All Rights Reserved 4
  5. 5. Hudson / Jenkins : the fork Jenkins   Here  we  are   Jenkins  defines  it’s  own  process   Hudson   moved  to  GitHub  and  proposed  to  Eclipse  FoundaKon   Sonatype  join  Oracle  Hudson   Vote  to  rename  the  project  and  move  to  GitHub   Oracle  uses  trademark  as  a  weapon   Issues  with  java.net  infrastructure   Oracle  register  «  Hudson  »  trademark   Oracle  aquire  SUN   Hudson  is  adopted  world  wide   KK  create  Hudson  as  a  Hobby   ©2011 CloudBees, Inc. All Rights Reserved 5
  6. 6. User choosed Jenkins•  13 000 downloads / week•  1 500 member on jenkins-users•  4 000 followers @jenkinsci ©2011 CloudBees, Inc. All Rights Reserved 6
  7. 7. … as Developers did•  900 members on jenkins-dev•  48 active contributors, 94 publicized•  170 Pull-requests from occasional contributors•  11,3 changes per release (6,7 before the fork) ©2011 CloudBees, Inc. All Rights Reserved 7
  8. 8. ©2011 CloudBees, Inc. All Rights Reserved
  9. 9. Standard OSS model « meritocratic »•  Voice committer•  Committer•  Contributor•  Supporting User•  User ©2011 CloudBees, Inc. All Rights Reserved 9
  10. 10. How to become a Committer …1.  Use the tool2.  Contribute to user-forum3.  Get familiar with the code4.  Contribute to dev-forum5.  Fix bugs and post patches6.  Be nice with everybody7.  Do some lobbying ©2011 CloudBees, Inc. All Rights Reserved 10
  11. 11. In practice…•  Difficult to get into the code•  Difficult to get spare time•  Difficult to fix bug or add new features•  Laborious to create and maintain patches•  Frustrating to wait for approvalHow many talentuous guys do we loosehere ? ©2011 CloudBees, Inc. All Rights Reserved 11
  12. 12. My personal experienceMoKvaKon  (#  of  contribuKons)   (never  occurred)   ©2011 CloudBees, Inc. All Rights Reserved 12
  13. 13. The Jenkins-way•  Rule #1 : lower the contribution barrier ©2011 CloudBees, Inc. All Rights Reserved 13
  14. 14. Want to contribute ? Ask  for  commit   ©2011 CloudBees, Inc. All Rights Reserved 14
  15. 15. Self-censored contributors« With great power, comes great responsibility » ©2011 CloudBees, Inc. All Rights Reserved 15
  16. 16. Hey, this is SCM role after all !•  Discover a regression :  revert•  Test harness to the rescue (still much to do there)Possible if there is few changes betweenreleases ! ©2011 CloudBees, Inc. All Rights Reserved 16
  17. 17. The Jenkins-way•  Rule #2 : Release often (even more) ©2011 CloudBees, Inc. All Rights Reserved 17
  18. 18. Jenkins releases•  One release per week•  Few changes between releases•  Easy to rollback when something is broken•  + « stable but older » branch (3 month) with Critical bug fixes only ©2011 CloudBees, Inc. All Rights Reserved 18
  19. 19. ©2011 CloudBees, Inc. All Rights Reserved
  20. 20. WTF ?•  Contributor may ask for code review•  Contribution may require few changes before beeing applied•  We don’t want to discourage contributors ©2011 CloudBees, Inc. All Rights Reserved 20
  21. 21. Diff format (SVN patch)•  Diff format is definitly not a sexy format for humans> +@Deprecated> +public class Base64> +{> + public Base64()> + {> + super();Does it really need to call Object.super(). Can we not leave it withthe default constructor as Plexus original has?> + } ©2011 CloudBees, Inc. All Rights Reserved 21
  22. 22. GitHub pull request ©2011 CloudBees, Inc. All Rights Reserved 22
  23. 23. The Jenkins-way•  Rule #3 : Tools matter, use the right ones patch   Pull  request  +   Commit  paTern   ©2011 CloudBees, Inc. All Rights Reserved 23
  24. 24. Jenkins at GitHub•  Origin of the Hudson/Jenkins fork (java.net outage)•  200 forks on Jenkins GitHub repo !•  170 pull requests ©2011 CloudBees, Inc. All Rights Reserved 24
  25. 25. What about CLA ? ©2011 CloudBees, Inc. All Rights Reserved 25
  26. 26. What is a CLA for ?•  Constrain contributors to transfer Intellectual Property•  … but not to ensure they have•  License is not a guarantee of freedom•  This is a lawyers artifact ©2011 CloudBees, Inc. All Rights Reserved 26
  27. 27. The Jenkins-way•  Rule #4 : We are developers, not lawyers ©2011 CloudBees, Inc. All Rights Reserved 27
  28. 28. ©2011 CloudBees, Inc. All Rights Reserved
  29. 29. Modular design•  250 plugins ! (maven plugin is the only one in core)•  Even growing ecosystem•  Contributor can focus on some plugin that bring them value daily ©2011 CloudBees, Inc. All Rights Reserved 29
  30. 30. Extensibility•  Extension point with runtime discovery•  Need to plug somewhere in Jenkins ?  add a new extension point•  Some idea for a new plugin ?  add for a repo on github/jenkins-ci ©2011 CloudBees, Inc. All Rights Reserved 30
  31. 31. The Jenkins way•  Rule #5 : design for extensibility Multiple technical solutions (incl. @Inject) ©2011 CloudBees, Inc. All Rights Reserved 31
  32. 32. ©2011 CloudBees, Inc. All Rights Reserved
  33. 33. Multiple discussion levels•  User forum•  Dev forum•  Private forum•  (+ lobbying) ©2011 CloudBees, Inc. All Rights Reserved 33
  34. 34. WTF ?•  Need for private discussion when it could hurt someone  invitation for new Committers… but we don’t have to « filter » committersanymore ©2011 CloudBees, Inc. All Rights Reserved 34
  35. 35. transparency•  All discussions are public –  On jenkins-dev –  On irc #jenkinsci•  Meeting bi-weekly on irc –  Logged by irc-bot for later availability http://meetings.jenkins-ci.org/jenkins ©2011 CloudBees, Inc. All Rights Reserved 35
  36. 36. Multiple level of participation•  24/7 on #jenkins•  Active reader on mailing lists•  Join the bi-weekly #irc meeting•  Read the meeting minutes ©2011 CloudBees, Inc. All Rights Reserved 36
  37. 37. The Jenkins wayRule #6 : Make things transparent ©2011 CloudBees, Inc. All Rights Reserved 37
  38. 38. e-Mail avalanche syndrom•  Multiple levels of commitment   24/7 eMail addict   filter mails by subject   discuss major themes on bi-weekly meeting   read meeting notes ©2011 CloudBees, Inc. All Rights Reserved 38
  39. 39. ©2011 CloudBees, Inc. All Rights Reserved
  40. 40. Lead•  Many contributor involved•  Everyone can commit (with care)•  No need for long debates thanks to small release cycles and transparency•  But… project still needs some sort of lead ©2011 CloudBees, Inc. All Rights Reserved 40
  41. 41. A Lead•  … but not a despot !« Benevolent Dictator For Life »-syndrom ©2011 CloudBees, Inc. All Rights Reserved 41
  42. 42. Lead must be …•  Highly active contributor•  Good knowledge of project history•  Good technical skills•  Visionary•  Newbie-compliant•  Not egocentric ©2011 CloudBees, Inc. All Rights Reserved 42
  43. 43. Lead-commitee is safer •  Kohsuke Kawaguchi •  Andrew Bayer •  Dean Yu (all from distinct companies) And discuss in public ! ©2011 CloudBees, Inc. All Rights Reserved 43
  44. 44. The Jenkins way•  Rule #7 : choose a good Lead model focus first on building a community ©2011 CloudBees, Inc. All Rights Reserved 44
  45. 45. Opensource (x)or Business« all from distinct companies » ? ©2011 CloudBees, Inc. All Rights Reserved 45
  46. 46. (©2011 CloudBees, Inc. All Rights Reserved 46
  47. 47. ©2011 CloudBees, Inc. All Rights Reserved
  48. 48. CloudBees in 5 words•  Nectar : enhanced & supported Jenkins•  DEV@Cloud : hosted software factory•  RUN@Cloud : Java PaaS•  Public : hosted by Amazon•  Private : on your own virtualized infra ©2011 CloudBees, Inc. All Rights Reserved 48
  49. 49. CloudBees vs OpenSource•  KK is a CloudBees employee … but CloudBees engaged to never interfere with Jenkins Lead committee•  DEV@Cloud is awesome thanks to active opensource ecosystem ! ©2011 CloudBees, Inc. All Rights Reserved 49
  50. 50. CloudBees vs OpenSource•  CloudBees contributes bugfixes to OSS ©2011 CloudBees, Inc. All Rights Reserved 50
  51. 51. Nectar value for entreprises•  Q&A, stabilised + supported•  Some entreprise dedicated plugins o Security (RBAC) o Virtualisation, auto-scaling, hypervisor integration o Jobs classification (folders) o Advanced Backup o … ©2011 CloudBees, Inc. All Rights Reserved 51
  52. 52. DEV@Cloud Private Edition•  Jenkins cluster•  Multi-tenant masters•  Pool of slaves•  Automatic provisionning –  On phisical or virtual machines•  Centralised management (plugins, upgrades, default config…) ©2011 CloudBees, Inc. All Rights Reserved 52
  53. 53. All thoses features are Plugins !•  Thanks to flexible Jenkins model•  Easiest maintenance•  Easiest contributions to oss•  All Jenkins improvements are good for CloudBees•  All time focused on Jenkins dev&support is good for Jenkins ©2011 CloudBees, Inc. All Rights Reserved 53
  54. 54. )©2011 CloudBees, Inc. All Rights Reserved 54
  55. 55. ©2011 CloudBees, Inc. All Rights Reserved
  56. 56. Does Jenkins model apply elsewhere ?•  I’m trying to for GWT-maven-plugin ©2011 CloudBees, Inc. All Rights Reserved 56
  57. 57. Applying rules•  lower the contribution barrier just ask to join the team !•  release often one release per month•  tools matter moved from codehaus svn to GitHub•  make it transparent everything happens on googlegroups•  choose a good lead-model myself + Olivier Lamy, may change …•  design for extensibility more investigation required here ©2011 CloudBees, Inc. All Rights Reserved 57
  58. 58. Does it work ?•  Future will say…•  Allready some contributors to join : o  complaining about missing features, o  encouraged to contribute, o  added to team, o  they fixed issues by themself !•  Salvador Diaz to analyse Pull Request•  Pierre-Yves Ricau committed 5 fixes•  .. an M2Eclipse configurator ©2011 CloudBees, Inc. All Rights Reserved 58
  59. 59. Thank youQ&A ©2011 CloudBees, Inc. All Rights Reserved 59
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×