OSDC.TW 2014 building popular open source projects

Preview:

DESCRIPTION

 

Citation preview

Building popular open source projects

林佑安 / Yo-An Lin / @c9s

Tips & Tricks

• 林佑安 Yo-An Lin (c9s)

• GitHub: @c9s

• Golang / PHP / JavaScript / Perl

So you might ask

“Is it important to make it popular?”

“Yes!”

群聚效應“群聚效應(Critical mass) 是⼀一個社會動⼒力學的名詞,⽤用來描述在⼀一個社會系統裡,某件事情的存在已達⾄至⼀一個⾜足夠的動量,使它能夠⾃自我維持,並為往後的成⻑⾧長提供動⼒力。”

若有⼀一個⼈人停下來抬頭往天望,沒有⼈人會理會他,其他路過的⼈人會照舊繼續他們要做的事情。如果有三個⼈人停了下來抬頭望天,可能會有多幾個⼈人會停下來看看他們在做甚麼,但很快⼜又會去繼續他們原來的事。但假若當街上抬頭向天望的群眾增加⾄至 5 到 7 ⼈人,這時,其他⼈人可能亦會好奇地加⼊入,看看他們到底在做甚麼。

http://zh.wikipedia.org/wiki/群聚效應

也就是: 當某專案符合某個獨特的市場需求,⽽而且能夠受到注⺫⽬目,不斷被群眾提起,⾃自然就能吸引更多的開發者重視,並且加⼊入開發/⽀支援/貢獻。 有了動能,就算專案擁有者沒有持續開發,也可以讓專案持續前進

開源之道

Allison Randal @ OSDC TW 2012 http://pugs.blogs.com/pugs/2012/04/%E9%96%8B%E6%BA%90%E4%B9%8B%E9%81%93.html

http://allisonrandal.com/2012/04/15/open-source-enlightenment/

“Open source collaboration”

前提是你的專案要有⼈人願意參與

如果你想要有更多⼈人願意參與

If you want more people join in

你必須把 open source 專案視為銷售產品

You need to treat your project as a product

–McCarthy

“4P: Product, Price, Place, Promotion”

–Robert Lauterborn

“4C: Customer needs and wants, Cost to the customer, Convenience, Communication”

市場潛⼒力

And find the market potential

獨特性

Make it unique

爭議性

Let people discuss

甚⾄至可嘗試負⾯面⾏行銷

You may focus on

creativity / performance / simple interface / lightweight

implementation / fun

I started using GitHub since 2009

for fun

and wrote a lot of vim plugins, perl modules…

Was really busy in the past few years

Almost work from 9 AM to 2 AM everyday

holiday = working day

Chinese cruel torture

And we released a lot of open source projects

from them

From back-end to front-end

phprew, pux, gutscript and so on…

My public contribution calendar was almost like this,

2013

and private repositories are not included.

Here is what I’ve learned. And which should be helpful

for small projects to start.

專案 名稱

The name of a project should be easy to remember

1. Short namenode.js, three.js, gearman, apache, nginx, jQuery, bootstrap, gem, rails and so on…

2. PronounceableYou don’t want a project named

“hjkdvbjkGUI” or something

3. Unique

4. Combining words or making up new words

entirelyYouTube, Facebook, Myspace, GitHub

第⼀一 印象

First Impression

SYNOPSIS

Which I learned from CPAN - an aged, fantastic site.

Synopsis is important because…

It may include a workable example to help others

run a basic program

And of course, further development :)

You firstly see the synopsis of the API,

then read the tediously long description

先看對⽅方正不正 再看是否進⼀一步交往

⾔言簡 意賅

Easy to understand

• Describe what’s the project doing.

• Details & mechanism later.

友善 授權License

http://inspire.twgg.org/internet/trends/item/74-comparison-of-five-kinds-of-standard-open-source-license-bsd-apache-gpl-lgpl-mit.html

五種開源授權規範的⽐比較

• MIT License

• BSD License

• Apache License

• LGPL License

• GPL License

簡易 使⽤用

Easy to use

“設置到使⽤用” ⾮非常重要From Setup to Use

多環境設置測試Test on different platforms

減少使⽤用者挫折感

幫助使⽤用者快速建⽴立環境

傻⽠瓜都會⽤用建置步驟

簡易有效的開發環境建置步驟

使⽤用良好的套件⼯工具避免 dependency failure

詳細 確實

Details

多數開發者還是依賴⽂文件開發

少數開發者才會去 trace code

詳細的⽂文件對加⼊入專案的會很有幫助

完整度的表現

可增加使⽤用意願

且可製造安全感的假象

⽼老⺩王 賣⽠瓜

Promote your project

善⽤用媒體

• Mailing List

• Google Group

• IRC

• Twitter

• Facebook

• Hacker News

• 善⽤用 Mail Signature

多管 閒事

Help others

如果很閒的話 :-p

上 Stack Overflow

“嘿 何不嘗試看看某 xxx 專案,也許符合你的需求。”

打鐵 趁熱

“Hey, I fixed ….”

“Hey, I added a new feature for …”

“What if ….., can we make it?”

If you don’t reply them, you might lost these

contributors.

Merged pull request makes people happy,

and they might send new pull request later…

也就是: 如果你忘了他們 貢獻者也會把你忘了

⽽而且不會回來

If possible, try not to reject pull requests,

Rejecting pull request will stop their motivation

盡量不要發好⼈人卡

Help them improve the pull request and get the

pull request merged.

To prevent rejecting pull requests

Let them know: discuss before sending pull

request

正向 循環

Be kind to others

尊重彼此

Respect each other

避免“讀他媽的⽂文件”

No RTFM

–Field of Dreams

“If you build it, they will come.”

Thank you

c9s @ twitter / github / plurk

(Next talk: gutscript)

Recommended