Why is building popular open source project important? This talk introduces the tips and tricks of building open source projects.
Building popular opensource projects林林佑安 / Yo-An Lin / @c9sTips & Tricks
View Slide
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 2012http://pugs.blogs.com/pugs/2012/04/%E9%96%8B%E6%BA%90%E4%B9%8B%E9%81%93.htmlhttp://allisonrandal.com/2012/04/15/open-source-enlightenment/
“Open SourceCollaboration”
前提是要有女朋友
前提是你的專案要有⼈人願意參參與
如果你想要有更更多⼈人願意參參與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 thecustomer, Convenience, Communication”
市場潛⼒力力Find the market potential
獨特性Make it unique
爭議性Let people discuss
Different Targets
creativity / performance /simple interface /lightweight / fun / invention
專案名稱The name of a project should be easy toremember
1. Short namenode.js, three.js, gearman, apache, nginx,jQuery, bootstrap, gem, rails and so on…
If you need to combinedifferent words, don'tcombine more than 3 words
2. PronounceableProject name should be easilypronounced and spelled.
Worcestershire
3. Unique
4. Combining words ormaking up new wordsentirelyYouTube, Facebook, Myspace, GitHub
第⼀一印象First Impression
SYNOPSIS
Which I learned from CPAN - anaged, fantastic site.
Synopsis is importantbecause…
It may include a workableexample to help othersrun a basic program
And of course, furtherdevelopment :)
You firstly see thesynopsis of the API,
then read the tediouslylong description
先看對⽅方條件好不好再看是否進⼀一步交往
⾔言簡意賅Easy to understand
• Describe what’s the project doing, and what’sthe problem this project trying to solve.• Details & mechanism later.• Design & implementation doc for advancedusers.
友善授權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
減少使⽤用者挫折感
幫助使⽤用者”快速”建立環境
傻瓜都會⽤用建置步驟
For Contributors
“簡易易”有效的開發環境建置步驟
使⽤用良好的套件⼯工具避免 dependency failure
錯誤排除Debugging
Trouble Shooting Guide
List All The Problems thatYour Users MightEncounter.
詳細確實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 thesecontributors.
Merged pull requestmakes people happy,
and they might sendnew pull request later…
也就是: 如果你忘了了他們貢獻者也會把你忘了了
⽽而且不會回來來
If possible, try not toreject pull requests,
Rejecting pull requestwill stop their motivation
盡量量不要發好⼈人卡
Help them improve thepull request and get thepull request merged.
To prevent rejectingpull requests
或先收下 PR 來來再修改
Let them know: discussbefore sending pullrequest
步步⾼高陞
版本號不⽤用錢Bumping minor / patch version number doesn’t cost
不該擔⼼心版本號跳太快You should not worry about bumping the numbers
語意化版本號Semantic Versioning
盡可能縮⼩小釋出版本Release Small
縮短釋出時程Release Fast
讓被合併的功能能儘快在新版本釋出並使⽤用Release Merged Features ASAP, of course you should test them
正向循環
Be kind to others
尊重彼此Respect each other
避免“讀他媽的⽂文件”No RTFM
彼此勉勉勵Encourage Each Other
列列出貢獻者List Your Contributors in your README
–Field of Dreams“If you build it, they will come.”
Thank youc9s @ twitter / github / plurk