1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        參與開源項(xiàng)目很難嗎?

        共 3298字,需瀏覽 7分鐘

         ·

        2022-04-01 20:48

        hello大家好,我是小樓。

        流量真是個(gè)讓人捉摸不透的東西,有時(shí)候?qū)懥艘黄约焊杏X牛的不行的文章,結(jié)果閱讀數(shù)據(jù)慘淡,有時(shí)候覺數(shù)據(jù)可能沒那么好的文章,實(shí)際數(shù)據(jù)卻出乎意料。

        5cefe04b4c0e9a3e1ef2ab985ccfa056.webp

        之前的文章《慘,給Go提的代碼被批麻了》就是這樣,我以為就一般吧吧,沒想到卻“火了”。

        這篇文章截止目前,發(fā)表的20天時(shí)間里,在掘金閱讀量突破1w,知乎閱讀量突破1.8w,頭條閱讀量破1.7w,微信公眾號的閱讀加上被轉(zhuǎn)載的閱讀也有1w,就連公司內(nèi)網(wǎng)的閱讀都有3k。

        可以說這個(gè)數(shù)據(jù)是我從寫公眾號以來最好的了,但我并不覺得它是我寫得最好的文章,所以就很迷。

        好了,以上只是寫技術(shù)文過程中的一點(diǎn)點(diǎn)驚喜,這樣的驚喜是我繼續(xù)寫好文章的最大動力,所以動動你們的小手,點(diǎn)贊+在看+轉(zhuǎn)發(fā)安排起來。

        今天我就順著這篇文章來聊聊大家可能都比較感興趣的話題,開源。本文會結(jié)合自己的一些看法,從參與開源項(xiàng)目的收益和如何參與開源項(xiàng)目兩個(gè)方面展開。

        參與開源項(xiàng)目的好處

        首先要明確,為什么要參與開源項(xiàng)目?總得對我有點(diǎn)好處吧。每個(gè)人可能追求不一樣,所以我這里就列舉一下我知道的好處,看看有沒有戳中你的點(diǎn)。

        • 小禮品

        這點(diǎn)可能是被很多人忽略的點(diǎn),因?yàn)樘×?,但確實(shí)也算得上一個(gè)好處。如果你掌握了一些技巧,每年從開源社區(qū)拿點(diǎn)?。ㄞ叮┒Y(羊)物(毛)是很easy的。尤其是國內(nèi)的社區(qū),T恤、杯子、背包等等是很容易拿到的。

        比如這兩年Nacos、Dubbo社區(qū)送我的一些杯具:

        d9947333594890fe225ed9a93d603f45.webpa0383179a3f496c8d52505e65976963b.webp

        據(jù)我觀察,阿里的開源項(xiàng)目只要每年都去提一個(gè)PR,很大概率會送你禮物,不管這個(gè)PR是大是小,可以大到貢獻(xiàn)一點(diǎn)源碼,也可以小到format一下代碼、修改文檔中的一些錯(cuò)誤、增加一個(gè)單元測試等等,所以是不是學(xué)到了薅羊毛的技巧?

        • 朋友圈素材

        這點(diǎn)只是滿足一下虛榮心,其實(shí)并沒有什么卵用,但還是提一嘴,比如下面這些素材,是發(fā)朋友圈裝x的利器:

        e44e7f96a1ad1459d3bf1b17e420a4fe.webpca82f7db08aac115a7596d0768ad3748.webp
        • 裝飾簡歷

        如果你有參與開源項(xiàng)目的經(jīng)歷,寫到簡歷上一般是個(gè)加分項(xiàng),說一般情況是因?yàn)槲以诿嬖嚨臅r(shí)候遇到過候選人在簡歷上這樣寫:

        參與貢獻(xiàn)過上萬star的項(xiàng)目。(后面還貼上了項(xiàng)目地址)

        一看這句描述就有貓膩,為啥強(qiáng)調(diào)上萬star卻不說出項(xiàng)目名稱?于是我打開后面的github地址發(fā)現(xiàn),原來這個(gè)上萬star的項(xiàng)目是個(gè)聚合在線學(xué)習(xí)資料的項(xiàng)目。

        不能說參與這樣的項(xiàng)目不好,只是簡歷上這句話讓我感覺在打擦邊球,所以不但沒有加分,反而減分了。

        一般來說對項(xiàng)目有過貢獻(xiàn),無論大小,都可以稱之為Contributor,貢獻(xiàn)達(dá)到一定程度則稱為Committer,達(dá)到多少貢獻(xiàn)才能稱為Committer一般每個(gè)社區(qū)都有自己的衡量標(biāo)準(zhǔn),比如Nacos社區(qū)有明確的規(guī)定:

        72c5fcae6fbb4812f49bb24fd68c8a29.webp

        翻譯下就是:至少有8個(gè)PR,團(tuán)隊(duì)協(xié)作能力,理解項(xiàng)目的代碼風(fēng)格,能寫出優(yōu)秀的代碼。當(dāng)然也有很多社區(qū)沒有明文規(guī)定,總之就是貢獻(xiàn)越多越有可能成為Committer。

        所以在簡歷中如果你是某個(gè)項(xiàng)目的Committer就很厲害了,一詞勝千言。退一步就算不是Committer,如果你有一些比較重要或者核心的代碼提交,也可以寫上,附上具體的issue。如果只是代碼的format、增加一些單元測試,我建議簡歷上就不要提了。

        • 能力提升

        通常開源項(xiàng)目的代碼、設(shè)計(jì)、規(guī)范都是比較優(yōu)秀的,和優(yōu)秀的人一起共事能成長更快。

        一般我們在參與開源項(xiàng)目時(shí),都是使用英文來交流,所以對你的英文書寫能力是個(gè)提升。

        其次代碼規(guī)范、測試能力、考慮事情的全面性都將得到鍛煉。

        以我個(gè)人的感受來說,雖然嘴上說寫代碼要規(guī)范,但在公司寫代碼的時(shí)候,有時(shí)候就不太注意,都是以快速完成任務(wù)為目標(biāo),但開源項(xiàng)目不一樣,你寫的每一行代碼都要被眾多的大佬一行一行地review,只要有一點(diǎn)點(diǎn)不滿意都會要求你修改。

        測試也是如此,你寫的每一行代碼都將被代碼測試,單元測試、集成測試。開源項(xiàng)目更相信用代碼測試,所以這也鍛煉了你寫測試和寫代碼的能力,寫出代碼不難,寫出容易測試的代碼還是比較困難的。

        • 提升影響力

        這是更高層級的追求,當(dāng)你想在技術(shù)上走的遠(yuǎn)的時(shí)候,需要一些業(yè)界影響力,這時(shí),參與開源是個(gè)不錯(cuò)的選擇,能結(jié)識更多的圈內(nèi)牛人,也讓大家能認(rèn)識你,你的圈子、人脈就會擴(kuò)張。

        提升影響力有什么作用呢?最直接的是,讓別人知道你的存在,下一次機(jī)會來臨時(shí),說不定你會被看中或者推薦。

        當(dāng)然我離這個(gè)層次還很遠(yuǎn),只是說一點(diǎn)自己的理解。

        如何參與開源項(xiàng)目

        • 參與開源的方式

        上文其實(shí)也提到了,參與開源項(xiàng)目不一定是直接的貢獻(xiàn)源碼,也可以是對文檔的編寫或修正、寫一些單元測試或者測試用例、也可以寫一些開源項(xiàng)目相關(guān)的文章。

        比如我在去年寫《Dubbo為什么要用Go重寫?》這篇文章時(shí),就順手把Dubbo-go項(xiàng)目的README改了

        ecff2107ac3e2c6249e6d4a8b1e73965.webp

        還有比如在寫《使用dubbo-go搭建dubbo接口測試平臺》這篇文章時(shí),把這篇文章投稿給了Dubbo-go官方網(wǎng)站,也被收錄進(jìn)去

        93216e88a7c02ed4dcafcfaa79043c12.webp

        這些都算是對開源的一種貢獻(xiàn)。當(dāng)然如果你有代碼的直接貢獻(xiàn)是最好的,這也是獲得技術(shù)成長最快的方式。

        • 從哪里開始

        如果我們平時(shí)工作中用到什么開源項(xiàng)目,沒事的時(shí)候可以把源碼下載下來翻一番,可以按照文檔跑起來,打上斷點(diǎn)看看是否跟自己想的一樣,這時(shí)我們便有了一些基礎(chǔ),可以去github上的issue找找,一般的項(xiàng)目會把issue分類,可以從標(biāo)了good first issue或者bug標(biāo)簽的issue看起,看看有沒有自己能解決的,再結(jié)合代碼,一步一步調(diào)試。

        這種方式目的性比較強(qiáng),我就是沖著提交代碼去的,而且比較有時(shí)間去研究,目前我還沒用過這種方式,我更多的是下面提到的這種方式。

        另外一種是如果我在使用開源項(xiàng)目的過程中發(fā)現(xiàn)了一個(gè)bug,或者一個(gè)可以優(yōu)化的點(diǎn),可以去github上提個(gè)issue先討論討論,如果社區(qū)的人也認(rèn)可你的觀點(diǎn),可以把你的修復(fù)或者修復(fù)作為一個(gè)PR提交上去。

        這個(gè)方式我在Dubbo/Sentinel/Nacos/Skywalking/Go中都是這么干的,都是平時(shí)遇到的一些問題,反哺到社區(qū)。

        發(fā)現(xiàn)問題往往比解決問題更困難,開源項(xiàng)目也是如此。

        等等,在你想提交代碼前,我建議你好好看看開源項(xiàng)目的規(guī)范,一般位于項(xiàng)目的README或者官網(wǎng)中,他對issue有什么要求,對代碼有什么要求,對commit message等等都有什么樣的要求,如果不按照這些規(guī)范來提交,可能你的下場會和我一樣,一個(gè)字「慘」。

        • 提交代碼流程

        這一步網(wǎng)上資料比較多,我這里只說個(gè)大概的流程,具體到每一步我相信你能在網(wǎng)上找到更詳細(xì)的教程:

        1. 提issue討論(不是必須,有些項(xiàng)目可以直接提代碼)
        2. fork代碼倉庫
        3. 在fork的代碼倉庫拉一個(gè)分支,并把代碼提交到這個(gè)分支上
        4. 簽署Contributor License Agreement(簡稱CLA)
        5. 在這個(gè)倉庫上向原倉庫發(fā)起一個(gè)PR
        6. 等待代碼Review反饋,并按照反饋修改
        7. Merge進(jìn)代碼倉庫,貢獻(xiàn)完成

        最后說一句

        萬事開頭難,往往第一個(gè)PR是最難提交的,如果嘗試著提交了,我相信你會打開新世界的大門。

        對了,雖然我參與到開源項(xiàng)目的經(jīng)驗(yàn)不夠多,但可以給你一點(diǎn)參考,有正例也有反例

        • https://github.com/golang/go/pull/50023
        • https://github.com/dubbogo/dubbogo.github.io/pull/7
        • https://github.com/apache/dubbo/pull/8066
        • https://github.com/apache/dubbo/pull/7929
        • https://github.com/alibaba/nacos/pull/2403
        • https://github.com/alibaba/Sentinel/pull/1045
        • https://github.com/alibaba/Sentinel/pull/104
        • https://github.com/apache/skywalking/pull/2930
        • https://github.com/apache/skywalking/pull/2874

        好了,今天的分享到此為止,如果文章中寫的有不清楚的地方,也歡迎加我微信MrRoshi私聊,我們下期再見!

        - END -
        瀏覽 42
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            四虎在线网站 | 五月婷婷激情 | 一本色道久久综合无码人妻88 | 久久AV资源站 | 中文无码AV | 枫ふうあ女教师av播放 | 久久久久99精品成人 | 一二三四区在线播放 | 久久久噜噜噜久久人人看 | 99re6国产亚洲这里只有精品 |