Loading…

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

on

  • 7,549 views

My talk at Monki Gras. 2012 Feb, London

My talk at Monki Gras. 2012 Feb, London

Statistics

Views

Total Views
7,549
Views on SlideShare
7,008
Embed Views
541

Actions

Likes
24
Downloads
97
Comments
0

11 Embeds 541

http://www.outercurve.org 378
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
More...

Accessibility

Categories

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.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
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