撰稿 | 云昭
出品 | 51CTO技術(shù)棧(微信號(hào):blog51cto)
“hey,你這個(gè)開(kāi)源項(xiàng)目是不是已經(jīng)死掉了?已經(jīng)被分叉了嗎?”
一、萬(wàn)星AI開(kāi)源項(xiàng)目大佬回歸突然就被冒犯了
Max Woolf是一位多款A(yù)I開(kāi)源工具的作者,目前在舊金山BuzzFeed任職數(shù)據(jù)科學(xué)家,一直致力于基于人工智能的內(nèi)容生成。自2015年以來(lái),Max陸續(xù)發(fā)布了許多過(guò)萬(wàn)星的開(kāi)源Python包,如textgenrnn、gpt-2-simle、aitextgen和simpleaichat,儼然已經(jīng)成為了一名開(kāi)源大佬。
Max 表示他開(kāi)發(fā)這些工具包的主要?jiǎng)訖C(jī)一直都是:一,興趣;二,改善垃圾帖子。在那段時(shí)間里,包括最近一段時(shí)間,大眾對(duì)于網(wǎng)站種充斥著AI生成的內(nèi)容的反抗情緒如此強(qiáng)烈,Max開(kāi)始意識(shí)到?jīng)]有人類(lèi)控制的情況下發(fā)布AI生成內(nèi)容的危險(xiǎn)性,因?yàn)楝F(xiàn)在他如果發(fā)布“Made by AI”的內(nèi)容,多半會(huì)收到死亡威脅。
激烈的抵抗AI生成內(nèi)容的大眾情緒,再加上AI行業(yè)發(fā)展速度之快,讓Max決定修整一段時(shí)間為自己充電。
在這段時(shí)間中,Max暫停了開(kāi)源項(xiàng)目的更新與維護(hù),這本應(yīng)該很好。然而,令Max意想不到的情況讓他氣炸了。
圖片
二、一個(gè)嘲諷的問(wèn)題,一個(gè)“補(bǔ)刀”評(píng)論
問(wèn)題就出在Max一個(gè)最新開(kāi)源的項(xiàng)目上。simpleaichat,是Max開(kāi)發(fā)的一款用于與ChatGPT交互的Python包,目前已經(jīng)取得了3000 Github Stars。由于這個(gè)包的設(shè)計(jì)范圍非常明確且有限,而且依賴(lài)性最小,Max就認(rèn)為這個(gè)包可以在不破壞代碼的情況下暫停開(kāi)發(fā),等他自己將狀態(tài)調(diào)整恢復(fù)過(guò)來(lái)之后再進(jìn)行維護(hù)。
可等他恢復(fù)了正常的開(kāi)源節(jié)奏之后,卻收到了這樣一個(gè)關(guān)于simpleaichat的GitHub問(wèn)題,標(biāo)題簡(jiǎn)短且充滿(mǎn)諷刺:“這已經(jīng)被放棄了嗎?”
圖片
另一位GitHub用戶(hù)也補(bǔ)了一刀:“恕我直言,我也對(duì)答案感興趣?!盡ax看到這個(gè)問(wèn)題,還以為這個(gè)項(xiàng)目出現(xiàn)了很?chē)?yán)重的Bug或依賴(lài)性問(wèn)題,但檢查之后完全沒(méi)有。
這還沒(méi)完,2天之后,Max又一次被這類(lèi)問(wèn)題cue到了——“這個(gè)包還在開(kāi)發(fā)中嗎?”“是不是已經(jīng)被人分叉出去維護(hù)了?”
圖片
一串問(wèn)題看下來(lái),Max有些被冒犯到了:“這絕對(duì)是在施加壓力,并且非常無(wú)禮!”“我從未見(jiàn)到多有人會(huì)對(duì)開(kāi)源作者詢(xún)問(wèn)‘開(kāi)源存儲(chǔ)庫(kù)是否已經(jīng)被廢棄’這樣的問(wèn)題!”
Max覺(jué)得這很無(wú)理取鬧:是否有一個(gè)潛在的條款來(lái)要求開(kāi)源人必須積極維護(hù)他發(fā)布的任何開(kāi)源軟件?如果在GitHub上達(dá)到一定的星級(jí)或通過(guò)GitHub Sponsorships/Patreon申請(qǐng)資金,你就有義務(wù)提供免費(fèi)的支持嗎?
沒(méi)有。畢竟,像MIT等大多數(shù)許可的開(kāi)源代碼許可證都包含類(lèi)似的一條:“軟件按原樣提供,沒(méi)有任何形式的保證”的變體。
三、大佬:非個(gè)例,許多請(qǐng)求都非常離譜
這樣粗魯?shù)那闆r并非個(gè)例。simpleaichat并不是Max第一次遭到這樣抱怨嘲諷的開(kāi)源項(xiàng)目。
大約十年前,Max在GitHub上發(fā)布了一個(gè)跟蹤對(duì)抗性用戶(hù)輸入文本字符串的項(xiàng)目—— Big List of Naughty Strings,現(xiàn)在已經(jīng)有45k星,這個(gè)項(xiàng)目本質(zhì)上就是一個(gè)txt文件,根本不存在依賴(lài)性問(wèn)題。而且,如果添加對(duì)各種字符串問(wèn)題不敏感的內(nèi)容到列表中,可能會(huì)使列表變得更加混亂,所以我很猶豫是否接受每個(gè)拉取請(qǐng)求。但盡管如此,依舊會(huì)有人感到不爽。
圖片
可能到現(xiàn)在也有人認(rèn)為,GitHub 零問(wèn)題或零拉取請(qǐng)求(PR)是理所應(yīng)當(dāng)?shù)?,但這過(guò)于理想化,工作生活的現(xiàn)實(shí)就是,我們的收件箱永遠(yuǎn)做不到清空狀態(tài)。
每個(gè)平凡的開(kāi)源項(xiàng)目都會(huì)有一個(gè)問(wèn)題/PR隊(duì)列,這需要一個(gè)分類(lèi)優(yōu)先級(jí):并非所有問(wèn)題和PR都是同等重要的,篩選隊(duì)列需要時(shí)間和精力。
作為一名維護(hù)人員,Max越來(lái)越意識(shí)到這一點(diǎn),因?yàn)榻邮苷`導(dǎo)性的PR,反而會(huì)帶來(lái)更多的技術(shù)債務(wù),需要付出更多的努力來(lái)解決。
四、分叉:本來(lái)挺美好,結(jié)果成了威脅
Max舉了一個(gè)發(fā)生在自己身上的例子。用戶(hù)遇到一個(gè)很酷的GitHub項(xiàng)目,很長(zhǎng)一段時(shí)間沒(méi)有更新了,難免沮喪。這種事也經(jīng)常發(fā)生在Max身上。
如果代碼仍然有效,那就太棒了,我很高興。但如果不好用,那就下一個(gè),或者把它當(dāng)作一個(gè)有趣的新機(jī)會(huì)來(lái)自己研究。這就是開(kāi)源的美妙之處!
如果有一個(gè)非活動(dòng)的開(kāi)源項(xiàng)目對(duì)你自己的商業(yè)項(xiàng)目至關(guān)重要,那么就更好了,因?yàn)檫@是一個(gè)很好的財(cái)務(wù)理由,通過(guò)為項(xiàng)目添加適當(dāng)?shù)墓δ芫涂梢缘玫揭环葑稍?xún)合同或者獎(jiǎng)金。
開(kāi)源的一大好處是,如果一個(gè)擁有許可證的開(kāi)源項(xiàng)目確實(shí)處于非活動(dòng)狀態(tài),那么它就可以無(wú)縫分叉。有時(shí)分叉可以變得比原來(lái)的項(xiàng)目更好,這對(duì)每個(gè)人來(lái)說(shuō)都很棒!
但根據(jù)Max的經(jīng)驗(yàn),它反而被用作威脅。維護(hù)人員一旦懈怠,就會(huì)有人拿分叉當(dāng)做威脅的理由,甚至分裂開(kāi)發(fā)社區(qū)。
五、大佬:那就讓開(kāi)源項(xiàng)目涼吧!不值得
AI行業(yè)實(shí)在太獨(dú)特了,發(fā)展速度非常驚人,變化也完全超出了人們的預(yù)期。Max看來(lái),最近的ChatGPT受益者,如LangChain、LlamaIndex和AutoGPT,產(chǎn)生了一種錯(cuò)誤的感覺(jué),即開(kāi)源的人工智能項(xiàng)目必須像火箭一樣一直持續(xù)沖刺發(fā)光發(fā)熱,但問(wèn)題就在于開(kāi)源維護(hù)者是人,不是機(jī)器,并且現(xiàn)在的維護(hù)者也有自己的全職工作,當(dāng)然現(xiàn)在也有不少是由大量風(fēng)險(xiǎn)投資所支持的公司在管理。
持續(xù)為開(kāi)源項(xiàng)目提供支持的這種壓力,Max認(rèn)為已經(jīng)無(wú)形中成為了開(kāi)源工作的最大障礙。Max目前已經(jīng)停止了發(fā)布有趣的一次性項(xiàng)目和人工智能模型,因?yàn)樗麑?shí)在沒(méi)有足夠的“帶寬”(精力)去處理這些偷懶的問(wèn)題,比如“嗨,這里出問(wèn)題了,請(qǐng)修復(fù),謝謝!”不管是不是會(huì)產(chǎn)生依賴(lài)性中斷的問(wèn)題。
Max表示:“如果能掙到同等的薪水,我很樂(lè)意辭去數(shù)據(jù)科學(xué)家的專(zhuān)業(yè)工作,全職從事開(kāi)源項(xiàng)目?!彼J(rèn)為,現(xiàn)在唯一能讓開(kāi)源項(xiàng)目它發(fā)揮作用的方法,就是像所有人工智能初創(chuàng)公司一樣籌集風(fēng)險(xiǎn)投資。
六、開(kāi)源項(xiàng)目拖延實(shí)屬正常
許多人可能認(rèn)為一個(gè)良好的開(kāi)源維護(hù)者應(yīng)該做到積極及時(shí)地響應(yīng)和解決各種issue,要不斷地、有節(jié)奏地發(fā)布版本,要有十分完善的說(shuō)明文檔,還要在各種交流社區(qū)回復(fù)問(wèn)題等等。
但事實(shí)并非如此,開(kāi)源維護(hù)者也許只有幾個(gè)人甚至只有一個(gè)人在作戰(zhàn)。他們并不是全職做開(kāi)源項(xiàng)目,精力和能力有限。就如同某位Alluxio社區(qū)的開(kāi)源維護(hù)者提到的:“對(duì)于不少其實(shí)還是挺合理的用戶(hù)需求和反饋,甚至一些好很好的PR,我都拖延了很久很久,這里給大家先道個(gè)歉?!?/p>
更何況在本文案例中,使用者提出的“這個(gè)開(kāi)源項(xiàng)目是不是涼了”的問(wèn)題,簡(jiǎn)直犯了大忌。
源:知乎
七、理性提問(wèn)題,請(qǐng)別做杠精
另外提醒一點(diǎn),使用開(kāi)源項(xiàng)目提問(wèn)題需要理性,而不是無(wú)腦抬杠。最近就曝出了一條新聞,說(shuō)一名開(kāi)發(fā)者在 Vant 的 GitHub 倉(cāng)庫(kù)提交了一個(gè) issue,跟有贊的開(kāi)源維護(hù)者杠上了。
圖片
這位開(kāi)發(fā)者最后有些吵架的情緒:“我的問(wèn)題是,那你說(shuō)它到底合理不合理呢?中文理解就這么困難嗎?”(PS:讓維護(hù)者給出2選1的答案:合理或者不合理。)
圖片
八、寫(xiě)在最后:給開(kāi)源該有的敬意
沒(méi)錯(cuò)開(kāi)源精神鼓勵(lì)自由和分享,但并不意味著使用者可以用命令甚至威脅的口吻去冒犯。不管是精神領(lǐng)袖斯托曼還是Linus,他們倡導(dǎo)的都不是這樣一種維護(hù)者不被尊重的文化。當(dāng)然,這也再一次暴露出了目前開(kāi)源項(xiàng)目維護(hù)管理的問(wèn)題所在:用愛(ài)發(fā)電被當(dāng)成理所當(dāng)然。
最后,千萬(wàn)不要再當(dāng)面詢(xún)問(wèn)維護(hù)者“開(kāi)源項(xiàng)目是否已經(jīng)涼了”這種問(wèn)題了,非常愚蠢。輕則惹惱維護(hù)人員并延遲開(kāi)發(fā)。重則會(huì)刺激到維護(hù)人員,讓他們重新考慮繼續(xù)從事開(kāi)源項(xiàng)目是否值得,真的讓項(xiàng)目涼透。