自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

從開源軟件開發(fā)中體會(huì)到的心得

開源
Mitchell Hashimoto 是一名開源軟件工程師。由他托管到 GitHub 上的開源項(xiàng)目 Vagrant,是一個(gè)用于創(chuàng)建和部署虛擬化開發(fā)環(huán)境的工具。近日,Mitchell撰文講述了在開發(fā) Vagrant 的過(guò)程中學(xué)到的有關(guān)開源軟件開發(fā)的一些心得。

Mitchell Hashimoto 是一名開源軟件工程師。由他托管到 GitHub 上的開源項(xiàng)目 Vagrant,是一個(gè)用于創(chuàng)建和部署虛擬化開發(fā)環(huán)境的工具。近日,Mitchell撰文講述了在開發(fā) Vagrant 的過(guò)程中學(xué)到的有關(guān)開源軟件開發(fā)的一些心得。

 

[[68368]]

以下為原文文章:

把 Vagrant 做成一個(gè)相當(dāng)成功的開源項(xiàng)目,這花費(fèi)了我不少時(shí)間。但我從中也學(xué)到很多。此前,我并沒(méi)有看過(guò)很多關(guān)于開源項(xiàng)目學(xué)習(xí)的文章,但由于這些知識(shí)很重要,因此我想和大家分享一下我的一些關(guān)于開源軟件的心得。這些心得不僅和軟件開發(fā)有關(guān),還包含了作為一個(gè)開源項(xiàng)目的維護(hù)者,如何做好市場(chǎng)推廣等方面的內(nèi)容。

一、和軟件開發(fā)相關(guān)的心得

下面這些是關(guān)于軟件開發(fā)方面的心得:

1、態(tài)度友好

這一點(diǎn)是最重要的。有時(shí),你可能會(huì)聽(tīng)到一個(gè)糟糕的創(chuàng)意,收到的pull requests里面盡是劣質(zhì)的代碼,甚至還要忍受用戶的抱怨,盡管他們沒(méi)有花一分錢。當(dāng)你遇到這些情況,請(qǐng)記?。杭词褂脩舨灰欢ㄗ鹬啬?,你也要尊重用戶。我曾經(jīng)只因?yàn)橐患虑槎髣?dòng)肝火,但是現(xiàn)在,我可以很自豪的說(shuō):無(wú)論遇到以上哪種情況,我的態(tài)度都會(huì)很友好。對(duì)用戶有一個(gè)友好的態(tài)度是非常重要的。因?yàn)槿绻愕膽B(tài)度很友好,你會(huì)給別人留下平易近人的印象。而用戶也會(huì)因此向你尋求幫助或參與到你的項(xiàng)目中來(lái),做出貢獻(xiàn)。這也正是開源運(yùn)動(dòng)的精髓所在。

2、不要為項(xiàng)目設(shè)置太過(guò)復(fù)雜的規(guī)則

除非你的項(xiàng)目很龐大,否則你不用太擔(dān)心貢獻(xiàn)者的編碼風(fēng)格。為你的項(xiàng)目設(shè)置過(guò)于復(fù)雜的規(guī)則將阻礙開發(fā)者參與到項(xiàng)目中來(lái)。空格、縮進(jìn)等等這些編碼風(fēng)格所造成的問(wèn)題都可以很容易的通過(guò)人工來(lái)修改。因此你無(wú)需為貢獻(xiàn)者的編碼風(fēng)格不同而煩惱。相反,你應(yīng)該感到高興并接受這些真正優(yōu)秀的貢獻(xiàn)。好了,現(xiàn)在你該知道如何改進(jìn)你的開源項(xiàng)目了吧?這很簡(jiǎn)單,接受這些優(yōu)秀的貢獻(xiàn),做出改變,然后pull request。我一點(diǎn)都不擔(dān)心編碼風(fēng)格、測(cè)試會(huì)帶來(lái)問(wèn)題。我很樂(lè)意看到這些貢獻(xiàn)。

3、開發(fā)文檔的編寫是關(guān)鍵

雖然我沒(méi)有證據(jù)證明這一點(diǎn),但我可以毫不夸張的說(shuō):所有***使用 Vagrant 的用戶表示他們之所以選擇Vagrant,是因?yàn)樗奈臋n很優(yōu)秀。雖然世界上最煩人的事可能就是編寫開發(fā)文檔,但如果你不能及時(shí)的編寫文檔,那么項(xiàng)目就會(huì)存在失敗的風(fēng)險(xiǎn)。此外,別忘了開放文檔的權(quán)限,以便于開發(fā)者能方便參與。

4、有明確的溝通方式

IRC(互聯(lián)網(wǎng)中繼聊天)、郵件、論壇……交流方式不限,但你需要為用戶提供一個(gè)明確的、能得到及時(shí)回復(fù)(通常在48小時(shí)以內(nèi)效果較好)的溝通方式用以表達(dá)他們的觀點(diǎn)。對(duì)于Vagrant,我總是通過(guò)一個(gè)IRC頻道和郵箱來(lái)和用戶保持聯(lián)系,并且效果很好。同時(shí),如果用戶和你溝通的方式越多,他們就會(huì)越信任你的項(xiàng)目。

5、你并不是什么都懂

有時(shí)候,你不可避免的會(huì)收到一些功能改進(jìn)的請(qǐng)求,即便這些功能沒(méi)有用。對(duì)于項(xiàng)目管理者來(lái)說(shuō),重要的工作是為這個(gè)項(xiàng)目指明發(fā)展方向,而不是專注于某些微觀的具體的功能。這項(xiàng)功能是否于項(xiàng)目的發(fā)展相適應(yīng)?它對(duì)用戶有用嗎?甚至是它對(duì)你有用嗎?你需要思考這些問(wèn)題來(lái)指導(dǎo)項(xiàng)目的發(fā)展。因此,你需要打開思路。因?yàn)槟愕挠脩舯饶闱宄麄冋嬲胍墓δ苁鞘裁?。但是,別忘了,你比其他人更清楚項(xiàng)目的發(fā)展方向。

二、和市場(chǎng)推廣相關(guān)的心得

現(xiàn)在,你完成了一個(gè)軟件項(xiàng)目的開發(fā)。但是如何讓用戶了解你的項(xiàng)目呢?下面是我關(guān)于市場(chǎng)推廣方面的一些心得:

1、Hacker News

Hacker news 社區(qū)喜歡嘗試新鮮事物,而且那里有很多的開發(fā)者。因此,你可以把項(xiàng)目提交到那里,同時(shí)標(biāo)明你已經(jīng)準(zhǔn)備好回答任何問(wèn)題。態(tài)度友好一些,因?yàn)槟憧赡軙?huì)被用戶詰難。

2、和優(yōu)秀的博客站點(diǎn)接觸

幾乎在每一個(gè)社區(qū),特別是Ruby社區(qū)里有很多優(yōu)秀的博客。它們樂(lè)于分享用某項(xiàng)特殊的語(yǔ)言或方法開發(fā)的很酷的項(xiàng)目。找到這些博客,并和博主聯(lián)系,邀請(qǐng)他們參與到你的項(xiàng)目中來(lái)。這樣做會(huì)有2個(gè)益處:如果他們?cè)敢鈪⑴c,那么你的項(xiàng)目不僅能得到更多的關(guān)注,而且你的想法也能得到更好地檢驗(yàn)。

3、在聚會(huì)上做演講(參加正式會(huì)議之前)

參加一些當(dāng)?shù)貙?duì)你的項(xiàng)目感興趣的聚會(huì),并發(fā)表演講。如果你是***次參加,可以提前為演講做好準(zhǔn)備。不要通過(guò)在項(xiàng)目里添加手冊(cè)的方法來(lái)宣講你的項(xiàng)目,你應(yīng)該把這個(gè)項(xiàng)目的發(fā)展方向當(dāng)面展現(xiàn)給公眾。如果你是***次做演講,就不要立即參加某些正式的會(huì)議,因?yàn)楣姇?huì)記住你出丑的樣子,下一次想要再做演講就會(huì)變得困難。選擇在聚會(huì)上做演講則是一個(gè)比較好的方式。而且,在聚會(huì)上,你可以從真正關(guān)心項(xiàng)目的開發(fā)者那里得到一些重要的反饋。

4、在正式會(huì)議上做演講

參加過(guò)一些聚會(huì)之后,就可以在區(qū)域會(huì)議上發(fā)言了。這些會(huì)議通常規(guī)模較小,但是主題很好,而且與會(huì)人員不會(huì)因?yàn)槟阍愀獾恼勍露p視你。同時(shí),大型會(huì)議也不可能允許你就一個(gè)新的項(xiàng)目發(fā)表演講。好了,現(xiàn)在你有機(jī)會(huì)站在眾人面前發(fā)表一場(chǎng)40分鐘的演講。在演講之前,要確保你做好了準(zhǔn)備。演講時(shí)注意微笑,向公眾展示你的理想并記下你收到的建議。

5、在大型會(huì)議上做演講

現(xiàn)在,我要討論的是像VelocityConf 或 QCon這種類型的大型會(huì)議。主辦方將會(huì)讓你在更多的人群前發(fā)表演講(通常在500人以上),而且聽(tīng)眾都是極其優(yōu)秀的業(yè)內(nèi)人士。如果你的項(xiàng)目對(duì)于聽(tīng)眾來(lái)說(shuō)較為陌生的話,你***準(zhǔn)備一個(gè)成功的案例來(lái)說(shuō)明。而且這個(gè)案例***來(lái)自于用戶,這樣才能證明項(xiàng)目的優(yōu)秀性能。這些大型會(huì)議通常都會(huì)吸引一些重量級(jí)人士的參與(CIO、技術(shù)副總裁等等)。

三、有關(guān)軟件工程方面的知識(shí)

在軟件發(fā)布之前,有很多工作要做,一下是我關(guān)于軟件工程方面的心得:

1、測(cè)試

我不認(rèn)為這個(gè)有必要詳說(shuō),但因?yàn)樗侨绱说闹匾?,所以我還是要再發(fā)表一下看法。測(cè)試不是可有可無(wú)的工作。你必須及早的進(jìn)行,并經(jīng)常測(cè)試。此外,不要忘了集成測(cè)試。我曾做過(guò)很多的集成測(cè)試,而它們?cè)?Vagrant 發(fā)布之前都是最有價(jià)值的測(cè)試。雖然單元測(cè)試能很快的捕獲基本的錯(cuò)誤,但是集成測(cè)試卻能在版本發(fā)布之前找到最重要的錯(cuò)誤。

2、支持Windows ASAP

Vagrant對(duì) Windows系統(tǒng)的支持非常棒。雖然 Vagrant 現(xiàn)在功能很強(qiáng)大,但之前它卻是一個(gè)噩夢(mèng)。因?yàn)樽畛跤泻芏嚅_發(fā)者都不在 Windows 平臺(tái)上工作,代碼中多處函數(shù)都無(wú)法在 Windows 上運(yùn)行。當(dāng)時(shí)我簡(jiǎn)直不敢想象為了支持 Windows 我們要做多少工作,因?yàn)槟阋诨A(chǔ)代碼中做出大量的修改。此外,還有很多 Windows 的開發(fā)者想要使用 Linux 風(fēng)格的工具。

3、避免使用外部函數(shù)調(diào)用接口(FFI)

這更多是Ruby方面的事。Ruby的FFI庫(kù)沒(méi)有C標(biāo)準(zhǔn)庫(kù)那么簡(jiǎn)單。我曾經(jīng)在FFI上花了18個(gè)月的時(shí)間。或許我是最頻繁使用FFI的一員?讓我頭疼的是FFI庫(kù)定期升級(jí)更新,甚至更行到發(fā)布的補(bǔ)丁版本。有時(shí)候我清醒的發(fā)現(xiàn)僅僅是由于FFI的編譯問(wèn)題,Vagrant就不能在 Windows 上正常運(yùn)行了。此外,我還發(fā)現(xiàn)在使用FFI的時(shí)候,callback函數(shù)的運(yùn)行和內(nèi)存管理變得很困難。在Vagrant 0.9版本以前,都存在嚴(yán)重的內(nèi)存泄露問(wèn)題。***,我放棄了FFI,改用其它更好的庫(kù),現(xiàn)在,Vagrant又可以調(diào)用C標(biāo)準(zhǔn)庫(kù)了。

4、和參與維護(hù)的開發(fā)者交朋友

每一個(gè)對(duì)某個(gè)函數(shù)庫(kù)了解甚深的開發(fā)者都會(huì)在那個(gè)函數(shù)庫(kù)里找到Bug??v觀整個(gè)Vagrant的開發(fā)歷程,我曾在每個(gè)使用過(guò)的dependency里發(fā)現(xiàn)過(guò)Bug。我和所有的參與維護(hù)的開發(fā)者都有良好的朋友關(guān)系,因此,當(dāng)出現(xiàn)問(wèn)題時(shí),我能很快的問(wèn):“這是你的Bug嗎?要多長(zhǎng)時(shí)間才能修復(fù)它?”。最壞的結(jié)果可能是在一個(gè)dependency里有一個(gè)Bug,但維護(hù)者既不修復(fù)它也不發(fā)布更新后的版本。

雖然我依然有很多知識(shí)要學(xué)習(xí),但希望這些點(diǎn)滴經(jīng)驗(yàn)?zāi)軒偷侥切┱谧鲩_源工作的開發(fā)者。

英文原文:Lessons Learned Building Open Source Software

責(zé)任編輯:張浩 來(lái)源: iteye
相關(guān)推薦

2012-08-22 10:44:08

軟件開發(fā)

2019-02-27 08:18:16

5G1GWiFi

2019-02-27 14:46:11

5GWiFi網(wǎng)速

2010-05-11 14:30:01

2017-05-17 17:22:28

開源軟件開發(fā)代碼

2014-04-28 09:35:19

紅帽開源軟件

2011-03-10 11:01:31

VMwareWaveMaker

2009-04-20 20:01:40

Linux開源開發(fā)成本

2015-11-25 10:43:19

CA Technolo

2009-02-10 17:11:53

SaaSSaaS開發(fā)PaaS

2015-03-02 09:35:07

軟件開發(fā)

2010-02-25 16:42:22

Linux軟件開發(fā)

2015-10-23 14:36:38

程序員起跑線

2022-09-06 09:47:13

CodeRAT惡意軟件網(wǎng)絡(luò)犯罪

2023-02-19 09:02:22

2010-04-07 11:36:56

JNCIP

2009-07-03 18:49:07

綜合布線工程實(shí)施

2017-03-17 08:15:17

敏捷軟件開發(fā)軟件開發(fā)

2012-06-18 09:34:14

2020-06-24 11:21:47

軟件開發(fā)面試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)