Getting Traction for an Open Source Project



Getting Traction for an Open Source Project

0 0


get-traction-open-source

Getting Traction for an Open Source Project -slides with Reveal.js

On Github kimmobrunfeldt / get-traction-open-source

Getting Traction for an Open Source Project

Kimmo Brunfeldt, December/2014

  • Hi, I'm Kimmo Brunfeldt from Futurice
  • Sorry about voice
  • I do a lot of open source stuff

ProgressBar.js

  • I recently made this library called progressbar.js
  • It is a library which can be used to create bars
  • You make any shape a progress bar with using SVG paths
  • Almost everything in these slides are learnings from the project
  • Needed in personal project, decided to make own

ProgressBar.js statistics

  • 45 000 visitors
  • 65 000 page views
  • >3k stars in GitHub
  • Countries, people, page views, stars in one month

Steps to a good project

Solve an existing problem Gift wrap the solution Share it at the right time to the correct channels Maintain it
  • Explain steps
  • I’ll go through the steps in the perspective of Progressbar.js project
  • Or just make a senseless project which consumes ridiculous amount of time, like Arnold C

Solve an existing problem

  • You have probably found bunch of issues while doing other projects
  • Others have dealt with the same problem but haven't yet packaged it
  • When doing progress bar I found the following problems:

Problems with current solutions

  • Sometimes using a library doesn't just feel right
  • Depends on jQuery (the usual), No animation support
  • Weird API, It was made 10 years ago
  • Looks like was made 10 years ago
  • Think of all annoying parts in other open source projects

Lousy documentation?

  • Documenting is super important
  • Bunch of code without explanation isn't very interesting

Lack of examples?

  • Easiest way to get hang of the lib API is example
  • Without example it takes much more time to get working code

No tests?

  • Tests give you some idea of how quality oriented the project is
  • Finally, search before rolling sleeves
  • Easy to miss existing projects with wrong key words

Gift wrap it

  • Then fix those problems in your new shiny project
  • Present it nicely and you'll get users
  • Make it easy
  • People want to try out the new thing without hassle
  • Provide a js fiddle link. It'll take one second to start testing the library
  • Have a demo page to show more examples
  • Help getting started by having a full example of how to use and install the library
  • Here I have a few examples which contain the whole package, HTML, CSS and JS
  • To get started, people want examples. But later on they need specific documentation
  • of each method and attribute. Have an API documentation to help actually using the library
  • I think the API doc has failed if you still have to look into source code sometimes
  • Help contributors and advice them how to contribute to the project
  • Try to document everything
  • Prepare for the day you lose interest
  • Prepare the project to be maintained by others

Gift wrapping takes time

(That's 20 working days)

  • Takes loads of time
  • Progressbar.js was a bit overkill but I wanted to make it as good as I can

Share it at the right time

to the correct channels

Get initial buzz

  • Try to get a big "boom" to the start
  • Try to get as much people as possible to see it inside 24h
  • Getting to daily trending repos in GitHub is good
  • It means: "most starred repos in past 24h"
  • Think of the time zones before sharing
  • I shared progressbar.js on Tuesday 3pm
  • Colleagues share before leaving work
  • When you put something online at 3pm, people in san fransico haven't woken up yet

Traffic

  • This is traffic in google analytics for the first 3 weeks from progressbar.js demo page
  • After the first 3 weeks, the view counts have dropped to 500 per day
  • It's important that the library shows up in google search

Where to share

  • Friends and colleagues
  • Reddit (500k in /r/programming)
  • Hacker News
  • Popular news letter (JavaScript Weekly 77k)
  • Popular blog authors (DailyJS, Tympanus 50k-100k)
  • There are tons of blogs all over the world
  • Most of the mass comes from reddit, news letters and blogs
  • Traffic from twitter is suprisingly small
  • Reddit and hackernews have lot of cheat detections
  • Always link to newest list and search for title

Help people

  • Answer to StackOverflow
  • Comment on related blog posts
  • Open issue to GitHub project
  • Comment to relevant questions in Stack overflow
  • Help project author to find your new thing with issue

Maintain

  • Important to keep project alive and maintained
  • Even if the code is still good, it might scare people if nothing
  • has been done for a few years

Answer to issues and pull requests

  • Bootstrap has over 10k closed issues
  • If twitter died, someone else would maintain it

Don't kill the project

  • Don't throw away the effort for good
  • Others are probably still using your project
  • Allow others to continue your work
  • Don't lock it behind your github account and kill the project

Find new maintainers

  • You can always find new maintainers like TJ hollowaychuck did

When to release?

  • Your code doesn't need to be perfect
  • Documentation and demos are most important

Share your projects!

  • This may sound a bit too self promoting
  • If you have put effort to a project
  • then it's good that other people with the same problem can find your work
  • You probably have some projects too, share them!