当人们在讨论开源的时候,第一时间想到的是索取,开源对很多开发者来说是好的事情,但是闭源对很多科技企业是有技术保护作用的。
=====
人们对软件的态度是经历过很多次变化的。
在现代计算机研发初期,核心问题是硬件,寻找实现记忆的方式,建造庞大的机器。那时的大牛们都不太重视软件,把编程的事情交给女生去做,因为此,早期大型机上的程序员都是以女生为主,比如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模块。
软件庞大而且复杂,必须要全社会一起来做。有一种纠结,叫要不要开源,也有一种豁达,叫我要开源。^_^