一次CNCF Sandbox申請(qǐng)引發(fā)的鬧劇
CNCF Sandbox是CNCF托管的一個(gè)開源項(xiàng)目孵化器,它提供了一個(gè)獨(dú)立的、靈活的、開放的環(huán)境,以幫助項(xiàng)目開發(fā)者構(gòu)建和推廣新的云原生技術(shù)。CNCF Sandbox項(xiàng)目孵化器的管理主要包括以下方面:項(xiàng)目申請(qǐng):項(xiàng)目開發(fā)者可以通過(guò)向CNCF提交申請(qǐng),將自己的項(xiàng)目納入CNCF Sandbox。CNCF會(huì)對(duì)申請(qǐng)進(jìn)行審核,確認(rèn)項(xiàng)目是否符合CNCF的要求和標(biāo)準(zhǔn)。項(xiàng)目評(píng)估:申請(qǐng)成功的項(xiàng)目將進(jìn)入CNCF Sandbox項(xiàng)目孵化器的評(píng)估流程。在評(píng)估期間,項(xiàng)目開發(fā)者將與CNCF社區(qū)合作,進(jìn)行代碼審查、測(cè)試和驗(yàn)證等工作,以確保項(xiàng)目的質(zhì)量和可行性。項(xiàng)目發(fā)布:當(dāng)項(xiàng)目通過(guò)了評(píng)估后,就可以在CNCF Sandbox項(xiàng)目孵化器中發(fā)布。發(fā)布后,項(xiàng)目開發(fā)者將與CNCF社區(qū)合作,進(jìn)行推廣和宣傳工作,吸引更多的用戶和貢獻(xiàn)者參與到項(xiàng)目中來(lái)。項(xiàng)目維護(hù):發(fā)布后的項(xiàng)目將由項(xiàng)目開發(fā)者和CNCF社區(qū)共同維護(hù)和管理。這包括持續(xù)的開發(fā)、測(cè)試、修復(fù)和更新,以確保項(xiàng)目的持續(xù)發(fā)展和進(jìn)步。
總的來(lái)說(shuō),CNCF Sandbox是一個(gè)非常開放和靈活的項(xiàng)目孵化器,它可以幫助開發(fā)者將自己的項(xiàng)目推向更高的水平,同時(shí)也可以為整個(gè)云原生社區(qū)帶來(lái)更多的創(chuàng)新和發(fā)展,但是隨著CNCF的不斷發(fā)展,Sandbox機(jī)制在一定程度上出現(xiàn)了一些問(wèn)題和挑戰(zhàn)。
注:下述內(nèi)容只代表個(gè)人觀點(diǎn)
CNCF 云原生基金會(huì)大使,CoreDNS 開源項(xiàng)目維護(hù)者。主要分享云原生技術(shù)、云原生架構(gòu)、容器、函數(shù)計(jì)算等方面的內(nèi)容,包括但不限于 Kubernetes,Containerd、CoreDNS、Service Mesh,Istio等等
1、“開源盛況”
根據(jù)成熟度不同,CNCF項(xiàng)目分為Sandbox(沙盒)、Incubating(孵化)和Graduation(畢業(yè))三個(gè)階段。
圖片
從圖中可以看出,沙盒-孵化-畢業(yè)所代表的成熟度依次升高。其中,被CNCF接受并成為Sandbox項(xiàng)目需要至少2個(gè)TOC的sponsor的支持,截至2023年,Sandbox項(xiàng)目已經(jīng)達(dá)到100個(gè), 孵化項(xiàng)目必須提供至少三個(gè)獨(dú)立的終端用戶成功地使用在生產(chǎn)環(huán)境中的資料信息,在質(zhì)量和范圍方面都得到證明。而要達(dá)到畢業(yè),則需要在孵化標(biāo)準(zhǔn)之上滿足更嚴(yán)苛的要求,代表這是一個(gè)“跨越鴻溝”的項(xiàng)目。
截至2023年,經(jīng)由CNCF培育機(jī)制,最終畢業(yè)的項(xiàng)目已達(dá)20個(gè),CNCF 畢業(yè)項(xiàng)目代表著對(duì)于云原生領(lǐng)域的重要貢獻(xiàn)和認(rèn)可。這些項(xiàng)目在技術(shù)、社區(qū)和用戶方面都經(jīng)過(guò)了嚴(yán)格的評(píng)估和驗(yàn)證,展現(xiàn)出了在云原生生態(tài)系統(tǒng)中的領(lǐng)導(dǎo)地位和影響力。
圖片
2、“隱憂”
隨著CNCF的不斷發(fā)展,Sandbox機(jī)制在一定程度上出現(xiàn)了一些問(wèn)題和挑戰(zhàn)。以下為一些主要的問(wèn)題:
孵化項(xiàng)目數(shù)量過(guò)多:近年來(lái),越來(lái)越多的開源項(xiàng)目申請(qǐng)進(jìn)入CNCF的Sandbox,這使得CNCF的管理機(jī)構(gòu)可能無(wú)法有效地處理這些項(xiàng)目,從而導(dǎo)致項(xiàng)目孵化的效率和質(zhì)量下降。
孵化后的項(xiàng)目維護(hù)問(wèn)題:一些Sandbox項(xiàng)目在進(jìn)入CNCF后,由于各種原因(如缺乏貢獻(xiàn)者、維護(hù)者的流失等),可能無(wú)法維持其健康的生態(tài)系統(tǒng),這可能會(huì)導(dǎo)致項(xiàng)目最終停止維護(hù)。
孵化項(xiàng)目過(guò)度依賴CNCF:一些Sandbox項(xiàng)目可能會(huì)過(guò)度依賴CNCF社區(qū)提供的資源和支持,而喪失自身的社區(qū)建設(shè)和發(fā)展能力,這可能會(huì)影響項(xiàng)目的可持續(xù)性發(fā)展。
為了應(yīng)對(duì)這些挑戰(zhàn)和問(wèn)題,CNCF在不斷完善基金會(huì)章程,優(yōu)化和改進(jìn)其Sandbox機(jī)制,提高項(xiàng)目孵化的效率和質(zhì)量,同時(shí)鼓勵(lì)項(xiàng)目開發(fā)者在孵化過(guò)程中積極參與社區(qū)建設(shè)和發(fā)展,從而實(shí)現(xiàn)更加健康的開源生態(tài)系統(tǒng)。
開源“竊賊”
近期在社區(qū)看到有人濫用CNCF的Sandbox機(jī)制,篡改他人項(xiàng)目并修改開源協(xié)議,并申請(qǐng)進(jìn)入Sandbox,這是非常不道德且不利于開源社區(qū)發(fā)展的行為。如果這種項(xiàng)目都能蒙混過(guò)關(guān),將極大的破壞CNCF Sandbox的準(zhǔn)入機(jī)制,導(dǎo)致項(xiàng)目質(zhì)量下降,最終可能會(huì)損害整個(gè)開源社區(qū)的生態(tài)系統(tǒng),幸運(yùn)的是,在社區(qū)初審階段,上述項(xiàng)目被否,但針對(duì)該類行為,帶來(lái)的次生影響,必須予以重視。
圖片
下面讓我們欣賞一下其中典型的騷操作
github ID:dongjiang1989是代碼組織kubeservice-stack的擁有者,其申請(qǐng)進(jìn)入CNCF Sandbox,但似乎沒(méi)有遵守相應(yīng)的開源行為準(zhǔn)則,特別是CNCF章程中的知識(shí)產(chǎn)權(quán)政策,具體例證如下:
篡改開源協(xié)議
諾基亞的代碼庫(kù)CPU-Pooler,它使用BSD許可證,被其修改為Apache協(xié)議,且無(wú)引用等說(shuō)明
nokia/CPU-Pooler
圖片
kubeservice-stack/cpusets-controller
濫用Apache協(xié)議
該作者fork了原屬于FinOps基金會(huì)認(rèn)證的crane-scheduler項(xiàng)目,并進(jìn)行所謂二次開發(fā),但需要注意的是cran-scheduler項(xiàng)目已經(jīng)被捐贈(zèng)(沒(méi)有)給了FinOps基金會(huì)。
圖片
這里ahead的commit大多是deploy相關(guān),且commit msg的習(xí)慣有待提高,這種二開的意義是什么?
此外,該作者在其local-cloud-csi-driver項(xiàng)目中使用了大量來(lái)自kubernetes-sigs/alibaba-cloud-csi-driver的代碼,雖然沒(méi)有違反Apache協(xié)議,恰當(dāng)與否也另當(dāng)別論,但顯然不尊重開源社區(qū),不尊重阿里巴巴等開源共建者的工作。
其中marrida fork了dongjiang1989的倉(cāng)庫(kù)(marrida的fork行為應(yīng)該是留證據(jù)):kubeservice-stack/local-cloud-csi-driver
類似的情況遍布于其他代碼庫(kù)中,個(gè)人認(rèn)為該作者的行為是對(duì)開源貢獻(xiàn)者的褻瀆。
套殼項(xiàng)目荒謬的吹噓
kubeservice-stack/pingmesh-agent 的README如下所示:
圖片
讓我們看看他的代碼結(jié)構(gòu)
圖片
好了,看看碰瓷的prometheus的官方項(xiàng)目blackbox_exporter
blackbox_exporter的作者可能也不知道他們的項(xiàng)目能被吹出這種程度。
肆無(wú)忌憚的漠視
mariida提醒了諾基亞的開源工作者,他們的代碼可能已經(jīng)受到了侵害,有人竊取了他們的代碼并刪除了BSD協(xié)議,下圖為諾基亞開源項(xiàng)目方的相關(guān)回應(yīng)
圖片
諾基亞開源項(xiàng)目方針對(duì)dongjiang98“修改”協(xié)議的行為,讓其修改協(xié)議,dongjiang1989卻選擇了無(wú)視
除了上述行為之外,dongjiang1989還打算將他的“個(gè)人”項(xiàng)目引入hub,下述為官方回應(yīng)
圖片
3、 “小結(jié)”
對(duì)于云原生的發(fā)展來(lái)說(shuō),Sandbox寬松準(zhǔn)入政策是有益的,但是,個(gè)人認(rèn)為,在TOC接納投票之前,可能需要對(duì)代碼協(xié)議進(jìn)行初步審查,以避免代碼抄襲和其他侵犯知識(shí)產(chǎn)權(quán)的行為。
對(duì)于這種情況,CNCF應(yīng)該加強(qiáng)對(duì)Sandbox項(xiàng)目的審核和評(píng)估,確保每個(gè)申請(qǐng)進(jìn)入Sandbox的項(xiàng)目都符合CNCF的要求和標(biāo)準(zhǔn),并且有真正的技術(shù)需求和社區(qū)價(jià)值。同時(shí),CNCF也應(yīng)該加強(qiáng)對(duì)孵化項(xiàng)目的監(jiān)管,確保它們不單純是KPI項(xiàng)目,而是真正有貢獻(xiàn)和影響力的開源項(xiàng)目。如果發(fā)現(xiàn)某個(gè)項(xiàng)目是純粹的KPI項(xiàng)目,CNCF應(yīng)該及時(shí)取消它的孵化資格,并采取其他措施,防止類似事件再次發(fā)生??偟膩?lái)說(shuō),開源社區(qū)需要尊重道德和誠(chéng)信原則,避免濫用CNCF的Sandbox機(jī)制,以確保整個(gè)社區(qū)的發(fā)展和進(jìn)步。
由于筆者時(shí)間、視野、認(rèn)知有限,本文難免出現(xiàn)錯(cuò)誤、疏漏等問(wèn)題,期待各位讀者朋友、業(yè)界專家指正交流。
參考文獻(xiàn)
1. https://github.com/cncf/foundation/blob/main/charter.md#11-ip-policy
2. [Sandbox] KubeService Stack · Issue #15 · cncf/sandbox (github.com)
3. Respect BSD-3-License please · Issue #1 · kubeservice-stack/cpusets-controller (github.com)
4. [OFFICIAL] kubeservice-stack Helm Chart · Issue #2951 · artifacthub/hub (github.com)
本文轉(zhuǎn)載自微信公眾號(hào)「 DCOS」,作者「DCOS」,可以通過(guò)以下二維碼關(guān)注。
轉(zhuǎn)載本文請(qǐng)聯(lián)系「DCOS」公眾號(hào)。