2020年期間我有幸參加了啟智開源項目,在這個活動中,我主要參加了啟智磐石的開發(fā),最終項目順利上線并開始提供服務(wù),這次我想分享一下我參與這個活動以及開源社區(qū)的感受與收獲。
毫無疑問,參加一個開源項目是非常令人激動的,看著開源項目一步一步完善直到上線,這花費了我不少時間。但我從中也學到很多。由于以前并沒有參加開源項目的經(jīng)驗,因此總結(jié)了一些心得,作為一個開源開發(fā)和之前工作中的不同之處。
1、在編碼風格方面不需要太嚴格
編碼風格的問題,當項目中設(shè)計了過于復(fù)雜的規(guī)則將增加開發(fā)的成本,人們會實時關(guān)注空格縮進帶來的困擾,最好的方式是能用腳本自動化處理開發(fā)中的編碼風格問題,比如將常用的eslint,go fmt工具封裝為全局腳本。這樣項目合作中可以很方便的進行溝通,而不需要經(jīng)常通過人工來修改。最終,代碼的提交以pull request的方式進行合并,最終我一點都不擔心編碼風格、測試會帶來問題。
2、代碼即文檔
在開發(fā)的過程中我經(jīng)常感受到,相比于不知道何時更新的文檔,編寫有清晰結(jié)構(gòu)的代碼和測試比文檔更有用處。我可以毫不夸張的說:好的代碼就是好的文檔。當需要給系統(tǒng)增加功能時,最好的熟悉現(xiàn)有功能的方式不是找開發(fā)文檔和尋找當時開發(fā)文檔的開發(fā)人員進行詢問,當項目足夠健康時候,最好的方式就是閱讀結(jié)構(gòu)代碼和測試。此外,別忘了swagger,當我們采用swagger時能夠快速生成api的文檔,這都能很好的提升開發(fā)速度。最后也有例外,比如當需要和第三方系統(tǒng)對接時文檔的重要性就不言而喻。
3、有高效的溝通方式
在項目開發(fā)過程中,項目進度的控制時至關(guān)重要,我們在項目開發(fā)中溝通采用類似github的模式,由開發(fā)或測試人員在項目管理中添加任務(wù),管理人員指派成員,盡量避免無意義的會議,如果溝通的越順暢,我們自己就會越信任自己的項目。
4、多接觸其他的開源項目
經(jīng)常關(guān)注開源社區(qū)的項目以及他們的issuse和pr,特別是目前Golang社區(qū)里有很多優(yōu)秀的項目。在他們的issue中和pr中很多人對項目的理解都很高,他們樂于分享在項目中遇到問題,經(jīng)常閱讀別人已經(jīng)合并的pr已經(jīng)代碼能夠拓寬視野,在遇到問題的時候能從多個角度思考問題。
5.收獲
參加這次的開源項目帶給我了很多收獲:
第一是讓我完全參與到開源之中,之前只在有些項目中提過一些pr去解決小問題,這次明確了開發(fā)目的切身體會了一次開源的感受。
第二在工作中也獲得了很多啟發(fā),包括處理分布式大文件時候的一些項目經(jīng)驗,使得我可以更好地理解研究問題中的一些概念。
作者:嚴翔東