SlideShare a Scribd company logo
1 of 36
©2010 CloudBees, Inc. All Rights
Reserved
©2010 CloudBees, Inc. All Rights
Reserved
How we made the Jenkins community
Kohsuke Kawaguchi
Creator of Jenkins / Architect, CloudBees, Inc.
©2010 CloudBees, Inc. All Rights
Reserved
2©2010 CloudBees, Inc. All Rights
Reserved
What is Jenkins?
• Java web application
• For builds, tests, and broader automation
– Called “Continuous Integration server”
• MIT-licensed, 8 years old
jenkins-ci.org
©2010 CloudBees, Inc. All Rights
Reserved
3©2010 CloudBees, Inc. All Rights
Reserved
Where we are today
• 53,000+ installations around the world
• 600+ plugins by 500 contributors
• #1 CI server in the market
©2010 CloudBees, Inc. All Rights
Reserved
4©2010 CloudBees, Inc. All Rights
Reserved
How did we come this far?
• All the usual things
– Software that works
– Being at the right place at the right time
• But I‟d like to think there‟s more to it
– And it‟s something I think others can
replicate
©2010 CloudBees, Inc. All Rights
Reserved
5©2010 CloudBees, Inc. All Rights
Reserved
Communication is inherently painful
• Ask if the project likes the change I‟m
thinking
• Work on the change
• Submit the patch and ask for approval
• Defend the patch and revise it
• Docs, tests, IP assignment
• Done
©2010 CloudBees, Inc. All Rights
Reserved
6©2010 CloudBees, Inc. All Rights
Reserved
Programmers are picky bunch
• All sorts of things to quarrel about
– Should „{‟ be on the same line as “if”?
– Different taste for design trade-off
– Different anticipation for
future expansions
• Hardly bearable even
when you know them
personally
©2010 CloudBees, Inc. All Rights
Reserved
7©2010 CloudBees, Inc. All Rights
Reserved
More so in FLOSS
• We don‟t know each other
• No relationship outside coding
• No common goals
• No command structure
• Time zone / language barrier
©2010 CloudBees, Inc. All Rights
Reserved
8©2010 CloudBees, Inc. All Rights
Reserved
Communication is root of all evil
• Less, the better
• Get rid of the need for it
– Don‟t stand in the way of people and their
itches
– Innovations happen everywhere. Don‟t kill
them before it materializes
©2010 CloudBees, Inc. All Rights
Reserved
9©2010 CloudBees, Inc. All Rights
Reserved
The Question
©2010 CloudBees, Inc. All Rights
Reserved
10©2010 CloudBees, Inc. All Rights
Reserved
It starts with modularity
• It means:
– Large software, divided into small silos
– Module interaction controlled by contracts
– Code/build/test at module level
• Modularity enables extensibility
©2010 CloudBees, Inc. All Rights
Reserved
11©2010 CloudBees, Inc. All Rights
Reserved
Extensibility!
• Open up to the rest of the world
• The only thing that really matters
– It enables all kinds of social/technical tricks
• It‟s not free, but it‟s worth the effort
©2010 CloudBees, Inc. All Rights
Reserved
12©2010 CloudBees, Inc. All Rights
Reserved
#0: Programmability / Scriptability
• Every software should be a library
– Let other programs talk to your program
– There‟s always a layer above you
• “App” people tend to forget this
– ImageMagick vs Gimp
©2010 CloudBees, Inc. All Rights
Reserved
13©2010 CloudBees, Inc. All Rights
Reserved
#1: Code loading at runtime
• Define extension points
– Contracts to be followed by extensions
• Discovering implementations
– Java, etc. requires some work
• Provide isolation
©2010 CloudBees, Inc. All Rights
Reserved
14©2010 CloudBees, Inc. All Rights
Reserved
#2: Treat extensions as 1st class citizen
• If core can do something that extensions
can‟t, that‟s a bug
• If users can tell apart extensions from
core, you aren‟t doing enough
©2010 CloudBees, Inc. All Rights
Reserved
15©2010 CloudBees, Inc. All Rights
Reserved
#3: Data model extensibility
• Extensions need to be able to store stuff
– By adding stuff to core domain objects
– By adding more domain objects
– For Jenkins, XML really helped
• Schema versioning becomes non-linear
©2010 CloudBees, Inc. All Rights
Reserved
16©2010 CloudBees, Inc. All Rights
Reserved
#4: Embrace heterogeneousness
• Good contract enables multiple impls
– Take something, slightly change something,
and you have a new extension impl
– You see a list, I see extensibility
• And inheritance
• This is surprisingly tricky
in some context
– In webapp, for example
©2010 CloudBees, Inc. All Rights
Reserved
17©2010 CloudBees, Inc. All Rights
Reserved
#5: Turtles all the way down
• Extensibility needs to be recursive
– Extensions should define its own extension
points
• In Jenkins, we provide an idiom
• Partly culture
• Partly refactoring
©2010 CloudBees, Inc. All Rights
Reserved
18©2010 CloudBees, Inc. All Rights
Reserved
Symptom of fake modularity/extensibility
• Division of labor is not modularity
• Modules are tailor-fit to their neighbors
• Contracts aren‟t general enough
• A fixed set of modules become the
product
Mosaic I - M.C. Escher
©2010 CloudBees, Inc. All Rights
Reserved
19©2010 CloudBees, Inc. All Rights
Reserved
Extensibility in Jenkins
• Core
– Creates structure
– Includes Modules (plugins in disguise)
• 600+ Plugins
– Actually provide useful CI functionalities
©2010 CloudBees, Inc. All Rights
Reserved
20©2010 CloudBees, Inc. All Rights
Reserved
The Question
©2010 CloudBees, Inc. All Rights
Reserved
21©2010 CloudBees, Inc. All Rights
Reserved
http://www.flickr.com/photos/jvuokko/4566270758/
©2010 CloudBees, Inc. All Rights
Reserved
22©2010 CloudBees, Inc. All Rights
Reserved
Extensible silo is a good thing
• It forces contracts at boundaries
– Principles of “continuous X”: do it often enough
and it becomes painless
• Small code is easier to hack
– Looking at 5 files feel easier than 500 files
– Faster to build, easier to maintain
• Special use case does not clutter general-
purpose code/UI
– Example: Exclusion in Jenkins Subversion
plugin
• Niche features are welcome
©2010 CloudBees, Inc. All Rights
Reserved
23©2010 CloudBees, Inc. All Rights
Reserved
Extensible silo requires less communication
• Everyone gets his own sandbox to hack
– No need to discuss
designs/features/schedules upfront
• No more conflicting development model
– Conference-driven development vs test-
driven development
• No need to see someone else‟s ugly
code
– No need to feel ashamed of it
©2010 CloudBees, Inc. All Rights
Reserved
24©2010 CloudBees, Inc. All Rights
Reserved
Extensible silo fosters innovations
• Every whacky idea gets a shot
– No need to sell ideas
– No need to turn down ideas
• Communicate in code, not in English
• Some of them will turn out great
– No need to drag failed experiments
©2010 CloudBees, Inc. All Rights
Reserved
25©2010 CloudBees, Inc. All Rights
Reserved
Extensibility highlights higher-order
problems
• With enough silos, core devs become silo
devs
• What core does directly benefits silos
– Simplified build mechanism
– IDE support
– Error checker for common mistakes
• It accelerates dev scalability
©2010 CloudBees, Inc. All Rights
Reserved
26©2010 CloudBees, Inc. All Rights
Reserved
Lower barrier to entry, enabled by silo
• In Jenkins, everyone gets to be a committer
– Just ask, and it‟ll be given
– We even have an IRC bot that does this
• This works, because…
– People aren‟t collaborating
– Any damage done is compartmentalized
– VCS enables rollback so long as it‟s not
released
• After all, unless you are Linus Torvalds, “too
many committers” is not your problem
©2010 CloudBees, Inc. All Rights
Reserved
27©2010 CloudBees, Inc. All Rights
Reserved
Lower barrier to entry: observations
• People are cautious when they have
power
– Very few incidents
• Works well when people move on
– Abandoned plugins get new maintainers
• It encourages small contributions
• You can never predict who becomes
significant contributors
©2010 CloudBees, Inc. All Rights
Reserved
28©2010 CloudBees, Inc. All Rights
Reserved
But silo alone doesn‟t create a
community
Image: NASA/JPL-Caltech
©2010 CloudBees, Inc. All Rights
Reserved
29©2010 CloudBees, Inc. All Rights
Reserved
You need a center of gravity
• Something that:
– Drag everything
together
– Pulls in people
• Shared source tree
repo doesn‟t have to be
“it”
Image: NASA/JPL-University of Arizona
©2010 CloudBees, Inc. All Rights
Reserved
30©2010 CloudBees, Inc. All Rights
Reserved
Center of Gravity in Jenkins: IRC
• Closest thing to the water cooler in OSS
– It is a place people can come, unlike Twitter
– You can be present & absent at the same
time
• It builds human relationships
©2010 CloudBees, Inc. All Rights
Reserved
31©2010 CloudBees, Inc. All Rights
Reserved
Center of Gravity in Jenkins: outreach
• Connecting people
– Meet-ups, Hackathon, Events
• Giving the project a voice
– Twitter, Blog
Mad props to @agentdero
©2010 CloudBees, Inc. All Rights
Reserved
32©2010 CloudBees, Inc. All Rights
Reserved
But above all: Update Center
• UI built into Jenkins to let users install
plugins
• To be listed, your plugins need to be co-
located in GitHub org
• Commit access covers all the repos
• Everyone can add others to the project
©2010 CloudBees, Inc. All Rights
Reserved
33©2010 CloudBees, Inc. All Rights
Reserved
Observations
• Creates an incentive for devs to come
• When people move on,
– Keeping plugin alive is easier
• A structure helps new contributors
– Right thing is now the easiest thing
• Providing pin-point technical help is
easier
©2010 CloudBees, Inc. All Rights
Reserved
34©2010 CloudBees, Inc. All Rights
Reserved
Center of Gravity = Self-reinforcing
• As we acquire more plugins…
– We attract more users
– UC becomes more attractive to devs
• Machinery gets oiled
– As a result of solving higher-order problem
©2010 CloudBees, Inc. All Rights
Reserved
35©2010 CloudBees, Inc. All Rights
Reserved
Emerging Challenges
• Subversion → Git changed dynamics
– Repository no longer projects enough gravity
• GitHub and pull requests
– It‟s great that contributions are easier
– But it also creates “throw the stuff over the
wall” mentality
– It lets people contribute without joining,
reducing the inflow
©2010 CloudBees, Inc. All Rights
Reserved
36©2010 CloudBees, Inc. All Rights
Reserved
Conclusions
• Scale development with extensibility
• Reduce communication with extensibility
• Let people innovate with extensibility
• I think I made Steve proud
Extensibility! Extensibility!
Extensibility! Extensibility!
Extensibility! Extensibility!
Extensibility! Extensibility!
Extensibility! Extensibility!
Extensibility! Extensibility!

More Related Content

What's hot

Lessons Learned from Xen (Texas Linux Fest 2013)
Lessons Learned from Xen (Texas Linux Fest 2013)Lessons Learned from Xen (Texas Linux Fest 2013)
Lessons Learned from Xen (Texas Linux Fest 2013)Russell Pavlicek
 
Alcatel-Lucent Jive Live Tour
Alcatel-Lucent Jive Live TourAlcatel-Lucent Jive Live Tour
Alcatel-Lucent Jive Live TourJem Janik
 
7 Ways The Cloud Changes IT
7 Ways The Cloud Changes IT7 Ways The Cloud Changes IT
7 Ways The Cloud Changes ITOpSource
 
Community Repositories: Why You Need One for Your Open Source Project
Community Repositories: Why You Need One for Your Open Source ProjectCommunity Repositories: Why You Need One for Your Open Source Project
Community Repositories: Why You Need One for Your Open Source ProjectAll Things Open
 
OSEN SF Meetup - Business of Open Source
OSEN SF Meetup - Business of Open SourceOSEN SF Meetup - Business of Open Source
OSEN SF Meetup - Business of Open SourceJohn Mark Walker
 
Presentation at FAO, Roma
Presentation at FAO, RomaPresentation at FAO, Roma
Presentation at FAO, RomaCyril Reinhard
 
Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...
Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...
Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...VMware Tanzu
 
The Real Innovations that Fabless Companies Should Look At
The Real Innovations that Fabless Companies Should Look AtThe Real Innovations that Fabless Companies Should Look At
The Real Innovations that Fabless Companies Should Look AtS3
 
Introduction of OSS In-house Community of Sony
Introduction of OSS In-house Community of SonyIntroduction of OSS In-house Community of Sony
Introduction of OSS In-house Community of SonyShane Coughlan
 

What's hot (9)

Lessons Learned from Xen (Texas Linux Fest 2013)
Lessons Learned from Xen (Texas Linux Fest 2013)Lessons Learned from Xen (Texas Linux Fest 2013)
Lessons Learned from Xen (Texas Linux Fest 2013)
 
Alcatel-Lucent Jive Live Tour
Alcatel-Lucent Jive Live TourAlcatel-Lucent Jive Live Tour
Alcatel-Lucent Jive Live Tour
 
7 Ways The Cloud Changes IT
7 Ways The Cloud Changes IT7 Ways The Cloud Changes IT
7 Ways The Cloud Changes IT
 
Community Repositories: Why You Need One for Your Open Source Project
Community Repositories: Why You Need One for Your Open Source ProjectCommunity Repositories: Why You Need One for Your Open Source Project
Community Repositories: Why You Need One for Your Open Source Project
 
OSEN SF Meetup - Business of Open Source
OSEN SF Meetup - Business of Open SourceOSEN SF Meetup - Business of Open Source
OSEN SF Meetup - Business of Open Source
 
Presentation at FAO, Roma
Presentation at FAO, RomaPresentation at FAO, Roma
Presentation at FAO, Roma
 
Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...
Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...
Iterating For Success: A Case Study in Remote Paired Programming, The Evoluti...
 
The Real Innovations that Fabless Companies Should Look At
The Real Innovations that Fabless Companies Should Look AtThe Real Innovations that Fabless Companies Should Look At
The Real Innovations that Fabless Companies Should Look At
 
Introduction of OSS In-house Community of Sony
Introduction of OSS In-house Community of SonyIntroduction of OSS In-house Community of Sony
Introduction of OSS In-house Community of Sony
 

Viewers also liked

コードの互換性と進化の両立
コードの互換性と進化の両立コードの互換性と進化の両立
コードの互換性と進化の両立Kohsuke Kawaguchi
 
On sharing ideas & sharing code
On sharing ideas & sharing codeOn sharing ideas & sharing code
On sharing ideas & sharing codeKohsuke Kawaguchi
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentKohsuke Kawaguchi
 
Simulasi penilaian angka kredit jabatan fungsional pengawas sekolah
Simulasi penilaian angka kredit jabatan fungsional pengawas sekolahSimulasi penilaian angka kredit jabatan fungsional pengawas sekolah
Simulasi penilaian angka kredit jabatan fungsional pengawas sekolahCut Athiyah
 

Viewers also liked (6)

Jenkins勉強会第二回
Jenkins勉強会第二回Jenkins勉強会第二回
Jenkins勉強会第二回
 
Jenkins State of union 2013
Jenkins State of union 2013Jenkins State of union 2013
Jenkins State of union 2013
 
コードの互換性と進化の両立
コードの互換性と進化の両立コードの互換性と進化の両立
コードの互換性と進化の両立
 
On sharing ideas & sharing code
On sharing ideas & sharing codeOn sharing ideas & sharing code
On sharing ideas & sharing code
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build Environment
 
Simulasi penilaian angka kredit jabatan fungsional pengawas sekolah
Simulasi penilaian angka kredit jabatan fungsional pengawas sekolahSimulasi penilaian angka kredit jabatan fungsional pengawas sekolah
Simulasi penilaian angka kredit jabatan fungsional pengawas sekolah
 

Similar to How we made jenkins community

Creating a Developer Community
Creating a Developer CommunityCreating a Developer Community
Creating a Developer CommunityKohsuke Kawaguchi
 
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBeesJava / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBeesParis Open Source Summit
 
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke KawaguchiTap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke KawaguchiZeroTurnaround
 
Securing jenkins
Securing jenkinsSecuring jenkins
Securing jenkinsCloudBees
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Apigee | Google Cloud
 
Digital Doha Summit - ICT Qatar and Open Source
Digital Doha Summit - ICT Qatar and Open SourceDigital Doha Summit - ICT Qatar and Open Source
Digital Doha Summit - ICT Qatar and Open SourceForum One
 
Docker and microservices - moving from a monolith to microservices
Docker and microservices - moving from a monolith to microservicesDocker and microservices - moving from a monolith to microservices
Docker and microservices - moving from a monolith to microservicesJohan Louwers
 
Open Source on the Mainframe Mini-Summit 2019 - How Open Source is Modernizin...
Open Source on the Mainframe Mini-Summit 2019 - How Open Source is Modernizin...Open Source on the Mainframe Mini-Summit 2019 - How Open Source is Modernizin...
Open Source on the Mainframe Mini-Summit 2019 - How Open Source is Modernizin...Open Mainframe Project
 
DevOps - IaC | Talk | AGILE GURUGRAM 2018 | 23 - 24 March, 2018
DevOps - IaC | Talk | AGILE GURUGRAM 2018 | 23 - 24 March, 2018DevOps - IaC | Talk | AGILE GURUGRAM 2018 | 23 - 24 March, 2018
DevOps - IaC | Talk | AGILE GURUGRAM 2018 | 23 - 24 March, 2018AgileNetwork
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDocker, Inc.
 
Intalio create and cloudfoudry - short
Intalio create and cloudfoudry - shortIntalio create and cloudfoudry - short
Intalio create and cloudfoudry - shorthmalphettes
 
Enterprise software needs a PaaS
Enterprise software needs a PaaSEnterprise software needs a PaaS
Enterprise software needs a PaaShmalphettes
 
Opening opensource : The Jenkins Way
Opening opensource : The Jenkins WayOpening opensource : The Jenkins Way
Opening opensource : The Jenkins WayNicolas De Loof
 
The Coming OSS Sustainability Crisis
The Coming OSS Sustainability CrisisThe Coming OSS Sustainability Crisis
The Coming OSS Sustainability CrisisAaron Stannard
 
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...{code}
 
IoT is Something to Figure Out
IoT is Something to Figure OutIoT is Something to Figure Out
IoT is Something to Figure OutPeter Hoddie
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 

Similar to How we made jenkins community (20)

Creating a Developer Community
Creating a Developer CommunityCreating a Developer Community
Creating a Developer Community
 
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBeesJava / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
Java / Opening Open Source the Jenkins Way - Nicolas de Loof, CloudBees
 
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke KawaguchiTap into the power of slaves with Jenkins by Kohsuke Kawaguchi
Tap into the power of slaves with Jenkins by Kohsuke Kawaguchi
 
Securing jenkins
Securing jenkinsSecuring jenkins
Securing jenkins
 
Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture Using containerization to enable your microservice architecture
Using containerization to enable your microservice architecture
 
Digital Doha Summit - ICT Qatar and Open Source
Digital Doha Summit - ICT Qatar and Open SourceDigital Doha Summit - ICT Qatar and Open Source
Digital Doha Summit - ICT Qatar and Open Source
 
Docker and microservices - moving from a monolith to microservices
Docker and microservices - moving from a monolith to microservicesDocker and microservices - moving from a monolith to microservices
Docker and microservices - moving from a monolith to microservices
 
Open Source on the Mainframe Mini-Summit 2019 - How Open Source is Modernizin...
Open Source on the Mainframe Mini-Summit 2019 - How Open Source is Modernizin...Open Source on the Mainframe Mini-Summit 2019 - How Open Source is Modernizin...
Open Source on the Mainframe Mini-Summit 2019 - How Open Source is Modernizin...
 
DevOps - IaC | Talk | AGILE GURUGRAM 2018 | 23 - 24 March, 2018
DevOps - IaC | Talk | AGILE GURUGRAM 2018 | 23 - 24 March, 2018DevOps - IaC | Talk | AGILE GURUGRAM 2018 | 23 - 24 March, 2018
DevOps - IaC | Talk | AGILE GURUGRAM 2018 | 23 - 24 March, 2018
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
Intalio create and cloudfoudry - short
Intalio create and cloudfoudry - shortIntalio create and cloudfoudry - short
Intalio create and cloudfoudry - short
 
Enterprise software needs a PaaS
Enterprise software needs a PaaSEnterprise software needs a PaaS
Enterprise software needs a PaaS
 
Opening opensource : The Jenkins Way
Opening opensource : The Jenkins WayOpening opensource : The Jenkins Way
Opening opensource : The Jenkins Way
 
The Coming OSS Sustainability Crisis
The Coming OSS Sustainability CrisisThe Coming OSS Sustainability Crisis
The Coming OSS Sustainability Crisis
 
DevOps Days Ohio
DevOps Days OhioDevOps Days Ohio
DevOps Days Ohio
 
Microservice et identité
Microservice et identitéMicroservice et identité
Microservice et identité
 
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
EMC World 2016 - code.10 Jumpstart your Open Source Presence through new Coll...
 
IoT is Something to Figure Out
IoT is Something to Figure OutIoT is Something to Figure Out
IoT is Something to Figure Out
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
Elastic build environment
Elastic build environmentElastic build environment
Elastic build environment
 

More from Kohsuke Kawaguchi

Workflow, container, and beyond
Workflow, container, and beyondWorkflow, container, and beyond
Workflow, container, and beyondKohsuke Kawaguchi
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Kohsuke Kawaguchi
 
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and moreJenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and moreKohsuke Kawaguchi
 
Jenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: KeynoteJenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: KeynoteKohsuke Kawaguchi
 
Large scale automation with jenkins
Large scale automation with jenkinsLarge scale automation with jenkins
Large scale automation with jenkinsKohsuke Kawaguchi
 
Jenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San FranciscoJenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San FranciscoKohsuke Kawaguchi
 
Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Kohsuke Kawaguchi
 
ここ最近のJenkins新機能
ここ最近のJenkins新機能ここ最近のJenkins新機能
ここ最近のJenkins新機能Kohsuke Kawaguchi
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京Kohsuke Kawaguchi
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkinsKohsuke Kawaguchi
 
Jenkins user conference 2011
Jenkins user conference 2011Jenkins user conference 2011
Jenkins user conference 2011Kohsuke Kawaguchi
 
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発Kohsuke Kawaguchi
 
ホット・トピック・セミナー「Metro」
ホット・トピック・セミナー「Metro」ホット・トピック・セミナー「Metro」
ホット・トピック・セミナー「Metro」Kohsuke Kawaguchi
 

More from Kohsuke Kawaguchi (19)

Jenkins 2.0 (日本語)
Jenkins 2.0 (日本語)Jenkins 2.0 (日本語)
Jenkins 2.0 (日本語)
 
Workflow, container, and beyond
Workflow, container, and beyondWorkflow, container, and beyond
Workflow, container, and beyond
 
Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015Jenkins User Conference 東京 2015
Jenkins User Conference 東京 2015
 
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and moreJenkins User Conference 2013: Literate, multi-branch, mobile and more
Jenkins User Conference 2013: Literate, multi-branch, mobile and more
 
Jenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: KeynoteJenkins User Conference 2013 Palo Alto: Keynote
Jenkins User Conference 2013 Palo Alto: Keynote
 
第六回Jenkins勉強会
第六回Jenkins勉強会第六回Jenkins勉強会
第六回Jenkins勉強会
 
Large scale automation with jenkins
Large scale automation with jenkinsLarge scale automation with jenkins
Large scale automation with jenkins
 
Jenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San FranciscoJenkins User Conference 2012 San Francisco
Jenkins User Conference 2012 San Francisco
 
Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)Jenkins+Gitによる検証済みマージ(30分版)
Jenkins+Gitによる検証済みマージ(30分版)
 
ここ最近のJenkins新機能
ここ最近のJenkins新機能ここ最近のJenkins新機能
ここ最近のJenkins新機能
 
Jenkins user conference 東京
Jenkins user conference 東京Jenkins user conference 東京
Jenkins user conference 東京
 
Dev@cloudの実装
Dev@cloudの実装Dev@cloudの実装
Dev@cloudの実装
 
Developer summit continuous deliveryとjenkins
Developer summit   continuous deliveryとjenkinsDeveloper summit   continuous deliveryとjenkins
Developer summit continuous deliveryとjenkins
 
Jenkins user conference 2011
Jenkins user conference 2011Jenkins user conference 2011
Jenkins user conference 2011
 
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
プロジェクト現状報告・Rubyによるjenkinsプラグイン開発
 
Current state of Jenkins
Current state of JenkinsCurrent state of Jenkins
Current state of Jenkins
 
Jenkins と groovy
Jenkins と groovyJenkins と groovy
Jenkins と groovy
 
ホット・トピック・セミナー「Metro」
ホット・トピック・セミナー「Metro」ホット・トピック・セミナー「Metro」
ホット・トピック・セミナー「Metro」
 
Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)
 

Recently uploaded

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

How we made jenkins community

  • 1. ©2010 CloudBees, Inc. All Rights Reserved ©2010 CloudBees, Inc. All Rights Reserved How we made the Jenkins community Kohsuke Kawaguchi Creator of Jenkins / Architect, CloudBees, Inc.
  • 2. ©2010 CloudBees, Inc. All Rights Reserved 2©2010 CloudBees, Inc. All Rights Reserved What is Jenkins? • Java web application • For builds, tests, and broader automation – Called “Continuous Integration server” • MIT-licensed, 8 years old jenkins-ci.org
  • 3. ©2010 CloudBees, Inc. All Rights Reserved 3©2010 CloudBees, Inc. All Rights Reserved Where we are today • 53,000+ installations around the world • 600+ plugins by 500 contributors • #1 CI server in the market
  • 4. ©2010 CloudBees, Inc. All Rights Reserved 4©2010 CloudBees, Inc. All Rights Reserved How did we come this far? • All the usual things – Software that works – Being at the right place at the right time • But I‟d like to think there‟s more to it – And it‟s something I think others can replicate
  • 5. ©2010 CloudBees, Inc. All Rights Reserved 5©2010 CloudBees, Inc. All Rights Reserved Communication is inherently painful • Ask if the project likes the change I‟m thinking • Work on the change • Submit the patch and ask for approval • Defend the patch and revise it • Docs, tests, IP assignment • Done
  • 6. ©2010 CloudBees, Inc. All Rights Reserved 6©2010 CloudBees, Inc. All Rights Reserved Programmers are picky bunch • All sorts of things to quarrel about – Should „{‟ be on the same line as “if”? – Different taste for design trade-off – Different anticipation for future expansions • Hardly bearable even when you know them personally
  • 7. ©2010 CloudBees, Inc. All Rights Reserved 7©2010 CloudBees, Inc. All Rights Reserved More so in FLOSS • We don‟t know each other • No relationship outside coding • No common goals • No command structure • Time zone / language barrier
  • 8. ©2010 CloudBees, Inc. All Rights Reserved 8©2010 CloudBees, Inc. All Rights Reserved Communication is root of all evil • Less, the better • Get rid of the need for it – Don‟t stand in the way of people and their itches – Innovations happen everywhere. Don‟t kill them before it materializes
  • 9. ©2010 CloudBees, Inc. All Rights Reserved 9©2010 CloudBees, Inc. All Rights Reserved The Question
  • 10. ©2010 CloudBees, Inc. All Rights Reserved 10©2010 CloudBees, Inc. All Rights Reserved It starts with modularity • It means: – Large software, divided into small silos – Module interaction controlled by contracts – Code/build/test at module level • Modularity enables extensibility
  • 11. ©2010 CloudBees, Inc. All Rights Reserved 11©2010 CloudBees, Inc. All Rights Reserved Extensibility! • Open up to the rest of the world • The only thing that really matters – It enables all kinds of social/technical tricks • It‟s not free, but it‟s worth the effort
  • 12. ©2010 CloudBees, Inc. All Rights Reserved 12©2010 CloudBees, Inc. All Rights Reserved #0: Programmability / Scriptability • Every software should be a library – Let other programs talk to your program – There‟s always a layer above you • “App” people tend to forget this – ImageMagick vs Gimp
  • 13. ©2010 CloudBees, Inc. All Rights Reserved 13©2010 CloudBees, Inc. All Rights Reserved #1: Code loading at runtime • Define extension points – Contracts to be followed by extensions • Discovering implementations – Java, etc. requires some work • Provide isolation
  • 14. ©2010 CloudBees, Inc. All Rights Reserved 14©2010 CloudBees, Inc. All Rights Reserved #2: Treat extensions as 1st class citizen • If core can do something that extensions can‟t, that‟s a bug • If users can tell apart extensions from core, you aren‟t doing enough
  • 15. ©2010 CloudBees, Inc. All Rights Reserved 15©2010 CloudBees, Inc. All Rights Reserved #3: Data model extensibility • Extensions need to be able to store stuff – By adding stuff to core domain objects – By adding more domain objects – For Jenkins, XML really helped • Schema versioning becomes non-linear
  • 16. ©2010 CloudBees, Inc. All Rights Reserved 16©2010 CloudBees, Inc. All Rights Reserved #4: Embrace heterogeneousness • Good contract enables multiple impls – Take something, slightly change something, and you have a new extension impl – You see a list, I see extensibility • And inheritance • This is surprisingly tricky in some context – In webapp, for example
  • 17. ©2010 CloudBees, Inc. All Rights Reserved 17©2010 CloudBees, Inc. All Rights Reserved #5: Turtles all the way down • Extensibility needs to be recursive – Extensions should define its own extension points • In Jenkins, we provide an idiom • Partly culture • Partly refactoring
  • 18. ©2010 CloudBees, Inc. All Rights Reserved 18©2010 CloudBees, Inc. All Rights Reserved Symptom of fake modularity/extensibility • Division of labor is not modularity • Modules are tailor-fit to their neighbors • Contracts aren‟t general enough • A fixed set of modules become the product Mosaic I - M.C. Escher
  • 19. ©2010 CloudBees, Inc. All Rights Reserved 19©2010 CloudBees, Inc. All Rights Reserved Extensibility in Jenkins • Core – Creates structure – Includes Modules (plugins in disguise) • 600+ Plugins – Actually provide useful CI functionalities
  • 20. ©2010 CloudBees, Inc. All Rights Reserved 20©2010 CloudBees, Inc. All Rights Reserved The Question
  • 21. ©2010 CloudBees, Inc. All Rights Reserved 21©2010 CloudBees, Inc. All Rights Reserved http://www.flickr.com/photos/jvuokko/4566270758/
  • 22. ©2010 CloudBees, Inc. All Rights Reserved 22©2010 CloudBees, Inc. All Rights Reserved Extensible silo is a good thing • It forces contracts at boundaries – Principles of “continuous X”: do it often enough and it becomes painless • Small code is easier to hack – Looking at 5 files feel easier than 500 files – Faster to build, easier to maintain • Special use case does not clutter general- purpose code/UI – Example: Exclusion in Jenkins Subversion plugin • Niche features are welcome
  • 23. ©2010 CloudBees, Inc. All Rights Reserved 23©2010 CloudBees, Inc. All Rights Reserved Extensible silo requires less communication • Everyone gets his own sandbox to hack – No need to discuss designs/features/schedules upfront • No more conflicting development model – Conference-driven development vs test- driven development • No need to see someone else‟s ugly code – No need to feel ashamed of it
  • 24. ©2010 CloudBees, Inc. All Rights Reserved 24©2010 CloudBees, Inc. All Rights Reserved Extensible silo fosters innovations • Every whacky idea gets a shot – No need to sell ideas – No need to turn down ideas • Communicate in code, not in English • Some of them will turn out great – No need to drag failed experiments
  • 25. ©2010 CloudBees, Inc. All Rights Reserved 25©2010 CloudBees, Inc. All Rights Reserved Extensibility highlights higher-order problems • With enough silos, core devs become silo devs • What core does directly benefits silos – Simplified build mechanism – IDE support – Error checker for common mistakes • It accelerates dev scalability
  • 26. ©2010 CloudBees, Inc. All Rights Reserved 26©2010 CloudBees, Inc. All Rights Reserved Lower barrier to entry, enabled by silo • In Jenkins, everyone gets to be a committer – Just ask, and it‟ll be given – We even have an IRC bot that does this • This works, because… – People aren‟t collaborating – Any damage done is compartmentalized – VCS enables rollback so long as it‟s not released • After all, unless you are Linus Torvalds, “too many committers” is not your problem
  • 27. ©2010 CloudBees, Inc. All Rights Reserved 27©2010 CloudBees, Inc. All Rights Reserved Lower barrier to entry: observations • People are cautious when they have power – Very few incidents • Works well when people move on – Abandoned plugins get new maintainers • It encourages small contributions • You can never predict who becomes significant contributors
  • 28. ©2010 CloudBees, Inc. All Rights Reserved 28©2010 CloudBees, Inc. All Rights Reserved But silo alone doesn‟t create a community Image: NASA/JPL-Caltech
  • 29. ©2010 CloudBees, Inc. All Rights Reserved 29©2010 CloudBees, Inc. All Rights Reserved You need a center of gravity • Something that: – Drag everything together – Pulls in people • Shared source tree repo doesn‟t have to be “it” Image: NASA/JPL-University of Arizona
  • 30. ©2010 CloudBees, Inc. All Rights Reserved 30©2010 CloudBees, Inc. All Rights Reserved Center of Gravity in Jenkins: IRC • Closest thing to the water cooler in OSS – It is a place people can come, unlike Twitter – You can be present & absent at the same time • It builds human relationships
  • 31. ©2010 CloudBees, Inc. All Rights Reserved 31©2010 CloudBees, Inc. All Rights Reserved Center of Gravity in Jenkins: outreach • Connecting people – Meet-ups, Hackathon, Events • Giving the project a voice – Twitter, Blog Mad props to @agentdero
  • 32. ©2010 CloudBees, Inc. All Rights Reserved 32©2010 CloudBees, Inc. All Rights Reserved But above all: Update Center • UI built into Jenkins to let users install plugins • To be listed, your plugins need to be co- located in GitHub org • Commit access covers all the repos • Everyone can add others to the project
  • 33. ©2010 CloudBees, Inc. All Rights Reserved 33©2010 CloudBees, Inc. All Rights Reserved Observations • Creates an incentive for devs to come • When people move on, – Keeping plugin alive is easier • A structure helps new contributors – Right thing is now the easiest thing • Providing pin-point technical help is easier
  • 34. ©2010 CloudBees, Inc. All Rights Reserved 34©2010 CloudBees, Inc. All Rights Reserved Center of Gravity = Self-reinforcing • As we acquire more plugins… – We attract more users – UC becomes more attractive to devs • Machinery gets oiled – As a result of solving higher-order problem
  • 35. ©2010 CloudBees, Inc. All Rights Reserved 35©2010 CloudBees, Inc. All Rights Reserved Emerging Challenges • Subversion → Git changed dynamics – Repository no longer projects enough gravity • GitHub and pull requests – It‟s great that contributions are easier – But it also creates “throw the stuff over the wall” mentality – It lets people contribute without joining, reducing the inflow
  • 36. ©2010 CloudBees, Inc. All Rights Reserved 36©2010 CloudBees, Inc. All Rights Reserved Conclusions • Scale development with extensibility • Reduce communication with extensibility • Let people innovate with extensibility • I think I made Steve proud Extensibility! Extensibility! Extensibility! Extensibility! Extensibility! Extensibility! Extensibility! Extensibility! Extensibility! Extensibility! Extensibility! Extensibility!

Editor's Notes

  1. I suppose these numbers are nothing to brag about when we have folks from all the big projects in this conference, but for a project that somebody started without a corporate backing, with relatively niche user base, I think this is pretty good.
  2. There’s all the usual things, but there’s something more, too. That’s what I wanted to talk about.
  3. Lead in: so what are those key ingredients that we put into the Jenkins project? It starts with the realization that…
  4. I mean, it takes some special mindset to love hacking code for free.
  5. Heterogeneousness example:Bugs in bugzillaMedia objects in iTunesDocument types in Google DocsAnywhere where you see a list
  6. Remember the question I asked earlier; now we are ready to answer this question
  7. While silo is often talked as a bad example of everyone heads down into their little corner of the problem without a broad picture, but …
  8. Those obstacles for more scalability become far more evident when you work on multiple modules, because they are no longer one-off problems. Because core developers also must work on modules, module developers’ pain point becomes core developers’ pain point.
  9. But silo alone does not form a community. If everyone minds his own business and if that’s all they do, you don’t end up accumulating critical mass anywhere.A good example of this is custom Ant tasks. It’s done all over the places, and not much sharing and talking going on.
  10. Someone please do IRC 2.0! Or maybe the barrier to entry is serving as a signal/noise filter. I dunno.
  11. Expectation