讀開源項目成功之道02好的開源項目

1. 好的開源項目
1.1. 好的開源項目絕不是一個簡單的概念
1.2. Linus在Linux中采取的一些新穎的方法
-
1.2.1. 他不是從頭開始寫所有代碼
-
1.2.1.1. 他從Minix中借鑒了相當(dāng)數(shù)量的代碼(以及概念和想法)
-
1.2.2. Linux發(fā)布的第一個版本實際上是Beta質(zhì)量的代碼
-
1.2.3. 他公開鼓勵他人提供反饋并參與工作
1.3. 在自由軟件運動的早期,項目開放的特征僅僅與代碼的許可證有關(guān),即它是否在允許人們查看、修改和分發(fā)代碼的許可證之下
1.4. 并沒有一種固定的方式來運營一個開源項目,也沒有一個社群應(yīng)該采用一種固定的工作方式
1.5. 不同的文化、不同的行業(yè)領(lǐng)域、開發(fā)的速度和進度、項目的成熟度以及參與項目的人等諸多因素都會產(chǎn)生影響
2. 開源項目的核心特征
2.1. 用戶是開發(fā)過程的一部分
- 2.1.1. 開源中有句話叫“水漲船高”?,這在用戶參與開發(fā)的過程中得到了充分體現(xiàn)
2.2. 早發(fā)布,常發(fā)布
2.3. 透明和動態(tài)的決策
-
2.3.1. 相關(guān)的資金不僅來自學(xué)區(qū)資助,還來自私人資助與籌款
-
2.3.2. 開源項目蓬勃發(fā)展既依賴有意的透明度,又依賴快速動態(tài)地做出決策的能力,這通常會使開發(fā)速度變快,并讓項目保持活力
-
2.3.3. 開源項目既可以成為推動協(xié)作和創(chuàng)新的機制,也可能成為無意建立社群而僅僅推送代碼的一種方式
3. 發(fā)布開源代碼與創(chuàng)建開源項目
3.1. 有一種特別的趨勢,那就是公司將開源代碼視為一種使源代碼可用的方法,但并不一定希望圍繞它構(gòu)建一個開源項目
3.2. 智能代碼轉(zhuǎn)儲
-
3.2.1. 那些之前可能是商業(yè)產(chǎn)品或其他不開源的代碼,現(xiàn)在以開源許可證的形式被共享,但貢獻代碼的組織并沒有打算繼續(xù)維護它,更不用說構(gòu)建項目或社群了
-
3.2.2. 非常有用的轉(zhuǎn)儲原因
-
3.2.2.1. 幫助那些仍在使用較舊版本軟件的公司,使他們能夠繼續(xù)運作
-
3.2.2.2. 允許其他人使用過時的文件格式構(gòu)建轉(zhuǎn)換器或連接器
-
3.2.2.3. 通過為社群的愛好者和發(fā)燒友提供過時的軟件來表達善意
-
3.2.3. 發(fā)布開源代碼但不創(chuàng)建開源項目不僅適用于過時的軟件,也適用于所有希望獲得更大用戶群的軟件
3.3. 開放核心
-
3.3.1. 意思是公司發(fā)布一個基本的、精簡的但功能齊全的產(chǎn)品版本進行開源,然后采用專有許可證發(fā)布一個功能更全面的商業(yè)版本
-
3.3.2. “嘮叨軟件”(nagware)
-
3.3.2.1. 共享軟件
-
3.3.2.2. 它們會彈出煩人的窗口,提示用戶購買商業(yè)版本
-
3.3.3. 主要的開發(fā)工作并不是在開源社群中進行
-
3.3.4. 代碼發(fā)布只是傾倒到社群中供人們使用
-
3.3.5. 盡可能擴大用戶群體,其策略是隨著軟件在組織中使用量的增加,用戶可能會考慮購買其商業(yè)版本
-
3.3.6. 通常是在供應(yīng)商中立的基礎(chǔ)上,將下游生態(tài)系統(tǒng)建設(shè)的概念視為幫助解決變現(xiàn)問題的一種進化方式
3.4. 以開源方式發(fā)布代碼時的期望
-
3.4.1. 開源對下游用戶和開發(fā)人員負有道德責(zé)任
-
3.4.2. Linux基金會主持的項目TODO Group提供了一個合作論壇,名為開源項目辦公室(Open Source Program Office,OSPO),它提供了一個很好的資源
-
3.4.3. 盡早讓其他有興趣參與或貢獻的外部組織和人員參與進來
-
3.4.4. 建立協(xié)作基礎(chǔ)設(shè)施并將其公開
-
3.4.5. 定期舉行社群會議,并尋找自然的見面機會,例如參加活動或當(dāng)?shù)鼐蹠?/p>
-
3.4.5.1. 不僅為社群設(shè)定了預(yù)期,也為作為維護者的你設(shè)定了預(yù)期,讓你始終牢記這些重要的事情
-
3.4.6. 啟動一個開源項目意味著你需要有意識地支持其成功
-
3.4.6.1. 前期投資可能會很高,甚至比內(nèi)部非開源項目還要高,但如果做得好,這種投資會得到回報,你能夠以更低的投入獲得驚人的技術(shù)回報(其他人也可以)?
4. 成功的開源項目的模式和反模式
4.1. 適用于一個項目的方案可能不適用于下一個方案,因為每個項目的人群、文化、行業(yè)動態(tài)和速度都不同
4.2. 開放式溝通(和過度溝通)
-
4.2.1. 最大挑戰(zhàn)是溝通
-
4.2.2. 溝通的缺失會導(dǎo)致混淆和誤解,甚至有時事情本身會被誤解
-
4.2.3. 待辦事項永遠不會完結(jié),需求不斷,用戶經(jīng)常給你“踢皮球”
-
4.2.3.1. 多一點寬容會有很大幫助,更重要的是,這為你提供了吸引貢獻者和用戶的最佳方式
-
4.2.4. 過度溝通在前期需要做很多工作,但它可以節(jié)省你以后回答問題的時間,并有可能幫助你接觸到你可能從未聯(lián)系過的用戶
4.3. 仁慈獨裁與委員會領(lǐng)導(dǎo)
-
4.3.1. Linux已經(jīng)由Linus領(lǐng)導(dǎo)了30多年,他是仁慈獨裁領(lǐng)導(dǎo)風(fēng)格的典型代表
-
4.3.2. 無論是從項目管理的角度,還是從文化和道德的角度來看,仁慈獨裁者模式都給個人帶來了沉重的負擔(dān),這意味著個人必須能夠推動項目向前發(fā)展,同時吸引貢獻者和用戶,賦予他們能力和權(quán)力并推動技術(shù)的發(fā)展
-
4.3.3. 仁慈獨裁作為一種模式通常屬于“一般不起作用,但在某些情況下,有了正確的仁慈獨裁者和正確的社群,它就會起作用”的狹窄類別
-
4.3.3.1. 模式的挑戰(zhàn)在于需要正確的人來領(lǐng)導(dǎo),他們需要有遠見、有組織、有思想,能夠?qū)⑷藗兙奂谝黄鸩l(fā)揮作用
-
4.3.4. 委員會領(lǐng)導(dǎo)解決了仁慈獨裁者模式的問題,通過將決策和責(zé)任分散到多個人身上來提高項目效率,并隨著時間的推移獲得多樣化的貢獻者和貢獻
-
4.3.4.1. 迫使項目進行更好的溝通
-
4.3.4.2. 并不意味著由委員會領(lǐng)導(dǎo)是完美的
-
4.3.5. 仁慈獨裁者可以在自己的腦海中思考關(guān)鍵決策,而委員會的方法則迫使每個人都表達自己的想法以達成共識
-
4.3.6. 初創(chuàng)項目更適合采用仁慈獨裁者模式,而成熟項目更適合采用委員會領(lǐng)導(dǎo)模式
4.4. 分支
-
4.4.1. 分支是開源中每個人所擁有的基本權(quán)利之一,也是每個開源許可證的核心
-
4.4.2. 分支的缺點在于用戶必須承擔(dān)一些成本,即對分支的持續(xù)維護成本,因為它可能會長期存在(可以持續(xù)多個項目版本,甚至是永久存在)?,而且隨著時間的推移,需要將項目代碼倉庫中的更改持續(xù)引入分支的版本中
-
4.4.3. 在上游工作是一種更好的方法,這意味著當(dāng)對代碼倉庫進行更改時,你可以將它們貢獻回項目中,而不是單獨維護它們
-
4.4.4. 在開源社群中,在上游工作通常是最好的方法,它能夠使你的更改得到更廣泛的測試,節(jié)省了將它們合并到后續(xù)版本中的時間,并展示了你作為代碼倉庫管理者的能力
-
4.4.5. 社群中的沖突是健康的,因為它給人們提供了發(fā)表意見的機會,并確保社群內(nèi)部存在凝聚力和不同的觀點
4.5. 過度治理
-
4.5.1. 如果你遇到一條看起來有點瘋狂的法律或規(guī)則,那么它的背后肯定有一個更瘋狂的故事
-
4.5.2. 一個活的文檔,可以隨著時間的推移而改變以適應(yīng)項目的不同階段
-
4.5.3. 不要制定處理假設(shè)情況的規(guī)則,而是針對已知問題制定規(guī)則,并隨著時間的推移重新審視它們,并予以修改
4.6. 歡迎競爭對手
-
4.6.1. 開源的一個獨特之處在于,合作是向所有人敞開的,因此即使是競爭對手也可以參與其中
-
4.6.2. 實際上,只要制定適當(dāng)?shù)幕疽?guī)則,就可以使開源項目充滿活力并且高速發(fā)展
4.7. 把一切都寫下來
-
4.7.1. 書面文化與開放式溝通非常契合,因為實現(xiàn)開放式溝通的一個好方法是通過書面文字溝通
-
4.7.2. 使得重復(fù)流程變得更加一致,同時還能找到提高項目效率的機會和需要解決的問題
-
4.7.3. 將事情寫下來不僅有助于與外界進行溝通,還可以協(xié)調(diào)和確定活動的優(yōu)先級
-
4.7.4. 把一切都寫下來,雖然有時看起來很煩人,但有助于使項目更加高效和有條理
-
4.7.5. 這樣做還能幫助社群擴大規(guī)模,使新的成員隨時加入社群,接管這些職責(zé)并持續(xù)管理這些任務(wù)
4.8. 擁抱你的社群
- 4.8.1. 創(chuàng)建開源項目的主要驅(qū)動力是讓各種各樣的人參與進來,提供反饋、貢獻代碼并幫助維護項目
4.9. 關(guān)注你的優(yōu)勢,利用工具和其他資源來彌補你的劣勢
-
4.9.1. 作為人類,我們最難做的事情之一就是接受自己的缺點和我們不擅長的事情
-
4.9.2. 技術(shù)文檔是一個很好的例子,大多數(shù)軟件工程師覺得自己在這方面表現(xiàn)不佳,或者對技術(shù)寫作沒有太多興趣,但是有些人在這方面非常擅長,可以為項目制作出出色的文檔
-
4.9.3. 除了找對人,使用正確的工具也是一種提高工作效率,減輕工作負擔(dān)的方法
-
4.9.3.1. 像FOSSology這樣的工具可以幫你完成這項工作,并同時生成報告和軟件物料清單(Software Bill of Materials,SBOM)
浙公網(wǎng)安備 33010602011771號