Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Creating a Developer Community



My talk at Monki Gras. 2012 Feb, London

My talk at Monki Gras. 2012 Feb, London



Total Views
Views on SlideShare
Embed Views



11 Embeds 542

http://www.outercurve.org 379
http://lanyrd.com 60
https://twitter.com 49
http://a0.twimg.com 38
http://us-w1.rockmelt.com 6
http://tweetedtimes.com 4
http://paper.li 2
http://www.linkedin.com 1
https://si0.twimg.com 1
https://twimg0-a.akamaihd.net 1
http://localhost:4000 1



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Creating a Developer Community Creating a Developer Community Presentation Transcript

  • Creating a Developer CommunityKohsuke KawaguchiArchitect, CloudBees, Inc. ©2010 CloudBees, Inc. All Rights Reserved
  • What is Jenkins?• Server app for developers – Called “Continuous Integration server”• Extensible via plugins• Easy to get started & configure jenkins-ci.org ©2010 CloudBees, Inc. All Rights 2 Reserved
  • Jenkins, by the numbers• 2004 Started as a hobby project• 2006 2nd committer join the project• 2008 Jenkins became my day job• 2012 – 450 releases – 450+ plugins – 300+ developers – 27K installations, 500K users(?) ©2010 CloudBees, Inc. All Rights 3 Reserved
  • Hence my talk today• How to create a developer community? – Without any significant resources• I think I have some recipes to share – Tried & proven in multiple projects ©2010 CloudBees, Inc. All Rights 4 Reserved
  • Models of OSS projects• Company-sponsored (JBoss, Spring, etc) – Dominated by a single entity – User community, yes, but developer community?• Foundation (Apache, Eclipse, etc.) – Established existing culture, brand, process• Neither of them work for small projects ©2010 CloudBees, Inc. All Rights 5 Reserved
  • Every developer starts as a visitor Visitor User Developer ©2010 CloudBees, Inc. All Rights 6 Reserved
  • Think about Conversion Funnel• Visitor to user – Download, install, initial configuration, …• User to developer – Obtain source code, build, run, contribute, …• Obstacles, however little, add up quickly• You don’t see the lost opportunities ©2010 CloudBees, Inc. All Rights 7 Reserved
  • Download link? How hard is that… ©2010 CloudBees, Inc. All Rights 8 Reserved
  • ©2010 CloudBees, Inc. All Rights 9 Reserved
  • But obvious it’s not… ©2010 CloudBees, Inc. All Rights 10 Reserved
  • But obvious it’s not… ©2010 CloudBees, Inc. All Rights 11 Reserved
  • But obvious it’s not… ©2010 CloudBees, Inc. All Rights 12 Reserved
  • But obvious it’s not… ©2010 CloudBees, Inc. All Rights 13 Reserved
  • What to do after download?• Installation guide – 31 page PDF• Quick start guide – 15 page PDF ©2010 CloudBees, Inc. All Rights 14 Reserved
  • User support• Great opportunity to convert users to developers – Catch them when they are willing to spend some efforts – Push source code in front of them ©2010 CloudBees, Inc. All Rights 15 Reserved
  • Make them read code• Developers tend to forget about this• Lot can be done to improve experience – Online browsing – Source code cross reference – Aggregate multiple modules – Better documentation ©2010 CloudBees, Inc. All Rights 16 Reserved
  • Let them hack code• Is it obvious how to check out code?• How to build/run/test/debug it?• Common pitfalls – Lots of additional pre-requisites – Non obvious failure mode when you make mistake ©2010 CloudBees, Inc. All Rights 17 Reserved
  • Modularity• Your big app needs to be split into pieces – Pieces that are individually useful• Why? – Some people care about one piece but not your big app – Every piece reused by one developer gets 100s of users – It’s a good software engineering anyway ©2010 CloudBees, Inc. All Rights 18 Reserved
  • Programmability• Every software should be a library – Let other programs talk to your program – There’s always a layer above you• Every one developer building on top of you = 100s of users• Don’t work on the same dish – Split the meal to multiple dishes instead ©2010 CloudBees, Inc. All Rights 19 Reserved
  • Division of labor > Collaboration• Collaborating on the same code is hard – Communication is painful – Time zones aren’t disappearing – Difference of opinions, practices, & beliefs – Especially so for faceless OSS collaboration• Collaboration doesn’t scale – Every new contributor needs your time ©2010 CloudBees, Inc. All Rights 20 Reserved
  • Therefore, silo is a good thing• Extensibility (aka plugins) – e.g., Eclipse, Ant, Maven, Jenkins, … – Requirement for building a developer community• Principles – Modularity taken to its logical consequences – Users should see seamless software ©2010 CloudBees, Inc. All Rights 21 Reserved
  • Everyone can claim they’ve got extensibility• Symptoms of fake extensibility – One API for internal use, another for plugins – There are things “core” can do that plugins can’t – Features from plugins look different• Core has to live by the same rules you impose on plugins ©2010 CloudBees, Inc. All Rights 22 Reserved
  • It works because…• You don’t see “crappy” code of others• You don’t need to reject “whacky” ideas – From time to time other people will prove you wrong – Encourages innovations without your making risky bets• It’s scalable – New plugins have ~0 overhead to you• People feel sense of ownership/stake ©2010 CloudBees, Inc. All Rights 23 Reserved
  • Extensibility alone is not enough• Center of gravity is needed – Or else devs will do it in their own caves – Failed example: Ant• Benefits – Sustains the project when people move on – Grows new core developers – Enables sharing, reuse, and improvements ©2010 CloudBees, Inc. All Rights 24 Reserved
  • Center of gravity in Jenkins: Update Center• Mechanism to distribute plugins – This is how users install them• In Jenkins, this is tied to source code hosting• One commit access for all repositories ©2010 CloudBees, Inc. All Rights 25 Reserved
  • Lowering the barrier to entry• Remember the funnel – Make something easy, and get more of them• In Jenkins, everyone gets a commit access just by asking – Akin to Wikipedia• Encourages small contributions• Made feasible with silo approach ©2010 CloudBees, Inc. All Rights 26 Reserved
  • Conclusions• There are many shapes and forms to OSS projects – Don’t blindly follow what big guys are doing• Code is just one piece of puzzle• Make everything easy, relentlessly• Bend over backward to make lives easier for other people ©2010 CloudBees, Inc. All Rights 27 Reserved