<修訂版>開源項(xiàng)目成功的十條準(zhǔn)則

Ten Rules for Open Source Success
《開源項(xiàng)目成功的十條準(zhǔn)則》

Everyone wants it, lots of people try it, yet doing it is mostly painful and irritating. I’m speaking about free software aka open source. Today I’m going to summarize 30 years of coding experience in ten management-proof bullet points.
每個(gè)人都想去做,也有很多人躍躍欲試遥皂,但是真做起來卻常常會(huì)令人痛苦和憤怒——我說的是自由軟件,或者更寬泛一些的開源軟件下硕。今天我要將自己30年來的開發(fā)經(jīng)驗(yàn)读虏,總結(jié)為開源軟件的十條成功法則。

1、People Before Code
1指蚁、人比代碼重要

This is the Golden Rule, taught to me by Isabel Drost-Fromm. Build community, not software. Without community your code will solve the wrong problems. It will be abandoned, ignored, and will die. Collect people and give them space to work together. Give them good challenges. Stop writing code yourself.
這是一條黃金法則,是Isabel Drost-Fromm【注1】教給我的自晰。我們要建立的是社區(qū)而不是軟件凝化。沒有社區(qū),你的代碼就會(huì)用來解決錯(cuò)誤的問題酬荞。然后這些代碼會(huì)被拋棄搓劫、忽略,最后死去袜蚕。正確的做法是把人集結(jié)起來糟把,給他們協(xié)同工作的空間,給他們充分的挑戰(zhàn)牲剃。切記不要親手來寫代碼遣疯!
注1:Isabel Drost-Fromm是Apache軟件基金會(huì)的成員,Apache Mahout的創(chuàng)立者之一凿傅。

2缠犀、Use a Share-Alike License
2、使用“以相同方式共享”的許可證

Share-alike is the seat belt of open source. You can boast about how you don’t need it, until you have a bad accident. Then you will either find your face smeared on the wall, or have light bruising. Don’t become a smear. Use share-alike. If GPL/LGPL is too political for you, use MPLv2.
“以相同方式共享”是開源的安全帶聪舒。在遇到嚴(yán)重的事故之前辨液,你大可吹噓自己完全不需要它。一旦出現(xiàn)事故箱残,你就會(huì)發(fā)現(xiàn)自己滿臉污垢滔迈,或者‘輕微擦傷’,不要成為一個(gè)“傷員”被辑。使用“以相同方式共享”的許可證吧燎悍,如果你覺得GPL/LGPL太過于政治化,那就用MPLv2盼理。

3谈山、Use an Zero-Consensus Process
3、使用一個(gè)無需達(dá)成共識(shí)的協(xié)作流程

Seeking upfront consensus is like waiting for the ideal life partner. It is kind of crazy. Github killed upfront consensus with their fork/pull-request flow, so you’ve no excuse in 2015. Accept patches like Wikipedia accepts edits. Merge first, fix later, and discuss out of band. Do all work on master. Don’t make people wait. You’ll get consensus, after the fact.
尋求事前的共識(shí)就像是在等待理想的人生伴侶宏怔,這簡直就是瘋狂奏路。借助fork/pull-request這種模式畴椰,Github已經(jīng)干掉了事前共識(shí),所以在2015年的今天你沒有任何借口堅(jiān)持事前共識(shí)鸽粉。你應(yīng)當(dāng)像維基百科那樣接受修改斜脂。先合并,再修復(fù)潜叛,同時(shí)單獨(dú)討論秽褒。所有工作應(yīng)當(dāng)在master分支上進(jìn)行,不應(yīng)當(dāng)讓大家等待威兜。有了既成事實(shí)销斟,共識(shí)會(huì)隨之而來。

4椒舵、Problem, then Solution
4蚂踊、首先是問題,然后才是解決方案

Educate yourself and others to focus on problems not features. Every patch must be a minimal solution to a solid problem. Embrace experiments and wild ideas. Help people to not blow up the lab. Collect good solutions and throw away the bad ones. Embrace failure, at all levels. It is a necessary part of the learning process.
教育自己和其他人笔宿,聚焦于問題而非功能特性犁钟。每一個(gè)補(bǔ)丁都必須是解決某個(gè)實(shí)際問題的最小化的解決方案。勇于嘗試泼橘,勇于接受瘋狂的想法涝动。你還需要幫助他人,確保他們干的事情不會(huì)導(dǎo)致實(shí)驗(yàn)室的爆炸炬灭。收集好的解決方案醋粟,拋棄那些糟糕的方案。在各個(gè)層面上都應(yīng)當(dāng)寬容失敗重归。這是學(xué)習(xí)過程中不可缺少的一部分米愿。

5、Contracts Before Internals
5鼻吮、首先約定育苟,然后再完成內(nèi)部實(shí)現(xiàn)

Be aggressive about documenting contracts (APIs and protocols) and testing them. Use CI testing on all public contracts. Code coverage is irrelevant. Code documentation is irrelevant. All that matters is what contracts the code implements, and how well it does that.
要積極地記錄約定(API與協(xié)議)并加以測試。要使用持續(xù)集成工具測試所有的公開約定椎木。代碼覆蓋率是無關(guān)緊要的违柏,代碼文檔也是無關(guān)緊要的。真正重要的是代碼實(shí)現(xiàn)了哪些約定香椎,以及它們是如何實(shí)現(xiàn)的漱竖。

6、Promote From Within
6士鸥、從內(nèi)部提拔

Promote contributors to maintainers, and maintainers to owners. Do this smoothly, easily, and without fear. Keep final authority to ban bad actors. Encourage people to start their own projects, especially to build on, or compete, with existing projects. Remove power from people who are not earning it on a daily basis.
將貢獻(xiàn)者提拔為維護(hù)者,將維護(hù)者提拔為負(fù)責(zé)人谆级。以流暢烤礁、輕松且無畏地方式來做讼积。保留干掉‘害群之馬’的最終權(quán)力。鼓勵(lì)大家開始自己的項(xiàng)目脚仔,尤其是基于已有項(xiàng)目勤众,或者與已有項(xiàng)目競爭的項(xiàng)目。每天持之以恒地檢視并剝奪那些不再貢獻(xiàn)者的權(quán)力鲤脏。

7们颜、Write Down the Rules
7、將規(guī)則寫下來

As you develop your rules, write them down so people can learn them. Actually, don’t even bother. Just use the C4.1 rules we already designed for ZeroMQ, and simplify them if you want to.
當(dāng)你制定規(guī)則時(shí)猎醇,請將他們寫下來窥突,以便人們可以了解他們。事實(shí)上硫嘶,你甚至都不需要親自動(dòng)手——如果你愿意阻问,可以直接套用我們?yōu)閆eroMQ制定的規(guī)則C4.1,再按需簡化沦疾。

8称近、Enforce the Rules Fairly
8、公平地執(zhí)行規(guī)則

Use your power to enforce rules, not bully others into your “vision” of the project’s direction. Above all, obey the rules yourself. Nothing is worse than a clique of maintainers who act special while blocking patches because “they don’t like them.” OK, that’s exaggeration. Many things are much worse. Still, the clique thing will harm a project.
用你的權(quán)力去執(zhí)行規(guī)則哮塞,但不要強(qiáng)迫別人認(rèn)同你對(duì)于項(xiàng)目發(fā)展方向的“愿景”刨秆。最要緊的是,你自己必須遵守規(guī)則忆畅。最糟糕的事情莫過于維護(hù)者自己形成了小圈子衡未,僅僅因?yàn)椤安幌矚g”就拒絕其他人的補(bǔ)丁。好吧邻眷,這樣說有點(diǎn)夸張了眠屎。不過,很多情況其實(shí)更加糟糕肆饶。還是那句話改衩,小圈子對(duì)項(xiàng)目是有害的。

9驯镊、Aim For the Cloud
9葫督、以“云”為目標(biāo)

Aim for a cloud of small, independent, self-organizing, competing projects. Be intolerant of large projects. By “l(fā)arge” I mean a project that has more than 2-3 core minds working on it. Don’t use fancy dependencies like submodules. Let people pick and choose the projects they want to put together. It’s economics 101.
以小型的、獨(dú)立的板惑、自組織的橄镜、競爭性的(一群可以自由協(xié)作的)項(xiàng)目為目標(biāo),(市場)不能容忍大項(xiàng)目冯乘。所謂“大”洽胶,我的意思是一個(gè)項(xiàng)目包含了2~3個(gè)核心想法。要拒絕子模組那樣花哨的依賴關(guān)系裆馒。讓大家去挑選姊氓,并將他們選擇的項(xiàng)目放到一起(工作)丐怯。這是經(jīng)濟(jì)學(xué)的常識(shí)。

10翔横、Be Happy and Pleasant
10读跷、開心愉快最重要

Maybe you noticed that “be innovative” isn’t anywhere on my list. It’s probably point 11 or 12. Anyhow, cultivate a positive and pleasant mood in your community. There are no stupid questions. There are no stupid people. There are a few bad actors, who mostly stay away when the rules are clear. And everyone else is valuable and welcome like a guest who has traveled far to see us.
也許你注意到了,“創(chuàng)新”并不在我的建議列表中禾唁。它很可能排在第11或12點(diǎn)效览。總之荡短,你需要在你的社區(qū)里培養(yǎng)一種積極的丐枉、愉快的氛圍。愚蠢的問題肢预,愚蠢的人都應(yīng)當(dāng)被踢出去矛洞。就算有“老鼠屎”,也會(huì)在清楚的規(guī)范下自動(dòng)消失烫映。剩下的人是則有價(jià)值的沼本,我們歡迎有朋自遠(yuǎn)方來。

ps. 在諸多朋友的幫助下锭沟,再修訂了一遍抽兆,有了不少自己的思考,僅僅是反映在了譯文之中族淮,沒有一一說明辫红,見諒。詳細(xì)的修訂比對(duì)記錄祝辣,在我的博客里贴妻,因?yàn)閷?shí)在瑣碎,就不再這里羅列了蝙斜。

http://www.zhuangbiaowei.com/blog/?p=2035

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末名惩,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子孕荠,更是在濱河造成了極大的恐慌娩鹉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稚伍,死亡現(xiàn)場離奇詭異弯予,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)个曙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門锈嫩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事呼寸∧遣郏” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵等舔,是天一觀的道長。 經(jīng)常有香客問我糟趾,道長慌植,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任义郑,我火速辦了婚禮蝶柿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘非驮。我一直安慰自己交汤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布劫笙。 她就那樣靜靜地躺著芙扎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪填大。 梳的紋絲不亂的頭發(fā)上戒洼,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音允华,去河邊找鬼圈浇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛靴寂,可吹牛的內(nèi)容都是我干的磷蜀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼百炬,長吁一口氣:“原來是場噩夢啊……” “哼褐隆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起收壕,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤妓灌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蜜宪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虫埂,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年圃验,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掉伏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖斧散,靈堂內(nèi)的尸體忽然破棺而出供常,到底是詐尸還是另有隱情,我是刑警寧澤鸡捐,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布栈暇,位于F島的核電站,受9級(jí)特大地震影響箍镜,放射性物質(zhì)發(fā)生泄漏源祈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一色迂、第九天 我趴在偏房一處隱蔽的房頂上張望香缺。 院中可真熱鬧,春花似錦歇僧、人聲如沸图张。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽祸轮。三九已至,卻和暖如春侥钳,著一層夾襖步出監(jiān)牢的瞬間倔撞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來泰國打工慕趴, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痪蝇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓冕房,卻偏偏與公主長得像躏啰,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子耙册,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容