Andrey Sitnik, Evil Martians

How to Make a Popular

Open Source Project

I am working at

20 Years in Open Source

since 2004

Sharing Real Experience

Nano ID

Browserslist

PostCSS

Autoprefixer

130 M

180 M

300 M

75 M

Downloads per month

Chapter 1
Why should you create open source project?

“You must have OS to find a job”

HR

“Success Formula”

Idea

GitHub

Popularity

Success

South Park, Go Fund Yourself episode

Open Source dream is a lie

Popular project ≠ many followers

Better ways to be popular

Articles

Talks

GitHub project ≠ good resume

1 month of work → few stars

vs

2 weeks → commit to Babel

Better ways to be popular

Create app

Fix docs in popular projects

Use beta version → fix bugs

The best reason: change the world

My reason for Autoprefixer:
kill Compass

My reason for PostCSS:
CSS tools diversity

Stylelint

cssnano

RTLCSS

My reason for Size Limit:
reduce JS lib size

Chapter 2
Success formula

False formula

Good idea  Popular project

False

My open source projects

Nano ID

Browserslist

PostCSS

Autoprefixer

The real list of my projects

52 non-popular
and only 4 popular

The real success formula

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

Idea is not important

Idea

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

Useless projects can’t be promoted

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

Chapter 3
Base axioms

Axiom 1: Success formula

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

How we think people choose tools

Rational choice across all options

False

Rational choice across all options

How we think people choose tools

Axiom 2: How people choose tools

Irrational choice across popular options

How we think people read docs

How we think people read

False

Axiom 3: How people read docs

Chapter 4
Preparations

Success formula has Popularity
on both sides

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

My mistake: only announce in Russian

My mistake: nobody to mention

Advice 1: Create English account

Success formula is based on luck

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

Advice 2: Be ready to try many times

Project popularity =
Your popularity
Promotion
Benefits for users
No Luck

+

+

+

Project popularity =
Your popularity
Promotion
Benefits for users
No Luck

+

+

+

Project popularity =
Your popularity
Promotion
Benefits for users
No Luck

+

+

+

Project popularity =
Your popularity
Promotion
Benefits for users
No Luck

+

+

+

Project popularity =
Your popularity
Promotion
Benefits for users
No Luck

+

+

+

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

Chapter 5
README.md

README.md is your main entry point

How people read docs

What users need?

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

Advice 3: Start from the reason
to read docs

What should be in first block

  1. Clear description
  2. How the product is useful for users
  3. The difference from other products

First block of PostCSS

PostCSS is a tool for transforming styles with JS plugins.


These plugins can lint your CSS, support variables and mixins, transpile future CSS syntax, inline images, and more.

 

PostCSS is used by industry leaders including Wikipedia, Twitter, Alibaba, and JetBrains. The Autoprefixer PostCSS plugin is one of the most popular CSS processors.

Clear description

How it could be useful

Why it is important

It’s OK to spend a week
on the first block

First block of Autoprefixer

PostCSS plugin to parse CSS and add vendor prefixes to CSS rules using values from Can I Use.

It is recommended by Google and used in Twitter and Alibaba.

Clear description

Why it is important

First block of Nano ID

A tiny, secure, URL-friendly, unique string ID generator for JS.
 

  • Small. 116 bytes (minified and brotlied). No dependencies.
  • Safe. It uses cryptographically strong random APIs and tests distribution of symbols.
  • Fast. It’s 16% faster than UUID.
  • Compact. It uses a larger alphabet than UUID (A-Za-z0-9_-).

Clear description

Difference from analogs

Bad example of first sentence

Svelte is cybernetically enhanced web apps

Svelte is JS framework with unique compiler

which generate smaller JS files

Not clear

How to make good description

You in the bar with friends.
”So, I created …”

And then cut it 2-4 times

What do you think people read

What people actually read

Progressive JPEG

Advice 4: illustration or code example

Advice 5: More lists and bold

Important parts are highlighted

Advice 6: Use real proofs

Size Limit to prove “small”

Benchmarks to prove “fast”

Code example to prove “good API”

Advice 7: Step-by-step starting guide

Your users

Be very specific

Help with choice

Sections for specific use cases

Test your guide on new project

npm init

everything works

Chapter 6
Slow growing

Wrong way to promote the project

Post 1 tweet

Got 4 retweets

Grow by small iterations

Each iteration contains

  1. Action (feature, tweet, article, etc)
  2. Feedback
  3. Fixing the project according to feedback

Next iteration is a little bigger

  1. Bigger action
  2. More feedback
  3. More things to fix

1st step: explain the idea to friends

And find the way to describe the project

2nd step: convince colleagues to try

Fix issues, DX,
and install docs

3rd step: social networks

And find the best way to describe projects

And tweet again each big feature

Good tweet

Code example or screenshot

Project description

New feature which was added

4th step: reddit and hacker news

And fix compatibility issues

5th step: write English article

dev.to

smashingmagazine.com

css-tricks.com

6th step: send PRs

Use success in next iterations

Don’t stop making iterations

Don’t spam: be regular

every 2 weeks or every month

Why do you need multiple posts?

Why do you need many iterations?

Feedback will help to fix it

How people choose

Irrational choice across popular options

How long will they support the project?

 

How many resources are behind the project?

Regular posts answer
to these questions

Irrational choice across popular options

How long will they support the project?

 

How many resources are behind the project?

Chapter 7
Working with community

You did everything right

Explain benefits in docs

Good step-by-step intructions

Regular posts, articles, talks

And got issues from users

The circle of guilt

Many issues without answer

Blaming yourself for being bad maintaner

Depression and lack of productivity

Even more issues without answer

You don’t need to write code

15 min in the morning
to answer new issues

It’s OK to ask people to wait

Just 1 response could make an ally

Avoid this issues in future

Add warning

Stopped issues about using PostCSS for Sass sources

Add note to docs

Ask issue authors to change docs

How to deal with negative feedback?

There is no ideal answer

Start asking questions

Sometimes, people just need to talk

They can become your fan

after a talk

Competitor means freedom

Chapter 8
Resume

Success formula

Project popularity =
Your popularity
Promotion
Benefits for users
Luck

+

+

+

How people choose

Irrational choice across popular options

How people read

README.md is critical

  1. Clear description
  2. How the product is useful for users
  3. The difference from other products
  4. Easy step-by-step instruction

Regular posts, articles, talks

Thanks

How to Make Popular Open Source Project

By Andrey Sitnik

How to Make Popular Open Source Project

  • 483