有一种豁达叫开源
????當(dāng)人們?cè)谟懻撻_(kāi)源的時(shí)候,第一時(shí)間想到的是索取,開(kāi)源對(duì)很多開(kāi)發(fā)者來(lái)說(shuō)是好的事情,但是閉源對(duì)很多科技企業(yè)是有技術(shù)保護(hù)作用的。
=====
人們對(duì)軟件的態(tài)度是經(jīng)歷過(guò)很多次變化的。
在現(xiàn)代計(jì)算機(jī)研發(fā)初期,核心問(wèn)題是硬件,尋找實(shí)現(xiàn)記憶的方式,建造龐大的機(jī)器。那時(shí)的大牛們都不太重視軟件,把編程的事情交給女生去做,因?yàn)榇?#xff0c;早期大型機(jī)上的程序員都是以女生為主,比如ENIAC上的六朵玫瑰。
在ENIAC上編程的女程序員(六朵玫瑰中的兩位) (美國(guó)陸軍檔案照片)
在現(xiàn)代計(jì)算機(jī)商業(yè)化之后,越來(lái)越多的人意識(shí)到了軟件的重要性。但是大多數(shù)計(jì)算機(jī)公司仍是以銷(xiāo)售硬件為主的,當(dāng)然上面一般都是要包含軟件的,因?yàn)闆](méi)有任何軟件,那么計(jì)算機(jī)就是廢物,不如磚頭。
據(jù)說(shuō),比爾?蓋茨的名言中有一句是:軟件創(chuàng)造價(jià)值。不要小看這句話(huà),在微軟成立的70年代里,很多人還是認(rèn)識(shí)不到這句話(huà)的重要性和偉大的。即使是當(dāng)時(shí)做軟件的人,對(duì)這句話(huà)的認(rèn)識(shí)也不夠深刻。比如和比爾蓋茨一起創(chuàng)業(yè)的保羅?艾倫據(jù)說(shuō)就堅(jiān)持要做硬件。微軟早期也確實(shí)做了一些硬件,包括給蘋(píng)果電腦使用所謂軟卡,名字叫Z-80 SoftCard。
微軟的成功,讓更多人意識(shí)到了軟件的價(jià)值。
當(dāng)很多人都認(rèn)可軟件的價(jià)值后,軟件便可以獨(dú)立銷(xiāo)售而且賣(mài)很高的價(jià)格了。在PC鼎盛的90年代里,一些普通的個(gè)人用戶(hù)也愿意掏錢(qián)來(lái)買(mǎi)軟件。當(dāng)時(shí)銷(xiāo)量很高的一種軟件便是殺毒軟件,一張3寸的可啟動(dòng)軟盤(pán),售價(jià)在100元到幾百元之間,今天想想都覺(jué)得有點(diǎn)神奇。
正當(dāng)人們慢慢習(xí)慣要為軟件付錢(qián)的時(shí)候,軟件團(tuán)隊(duì)內(nèi)部殺出了一路新的人馬,他們打著自由的大旗,高聲說(shuō):我的軟件免費(fèi)。
免費(fèi)的力量太強(qiáng)大了,在免費(fèi)面前,任何收費(fèi)的店鋪都將面臨破產(chǎn)。
今天,軟件開(kāi)源已經(jīng)成為一種不可阻擋的潮流,一股不可撼動(dòng)的力量。
軟件太復(fù)雜了,軟件太龐大了,必須要全社會(huì)一起來(lái)做。對(duì)于根本無(wú)法完全用文檔描述的軟件來(lái)說(shuō),開(kāi)放源代碼是最高效的全社會(huì)協(xié)作方式。
但是開(kāi)放源代碼也意味著把最核心的資產(chǎn)公之于眾,“啥都說(shuō)出去了”,不僅自己的用戶(hù)會(huì)用,自己的競(jìng)爭(zhēng)對(duì)手也會(huì)用。
于是,對(duì)于很多商業(yè)公司來(lái)說(shuō),便有一種糾結(jié),是否要開(kāi)源,是開(kāi),還是不開(kāi)。
很長(zhǎng)一段時(shí)間里,Intel的軟件部門(mén)主管就是Linux基金會(huì)的主席,因?yàn)榇?#xff0c;Intel做為開(kāi)源軟件的旗手,是要做好模范帶頭作用的。事實(shí)上,Intel也確實(shí)開(kāi)放了大量的源代碼,甚至文檔,包括內(nèi)部都曾比較敏感的GPU設(shè)計(jì)文檔(在01.org上)。
但也有一些公司,是不愿意開(kāi)源的。比如Nvidia便一直不肯把GPU的內(nèi)核驅(qū)動(dòng)源代碼開(kāi)放出來(lái)。為此,Linus大神曾經(jīng)公開(kāi)叫板,說(shuō)Nvidia是“The single worst company”,并動(dòng)粗口痛罵。
其實(shí)不愿意開(kāi)源的不僅僅是Nvidia。在有開(kāi)源旗手稱(chēng)號(hào)的Intel公司內(nèi)部也有一些部門(mén)和人是不愿意開(kāi)源的。愿意開(kāi)源的主要是軟件部門(mén),而芯片設(shè)計(jì)部門(mén)對(duì)開(kāi)源是有顧慮的,所以為了防止軟件部門(mén)把東西都開(kāi)放出去,有時(shí)硬件團(tuán)隊(duì)就不愿意把資料給到軟件部門(mén)去。
在中國(guó),不愿意開(kāi)源的公司就更多了。明明是屬于開(kāi)源范圍內(nèi)的Linux內(nèi)核驅(qū)動(dòng),有些公司就是不愿意開(kāi)放。有時(shí)是這樣的理由,有時(shí)是那樣的理由。有的是要先談商務(wù),有的可能是要上門(mén)自取。
于是便有了科技網(wǎng)紅上門(mén)自取源代碼的故事。
關(guān)于GDK8的內(nèi)容,可以查看這個(gè)鏈接
https://www.nanocode.cn/wiki/docs/gdk8_primer
在昨天完成了GDK8的新版本鏡像后,格蠹的小伙伴們便都放假了。今天一早,我一個(gè)人到辦公室,要做的第一件事就是要開(kāi)放源代碼。
在開(kāi)源這件事上,大多數(shù)人都是要求別人開(kāi)源時(shí)說(shuō)的震天響,輪到自己開(kāi)源時(shí)慢慢騰騰,但是格蠹不要這樣做。11月份發(fā)布GDK8的初始版本后,我就想把源代碼上傳到github開(kāi)源出去,但是因?yàn)榇a量很大,當(dāng)時(shí)又在外面出差,讓小伙伴打包發(fā)給我后,我上傳幾次都失敗了。
有了上次的積累,這一次進(jìn)展的順暢很多。但在嘗試以老的git信息基礎(chǔ)上操作時(shí)失敗了。
git branch -M main
error: refname refs/heads/master not found
fatal: Branch rename failed
于是我把.git目錄移動(dòng)到其它地方,準(zhǔn)備以全新的方式提交。
先git ?init,再提交一個(gè)簡(jiǎn)單的readme。
git? ?add README.md
git??commit -m "initial commit for WUCHENG release of YANZI series for GDK8"
因?yàn)間ithub不再接受密碼方式登錄:
remote: Support for password authentication was removed on August 13, 2021. Please use a per? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?sonal access token instead.
remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?operations/ for more information.
fatal: Authentication failed for 'https://github.com/gdk8/kernel.git/'
所以花了一些時(shí)間在產(chǎn)生RSA token和注冊(cè)上。關(guān)鍵的步驟是:
先用sshgen產(chǎn)生好RSA的密鑰對(duì),再啟動(dòng)ssh agent。
?eval "$(ssh-agent -s)"
然后把密鑰加給ssh agent:
ssh-add id_yanzi
可以使用ssh-add -l來(lái)觀察是否加成功。
而后很關(guān)鍵的另一個(gè)動(dòng)作是把git的遠(yuǎn)程方式從https改為ssh,即:
git remote set-url origin git@github.com:gdk8/kernel.git
接下來(lái)增加所有文件:
git add -A
下達(dá)提交命令:
git commit -m “”
最后發(fā)布push,推上互聯(lián)網(wǎng):
git push
可能是因?yàn)楹芏喙径挤偶倭?#xff0c;所以今天的網(wǎng)絡(luò)很給力,我轉(zhuǎn)身倒茶回來(lái)就上傳完畢了。
7萬(wàn)7千多個(gè)文件,247MB的壓縮包,里面包含了Linux內(nèi)核、硬件設(shè)備的驅(qū)動(dòng)程序,還有固件源代碼(DTS),腳本文件等。
其中也有格蠹修改過(guò)的代碼,以及新增的模塊,比如用來(lái)輔助內(nèi)核調(diào)試的NDB模塊。
軟件龐大而且復(fù)雜,必須要全社會(huì)一起來(lái)做。有一種糾結(jié),叫要不要開(kāi)源,也有一種豁達(dá),叫我要開(kāi)源。^_^
總結(jié)
- 上一篇: boost库在ubuntu下的安装
- 下一篇: 程序员入门之路