Advertisement
Advertisement

More Related Content

Similar to Creating a Developer Community(20)

Advertisement
Advertisement

Creating a Developer Community

  1. ©2010 CloudBees, Inc. All Rights Reserved ©2010 CloudBees, Inc. All Rights Reserved Creating a Developer Community Kohsuke Kawaguchi Architect, CloudBees, Inc.
  2. ©2010 CloudBees, Inc. All Rights Reserved 2©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
  3. ©2010 CloudBees, Inc. All Rights Reserved 3©2010 CloudBees, Inc. All Rights 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(?)
  4. ©2010 CloudBees, Inc. All Rights Reserved 4©2010 CloudBees, Inc. All Rights 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
  5. ©2010 CloudBees, Inc. All Rights Reserved 5©2010 CloudBees, Inc. All Rights 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
  6. ©2010 CloudBees, Inc. All Rights Reserved 6©2010 CloudBees, Inc. All Rights Reserved Every developer starts as a visitor Visitor User Developer
  7. ©2010 CloudBees, Inc. All Rights Reserved 7©2010 CloudBees, Inc. All Rights 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
  8. ©2010 CloudBees, Inc. All Rights Reserved 8©2010 CloudBees, Inc. All Rights Reserved Download link? How hard is that…
  9. ©2010 CloudBees, Inc. All Rights Reserved 9©2010 CloudBees, Inc. All Rights Reserved
  10. ©2010 CloudBees, Inc. All Rights Reserved 10©2010 CloudBees, Inc. All Rights Reserved But obvious it’s not…
  11. ©2010 CloudBees, Inc. All Rights Reserved 11©2010 CloudBees, Inc. All Rights Reserved But obvious it’s not…
  12. ©2010 CloudBees, Inc. All Rights Reserved 12©2010 CloudBees, Inc. All Rights Reserved But obvious it’s not…
  13. ©2010 CloudBees, Inc. All Rights Reserved 13©2010 CloudBees, Inc. All Rights Reserved But obvious it’s not…
  14. ©2010 CloudBees, Inc. All Rights Reserved 14©2010 CloudBees, Inc. All Rights Reserved What to do after download? • Installation guide – 31 page PDF • Quick start guide – 15 page PDF
  15. ©2010 CloudBees, Inc. All Rights Reserved 15©2010 CloudBees, Inc. All Rights 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
  16. ©2010 CloudBees, Inc. All Rights Reserved 16©2010 CloudBees, Inc. All Rights 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
  17. ©2010 CloudBees, Inc. All Rights Reserved 17©2010 CloudBees, Inc. All Rights 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
  18. ©2010 CloudBees, Inc. All Rights Reserved 18©2010 CloudBees, Inc. All Rights 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
  19. ©2010 CloudBees, Inc. All Rights Reserved 19©2010 CloudBees, Inc. All Rights 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
  20. ©2010 CloudBees, Inc. All Rights Reserved 20©2010 CloudBees, Inc. All Rights 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
  21. ©2010 CloudBees, Inc. All Rights Reserved 21©2010 CloudBees, Inc. All Rights 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
  22. ©2010 CloudBees, Inc. All Rights Reserved 22©2010 CloudBees, Inc. All Rights 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
  23. ©2010 CloudBees, Inc. All Rights Reserved 23©2010 CloudBees, Inc. All Rights 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
  24. ©2010 CloudBees, Inc. All Rights Reserved 24©2010 CloudBees, Inc. All Rights 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
  25. ©2010 CloudBees, Inc. All Rights Reserved 25©2010 CloudBees, Inc. All Rights 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
  26. ©2010 CloudBees, Inc. All Rights Reserved 26©2010 CloudBees, Inc. All Rights 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
  27. ©2010 CloudBees, Inc. All Rights Reserved 27©2010 CloudBees, Inc. All Rights 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
Advertisement