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