<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          全職開源四年,一切并沒有那么簡單。

          共 10176字,需瀏覽 21分鐘

           ·

          2024-04-12 01:26

          前言: Antfu 是魚皮非常佩服的一位前端大牛,他不僅是開源領域的狂熱愛好者,也是很多知名開源項目的作者以及維護者,如 Slidev、Vitest 等等,同時也是 Nuxt、Vue、Vite 團隊的官方成員。

          這篇文章是他全職開源四年后的一些感悟,講述了關于全職開源后的狀態(tài)、個人心態(tài)的成長和變化、軟件開發(fā)的底層思考以及對自己內(nèi)在的探索,也許會對你有一定的啟發(fā)。

          這是我開始做開源的第四年。坦白說,我開始感覺到越來越多的事情超出了我的能力范圍。我仍然不確定我是否經(jīng)歷過真正的 Burn Out(精力燃盡)[1],但我確實經(jīng)歷了生產(chǎn)力和動力的起伏。

          這篇文章不是指南,也不是抱怨。更像是我的個人日記,我把它作為自己的記錄。我只是覺得如果我能和你分享這些,可能會很有趣。

          如果你經(jīng)歷過燃盡或感覺接近它,我建議你休息一下,找人談談,并在需要時尋求專業(yè)幫助。這里還有一篇很好的文章 維護開源維護者的平衡[2] 你可以參考。

          現(xiàn)在,讓我告訴你我最近一直在想的一些隨機的事情。

          準備不足

          在某種程度上,即使到今天,開源對我來說仍然很新。

          自從我開始學習編程并了解開源以來,我一直夢想成為一名全職開源開發(fā)者。當我在大學時,我渴望被開源社區(qū)認可,努力“弄清楚”我能夠完成的一些有影響力的工作。突然之間,你會達到一個關鍵時刻,你的項目可能會意外起飛,或者你被邀請加入一個大項目——在那一刻,你開始感受到所有的興奮以及隨之而來的責任。幾天后,當最初的興奮開始消退,你開始意識到這也意味著很多你從未想過的責任和其他事情。盡管我整個大學時期都在努力進入開源,但當我真正踏入時,我意識到我準備得多么不足。

          開源的一個有趣之處在于一個人可能永遠沒有準備好。你可能會遇到棘手的技術問題,或者不得不跟上新技術,但除了編碼之外,你還需要處理一堆其他事情。你需要成為你的「客戶支持」來回答問題;成為「設計師」、「技術作者」來準備漂亮的文檔;成為「項目經(jīng)理」保持項目進度;成為「團隊領導」接納新貢獻者并保持團隊的動力;「營銷」你的東西;在會議上「演講」;等等。這些都是成為開源開發(fā)者的“副作用”,許多事情都是捆綁在一起的,不僅僅是代碼。

          對我來說,這是一個巨大的挑戰(zhàn)。我相當內(nèi)向,我不擅長聊天或進行對話。我在學校時英語考試很糟糕,甚至不自信用英語說話。我甚至只是在同學面前就會感到緊張。我想我也不喜歡團隊管理,盡管我從未領導過團隊——有這么多事情要害怕。

          它不給你準備好的時間(或者另一方面,如果沒有邁出第一步,你可能永遠不會準備好),因為項目增長,你的責任增長,你將被迫學習和適應。當它自然成長為一個團隊時,你不得不學會溝通,領導。當有人邀請你做播客或演講時,他們不會等你 3 年練習語言或演講技巧——你要么錯過機會,要么戰(zhàn)勝你的恐懼去做。因為我太喜歡做開源了,我必須征服它們和自己。

          可能看起來很壓抑。但如果你能一次一個地接受這些挑戰(zhàn),逐漸地,你可能會發(fā)現(xiàn)它們相當有趣和有回報。最終,我非常感激所有這些機會,它們迫使我走出舒適區(qū)并迫使自己進步。在這四年的開源生涯中,盡管在許多事情上仍然不完美,我設法更自信地說英語。我在許多會議上發(fā)表演講,其中一些甚至有數(shù)千名與會者。我仍然在每次演講前都非常緊張,但至少我不再害怕做這件事。

          仍然有許多挑戰(zhàn)和驚喜即將到來。我既害怕又興奮地想知道接下來會發(fā)生什么。

          “期望”

          這推動我們生存并不斷改進,但也使我們難以保持滿足。

          當我開始我的前幾個開源項目時,我非常興奮。我會不斷刷新頁面,急切地等待新問題、新拉取請求和新評論的出現(xiàn)。每一個星標都會讓我開心,我會盡我所能地幫助解決每一個問題。我設定了像 100 star、500 star 這樣的里程碑,并在達到它們時慶祝。我仍然記得當我告訴我的朋友我的項目上有幾百個 star,我感到多么自豪,我覺得我對世界產(chǎn)生了一些影響。

          一旦你達到了這些目標,事情開始變得“平?!薄D銓㈤_始期待更多,并設定更高的目標。在某個時候,我開始不再關心那些 star 或下載的數(shù)量了。這不一定是壞事,因為它們不是我應該關注的指標,但我有時懷念舊時光,那時我可以從那些簡單的事情中得到快樂。

          我逐漸意識到,我們生活中許多事情的體驗與我們的期望有直接關系。當我們剛開始時,我們幾乎沒有期望,這可能相對容易達到。隨著我們向前發(fā)展并站在更高的地方,我們開始期望更多,這可能不會線性增長。當你有 1000 個 star 時,再獲得 100 個 star 并不像你一無所有時那么令人印象深刻。當你有 1000 個星標時,你會尋找另外 1000 個,只有 100 個再也不能滿足你。這對我來說很奇怪,我不喜歡我自己的這種“人性”。

          我發(fā)現(xiàn)降低期望并對自己所擁有的心存感激是保持快樂的一種好方法。當你開始意識到你不能再一個接一個地達到你的里程碑時,停止尋求更高的目標,休息一下,享受周圍的景色是一個好方法——也許你已經(jīng)達到了足夠高的地方。自從我開始“不過分關心得失”以來,我發(fā)現(xiàn)即使可能不成功,我也更快樂地嘗試不同的想法——因為我對它們沒有高期望,對我來說沒有“失敗”的概念。如果其中一些后來被證明是好主意,那將是一個不錯的“意外驚喜”。

          如果你感興趣,我在關于剃羊毛[3]的帖子中解釋了我的想法發(fā)現(xiàn)過程。

          自我期望

          期望不僅適用于我們正在做的事情,也適用于我們自己。當我太關心一個項目時,我經(jīng)常發(fā)現(xiàn)自己在作為一個友好的維護者角色中對自己期望過高。當我讀到人們批評我的項目時,當某個錯誤給別人帶來麻煩時,或者我沒有及時回復問題時,我會感到不好。這些感覺在流行項目中變得更加強烈,因為你知道有很多人依賴它。這些自我期望給我?guī)砹讼喈敶蟮膲毫蛪毫Α?/p>

          正如我在另一篇帖子中提到的,維護者與用戶的比例在開源項目中通常是不平衡的[4]。找到新的協(xié)作者或團隊成員真的很難,但由于開源軟件通常是免費的,基本上沒有門檻來增加更多用戶。

          我認為對于維護者來說,很難做到心態(tài)轉(zhuǎn)變,認為他們沒有義務為別人解決問題,因為開源軟件通常是 server-as-is(按原樣提供)[5]。特別是對于那些關心他們的用戶和社區(qū)的維護者來說,當我們收到新問題時很難忽視。但從另一個角度來看,一個人的時間 and 精力是有限的。當工作量超出一個人的能力時,最好設定優(yōu)先級,首先專注于最重要的事情。

          我希望有人在我開始維護高流量開源項目時告訴我這一點(你在網(wǎng)上有很棒的資源,如這個[6])——我花了很長時間才意識到我不必完美,也沒關系按照自己的節(jié)奏做事。與其被動地接收通知,不如關掉推送通知,當我準備好時主動檢查問題和拉取請求。

          我做了一個關于如何管理 GitHub 通知[7]的演講,如果你對方法論感興趣,可以了解更多。

          降低對自己的期望——沒有人是完美的,沒有人是機器。不要讓他們成為你的負擔。更重要的是保持健康和可持續(xù)的節(jié)奏,并保持自己快樂和有動力,以便在長期內(nèi)產(chǎn)生更多積極的影響。

          當你的夢想成為你的工作

          生活在自己的夢想中是很棒的,坦白說,這是一種特權。但也要現(xiàn)實一點,擁有夢想和真正生活在其中是有很大區(qū)別的。夢想總是理想化的,它排除了所有乏味的細節(jié)。我的夢想是成為一名全職的開源開發(fā)者。是的,能夠獨立工作聽起來很棒,做你喜歡的事情,擁有靈活或者根本沒有工作時間表,從任何地方工作,為世界做出貢獻,等等。但在現(xiàn)實中,事情并不那么簡單。

          這與“把你的愛好變成你的工作”很相似。它確實有很多好處,比如你會更加享受工作,效率更高,但同時也伴隨著義務和責任。當愛好變成工作時,你就失去了選擇何時何地做何事的自由。以前,你會在工作之后作為放松來做你的愛好,但現(xiàn)在當你想通過愛好來放松時,它們變成了工作。

          我很幸運,軟件開發(fā)是一個很大的領域,有很多不同的事情可以做。除了“主要”的開源項目維護之外,我有時會做一些小項目(生成藝術[8]、穩(wěn)定擴散[9]一些小實驗[10]等)來刷新我的思維(作為主要項目的“放松”)。我也非常喜歡玩獨立游戲,雖然我一直在考慮認真開發(fā)一些游戲——但那是另一個故事——至少現(xiàn)在,當我真正想要遠離代碼時,我還有一些逃避的方式。

          我可能太喜歡編程了,以至于我對這一點沒有太強烈的感覺。對我來說,“工作”和“樂趣”之間的界限非常模糊。有時,一個有趣的項目可能變成人們依賴的嚴肅事情。

          速度、Scope 和質(zhì)量

          實際上,是這個話題促使我寫下這篇博客文章。

          讓我們從這個速度、Scope(你理解為功能的豐富度)質(zhì)量“鐵三角”[11]開始。

          通常,人們會說——在這三個因素中,你只能選擇兩個。如果你想更快地交付一個項目,你可能不得不犧牲質(zhì)量或縮小功能范圍。如果你想要一個高質(zhì)量且功能豐富的產(chǎn)品,你可能不得不犧牲速度,慢慢交付好東西,等等。

          就我個人的標準而言,開源軟件的高質(zhì)量是一個我永遠不會妥協(xié)的標準。

          同時,保持一定的速度和動力對我來說也非常重要。我的動力主要來自于完成某件事情后的成就感。當我能夠迭代事物然后交付的反饋循環(huán)時,我可以處于極佳的心流[12]狀態(tài)。

          所以,可以說,我通常選擇的是質(zhì)量和速度。起初,我的項目范圍相當明確且小。我設法保持高質(zhì)量,快速交付,并從社區(qū)快速獲得反饋。那時,我能夠保持生產(chǎn)力和動力,繼續(xù)從事這些項目。

          范圍

          我“意外地”能夠保持這種動力和速度相當長的時間。我開始參與I18n Ally[13]Vue Use[14]等開源項目,從那時起,我加入了 Vue 和 Vite 團隊。僅在2021 年,我就提出了Slidev[15](2021 年 4 月)、UnoCSS[16](2021 年 10 月)和Vitest[17](2021 年 12 月)——一切幾乎都太順利了,我?guī)缀鯖]有意識到擁有更大范圍的能力有一定的限制。從那以后,我繼續(xù)“無知地”保持這種“速度”。我很幸運遇到了了不起的團隊和社區(qū),并得到了他們的幫助:

          • 了不起且超級支持的Nuxt[18]團隊Atinux[19]danielroe[20]pi0[21]
          • sheremet-va[22]AriPerkkio[23]和Vitest 團隊[24]負責照顧Vitest[25]
          • chu121su12[26]zyyv[27]和UnoCSS 團隊[28]為UnoCSS[29]做了很多打磨
          • okxiaoliang4[30]wheatjs[31]Alfred-Skyblue[32]Tahul[33]和VueUse 團隊[34]為VueUse[35]
          • sxzz[36]管理Unplugin[37]
          • KermanX[38]tonai[39]推動了許多功能在Slidev[40]
          • arashsheyda[41]在Nuxt DevTools[42]上提供了很大的幫助
          • shuuji3[43]Shinigami92[44]為Elk[45]做出貢獻
          • patak-dev[46]sapphi-red[47]bluwy[48]與出色的社區(qū)一起推動 Vite 前進
          • userquin[49]維護Vite PWA[50]并在幾乎每個地方提供幫助
          • yyx990803[51],我從他那里學到了很多關于開源和決策的知識
          • ……還有許多通過贊助提供財務支持的你們!

          我很遺憾不能列出所有人,他們中的許多人實際上在項目之間是有重疊的。我想說的是,我不是一個人在工作,沒有社區(qū)的幫助我一個人做不到所有這些事情。我對這一點非常感激。除了質(zhì)量和速度之外,我似乎還在從事廣泛的Scope項目——看起來像是打破了鐵三角的規(guī)則——但實際上,幕后的了不起的社區(qū)是使這一切成為可能的“魔法”。

          能力

          維護多個高流量開源項目所需的工作量是巨大的。如果沒有社區(qū)的幫助,我早就應該達到極限了。雖然社區(qū)給了我很大的幫助,但溝通、協(xié)調(diào)以及持續(xù)的上下文切換仍然需要消耗大量的精力。隨著時間的推移,我積累了許多必須自己完成的事情,許多我想嘗試的想法,以及許多我想改進的事情。

          我想讓這些項目保持活力并繼續(xù)前進;我想寫更多的博客文章來分享我的想法;我想做更多的演講,旅行和見人;我想做更多的直播,因為我知道很多人在等待;我必須清理這件事,做那個發(fā)布;我也想學法語;和家人共度更多時間——我的意思是,這可能只是生活的一部分。每個人都有自己的擔憂和責任,我并不比其他人更特別或更忙。

          “但不知何故,有些東西讓我難以呼吸?!?/p>

          我可能不愿意承認我可能會燃盡。不是因為我怕它,而更像是我不想放棄并被動地處理它。我知道當我需要休息時就休息,但把自己稱為“燃盡”并放棄是逃避責任的“捷徑”。我想找出“根本原因”,并嘗試改善情況,而不是僅僅“繞過”它。正如我們之前討論的,期望的轉(zhuǎn)變,以及對我“準備不足”和“自我期望”的重新評估是我接近燃盡時的不同原因的解決方案。通過調(diào)整自己并采用,我通常能夠在大約一周內(nèi)從低谷中恢復過來,并繼續(xù)前進。

          這次的情況有點不同,這不是因為我沒有動力,而是因為我想做的太多,但我的能力正在耗盡。我開始思考,也許我期望自己以同樣的速度繼續(xù)交付一切,我擔心做得不夠多,不夠快??焖俜答伜馨簦浅S猩a(chǎn)力,但我可能因為太習慣于快速而變得有些不耐煩。結合起來,它們讓我在處理需要中長期努力的事情時容易感到沮喪。

          例如,寫作。我不擅長寫作,也不真的喜歡它。文檔、博客文章、教程和演講——所有這些都需要很多時間,也是我必須做的事情。當我寫作或中途放棄時,我很容易分心和失去焦點。所以我在 Twitter 上詢問[52],并從社區(qū)得到了很多很好的建議(查看評論,你可能也會找到對你有用的東西)。我開始嘗試放松,慢慢來,嘗試轉(zhuǎn)變我的心態(tài),不期望立即看到結果,享受過程。

          所以,我應該重新評估我的能力和期望。我必須理解和接受,我不總能保持相同的速度,我不必對自己施加太大壓力。放慢一點速度,更關注細節(jié),也許我會在過程中找到不同的喜悅和滿足感。

          老實說,我甚至不確定我在這篇博客文章中到底想表達什么——可能只是簡單地和你分享我的想法和感受?,F(xiàn)在,我仍然感到相當有壓力。我仍在適應并試圖找到更好的應對方法。通過這一周的寫作和朋友的交談,我感覺好多了,我相信我會度過這個難關。這可能就像我們生活中的許多其他事情一樣;我們并不總是有完美的解決方案,但我們必須繼續(xù)前進,找到自己的出路。

          維護良好的心理健康是每個開源維護者保持可持續(xù)性的重要任務。我不認為會有“一個答案”或“一個解決方案”來應對旅程中的高潮和低谷。這更像是一個持續(xù)的學習和適應過程,找到適合我們每個人的方法。

          同時,實際上還有很多關于開源的事情我沒有在這篇文章中談到。Artem Zakharchenko[53]寫了一篇很棒的文章 開源的陰暗面[54],從不同的角度和觀點出發(fā),我也深有共鳴。強烈推薦你也讀一讀。

          感謝

          最后,我要感謝我的女朋友,從一開始她就一直在支持我,幫助我度過那些艱難的時刻。沒有她的巨大支持,我可能今天就不會在開源領域了。

          還要感謝 patak-dev[55]posva[56] 圍繞這個話題的深入對話,他們真的幫了我很多,提供了巨大的支持。

          還有,以及偉大的開源社區(qū)!我非常感激我從你們那里得到的所有幫助和支持。

          英文原文鏈接:https://antfu.me/posts/mental-health-oss

          參考資料
          [1]

          Burn Out(精力燃盡): https://www.darlingdowns.health.qld.gov.au/about-us/our-stories/feature-articles/signs-you-might-be-experiencing-a-burnout-and-how-to-regain-balance-in-your-life#:~:text=Burnout%20is%20a%20state%20of,an%20increasing%20sense%20of%20hopelessness

          [2]

          維護開源維護者的平衡: https://opensource.guide/maintaining-balance-for-open-source-maintainers/

          [3]

          關于剃羊毛: https://antfu.me/posts/about-yak-shaving

          [4]

          另一篇帖子中提到的,維護者與用戶的比例在開源項目中通常是不平衡的: https://antfu.me/posts/why-reproductions-are-required

          [5]

          server-as-is(按原樣提供): https://antfu.me/posts/why-reproductions-are-required#open-source-software-is-served-as-is

          [6]

          這個: https://opensource.guide/best-practices/#its-okay-to-hit-pause

          [7]

          如何管理 GitHub 通知: https://antfu.me/posts/manage-github-notifcations-2023

          [8]

          生成藝術: https://100.antfu.me/

          [9]

          穩(wěn)定擴散: https://antfu.me/posts/ai-qrcode

          [10]

          一些小實驗: https://antfu.me/projects

          [11]

          “鐵三角”: https://en.wikipedia.org/wiki/Project_management_triangle

          [12]

          心流: https://en.wikipedia.org/wiki/Flow_%28psychology%29

          [13]

          I18n Ally: https://github.com/lokalise/i18n-ally

          [14]

          Vue Use: https://github.com/vueuse/vueuse

          [15]

          Slidev: https://github.com/slidevjs/slidev

          [16]

          UnoCSS: https://github.com/unocss/unocss

          [17]

          Vitest: https://github.com/vitest-dev/vitest

          [18]

          Nuxt: https://github.com/nuxt/nuxt

          [19]

          Atinux: https://github.com/Atinux

          [20]

          danielroe: https://github.com/danielroe

          [21]

          pi0: https://github.com/pi0

          [22]

          sheremet-va: https://github.com/sheremet-va

          [23]

          AriPerkkio: https://github.com/AriPerkkio

          [24]

          Vitest 團隊: https://github.com/vitest-dev/vitest/graphs/contributors

          [25]

          Vitest: https://github.com/vitest-dev/vitest

          [26]

          chu121su12: https://github.com/chu121su12

          [27]

          zyyv: https://github.com/zyyv

          [28]

          UnoCSS 團隊: https://github.com/unocss/unocss/graphs/contributors

          [29]

          UnoCSS: https://github.com/unocss/unocss

          [30]

          okxiaoliang4: https://github.com/okxiaoliang4

          [31]

          wheatjs: https://github.com/wheatjs

          [32]

          Alfred-Skyblue: https://github.com/Alfred-Skyblue

          [33]

          Tahul: https://github.com/Tahul

          [34]

          VueUse 團隊: https://vueuse.org/

          [35]

          VueUse: https://github.com/vueuse/vueuse

          [36]

          sxzz: https://github.com/sxzz

          [37]

          Unplugin: https://github.com/unplugin

          [38]

          KermanX: https://github.com/KermanX

          [39]

          tonai: https://github.com/tonai

          [40]

          Slidev: https://github.com/slidevjs/slidev

          [41]

          arashsheyda: https://github.com/arashsheyda

          [42]

          Nuxt DevTools: https://github.com/nuxt/devtools

          [43]

          shuuji3: https://github.com/shuuji3

          [44]

          Shinigami92: https://github.com/Shinigami92

          [45]

          Elk: https://github.com/elk-zone/elk

          [46]

          patak-dev: https://github.com/patak-dev

          [47]

          sapphi-red: https://github.com/sapphi-red

          [48]

          bluwy: https://github.com/bluwy

          [49]

          userquin: https://github.com/userquin

          [50]

          Vite PWA: https://github.com/vite-pwa

          [51]

          yyx990803: https://github.com/yyx990803

          [52]

          在 Twitter 上詢問: https://twitter.com/antfu7/status/1764397930796953823

          [53]

          Artem Zakharchenko: https://twitter.com/kettanaito

          [54]

          開源的陰暗面: https://kettanaito.com/blog/the-dark-side-of-open-source

          [55]

          patak-dev: https://github.com/patak-dev

          [56]

          posva: https://github.com/posva





          ???? 點擊下方閱讀原文,獲取魚皮的編程寶典

          往期推薦

          我開源了一套 RPC 框架,學爆它!

          我被刷幾萬元的血淚經(jīng)驗。。。

          為什么你理解不了 HTTPS?

          鼠鼠我啊,有工作了!

          我用這個技術,干掉幾千行 if else!

          150 位,我們出成果了!

          瀏覽 45
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂成人三级片网站 | 亚洲人妻无码视频 | www.日韩在线 | 久久久青草 | 欧美午夜精品成人片在线播放 |