開源項(xiàng)目成功十條準(zhǔn)則

      網(wǎng)友投稿 727 2022-05-29

      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í)就像是在等待理想的人生伴侶,這簡(jiǎn)直就是瘋狂。借助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é)議)并加以測(cè)試。要使用持續(xù)集成工具測(cè)試所有的公開約定。代碼覆蓋率是無關(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)目競(jìng)爭(zhē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í),請(qǐng)將他們寫下來,以便人們可以了解他們。事實(shí)上,你甚至都不需要親自動(dòng)手——如果你愿意,可以直接套用我們?yōu)閆eroMQ制定的規(guī)則C4.1,再按需簡(jiǎn)化。

      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ú)立的、自組織的、競(jìng)爭(zhēng)性的(一群可以自由協(xié)作的)項(xiàng)目為目標(biāo),(市場(chǎng))不能容忍大項(xiàng)目。所謂“大”,我的意思是一個(gè)項(xiàng)目包含了2~3個(gè)核心想法。要拒絕子模組那樣花哨的依賴關(guān)系。讓大家去挑選,并將他們選擇的項(xiàng)目放到一起(工作)。這是經(jīng)濟(jì)學(xué)的常識(shí)。

      10、Be Happy and Pleasant

      開源項(xiàng)目成功的十條準(zhǔn)則

      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

      華為開源鏡像站 Mirrors

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:【神經(jīng)網(wǎng)絡(luò)】綜合篇——人工神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、生成對(duì)抗網(wǎng)絡(luò)一、人工神經(jīng)網(wǎng)絡(luò)
      下一篇:【分層策略】分層應(yīng)用策略和IT組織設(shè)計(jì):如何構(gòu)建成功應(yīng)用團(tuán)隊(duì)
      相關(guān)文章
      亚洲色偷偷综合亚洲AV伊人蜜桃| 亚洲成a人片77777老司机| 久久精品国产亚洲AV大全| 亚洲区小说区图片区QVOD| 自拍偷自拍亚洲精品被多人伦好爽 | 在线亚洲午夜理论AV大片| 亚洲人成无码www久久久| 国产亚洲情侣久久精品| 无码国产亚洲日韩国精品视频一区二区三区| 亚洲人成网77777亚洲色| 久久久久亚洲爆乳少妇无| 亚洲中文字幕在线乱码| 亚洲色成人中文字幕网站| 亚洲欧洲无码AV电影在线观看| 国产亚洲精品a在线观看app| 国产成A人亚洲精V品无码性色| 亚洲国产成人片在线观看无码| 日韩亚洲人成在线综合日本| 久久国产亚洲观看| 亚洲高清不卡视频| 亚洲一区免费视频| 亚洲中文字幕久久久一区| 亚洲AV日韩AV无码污污网站| www.亚洲色图.com| 亚洲AV网站在线观看| 国产a v无码专区亚洲av| 亚洲精品无码久久千人斩| 亚洲AV第一页国产精品| 1区1区3区4区产品亚洲| 91午夜精品亚洲一区二区三区| 亚洲一区二区三区高清不卡| 亚洲老熟女五十路老熟女bbw| 国产精品亚洲综合| 久久亚洲2019中文字幕| 亚洲va无码专区国产乱码| 久久精品蜜芽亚洲国产AV| 91亚洲视频在线观看| 亚洲人av高清无码| 亚洲高清免费视频| 亚洲大成色www永久网站| 亚洲美女视频网址|