有一种豁达叫开源

    当人们在讨论开源的时候,第一时间想到的是索取,开源对很多开发者来说是好的事情,但是闭源对很多科技企业是有技术保护作用的。

=====

人们对软件的态度是经历过很多次变化的。

在现代计算机研发初期,核心问题是硬件,寻找实现记忆的方式,建造庞大的机器。那时的大牛们都不太重视软件,把编程的事情交给女生去做,因为此,早期大型机上的程序员都是以女生为主,比如ENIAC上的六朵玫瑰。

b211dee8f25e07491feab022cf526400.png

在ENIAC上编程的女程序员(六朵玫瑰中的两位) (美国陆军档案照片)

在现代计算机商业化之后,越来越多的人意识到了软件的重要性。但是大多数计算机公司仍是以销售硬件为主的,当然上面一般都是要包含软件的,因为没有任何软件,那么计算机就是废物,不如砖头。

据说,比尔•盖茨的名言中有一句是:软件创造价值。不要小看这句话,在微软成立的70年代里,很多人还是认识不到这句话的重要性和伟大的。即使是当时做软件的人,对这句话的认识也不够深刻。比如和比尔盖茨一起创业的保罗•艾伦据说就坚持要做硬件。微软早期也确实做了一些硬件,包括给苹果电脑使用所谓软卡,名字叫Z-80 SoftCard。

bfadcb5bb15c52fbebff46b2464990d0.png

微软的成功,让更多人意识到了软件的价值。

当很多人都认可软件的价值后,软件便可以独立销售而且卖很高的价格了。在PC鼎盛的90年代里,一些普通的个人用户也愿意掏钱来买软件。当时销量很高的一种软件便是杀毒软件,一张3寸的可启动软盘,售价在100元到几百元之间,今天想想都觉得有点神奇。

正当人们慢慢习惯要为软件付钱的时候,软件团队内部杀出了一路新的人马,他们打着自由的大旗,高声说:我的软件免费。

免费的力量太强大了,在免费面前,任何收费的店铺都将面临破产。

今天,软件开源已经成为一种不可阻挡的潮流,一股不可撼动的力量。

软件太复杂了,软件太庞大了,必须要全社会一起来做。对于根本无法完全用文档描述的软件来说,开放源代码是最高效的全社会协作方式。

但是开放源代码也意味着把最核心的资产公之于众,“啥都说出去了”,不仅自己的用户会用,自己的竞争对手也会用。

于是,对于很多商业公司来说,便有一种纠结,是否要开源,是开,还是不开。

很长一段时间里,Intel的软件部门主管就是Linux基金会的主席,因为此,Intel做为开源软件的旗手,是要做好模范带头作用的。事实上,Intel也确实开放了大量的源代码,甚至文档,包括内部都曾比较敏感的GPU设计文档(在01.org上)。

但也有一些公司,是不愿意开源的。比如Nvidia便一直不肯把GPU的内核驱动源代码开放出来。为此,Linus大神曾经公开叫板,说Nvidia是“The single worst company”,并动粗口痛骂。

4001720d7057b1a1a8920a025e45378a.png

89841161a75c5373821ca03b30f7bf59.png

其实不愿意开源的不仅仅是Nvidia。在有开源旗手称号的Intel公司内部也有一些部门和人是不愿意开源的。愿意开源的主要是软件部门,而芯片设计部门对开源是有顾虑的,所以为了防止软件部门把东西都开放出去,有时硬件团队就不愿意把资料给到软件部门去。

在中国,不愿意开源的公司就更多了。明明是属于开源范围内的Linux内核驱动,有些公司就是不愿意开放。有时是这样的理由,有时是那样的理由。有的是要先谈商务,有的可能是要上门自取。

于是便有了科技网红上门自取源代码的故事。

282b47139580c74c23fbcab4a09a96dd.png

关于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

可能是因为很多公司都放假了,所以今天的网络很给力,我转身倒茶回来就上传完毕了。

e87764394b603b73c99167ea75be56e4.png

7万7千多个文件,247MB的压缩包,里面包含了Linux内核、硬件设备的驱动程序,还有固件源代码(DTS),脚本文件等。

67491400b721ba6884d863170e693a89.png

其中也有格蠹修改过的代码,以及新增的模块,比如用来辅助内核调试的NDB模块。

60e8830c7a24f3fb65c16259b689a300.png

软件庞大而且复杂,必须要全社会一起来做。有一种纠结,叫要不要开源,也有一种豁达,叫我要开源。^_^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS应用DOM入门:DOM的对象属性

DOM提供了一套属性用于导航、访问和更新文档内容,其中包括只读类型的属性和可读写类型的属性。下表是只读类型的属性: DOM对象属性返 回 值FirstChild返回一个对象(Object),表示第一个孩子节点(child node&…

用O(1)的时间复杂度删除单链表中的某个节点

用O(1)的时间复杂度删除单链表中的某个节点 给定链表的头指针和一个结点指针,在O(1)时间删除该结点。链表结点的定义如下: struct ListNode {int m_nKey;ListNode* m_pNext; }; 函数的声明如下: void DeleteNode(ListNode* pListHea…

Django之序列化

关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式。 1、serializers from django.core import serializersret models.BookType.objects.all()data serializers.serialize("json", ret)2、json…

linux c语言内核函数,2014-1-5_linux内核学习(1)_C语言基础

1、结构体的初始化static struct file_operations fops {.read device_read,.write device_write,.open device_open,.release device_release};以前学习C语言的时候没有见过struct的这种初始化方式。这其实是C语言的新标准。Struct一共有三种初始化的方式:int…

我的备忘录

http://jnesta.blogdriver.com/jnesta/index.html 转载于:https://www.cnblogs.com/oisiv/archive/2006/04/06/368663.html

怎么选工作?

选择offer,一直是很困难的事,工作不是餐桌上的美食,你品尝了这个菜还可以去尝那一道菜,所以大家都害怕因为选错一方而失去了更好的机会。而那句「选择大于努力」,让很多人更看重选择。我会经常遇到同学向我咨询offer选…

Selenium断言的使用,等待

自动化测试常用断言的使用方法(python) 自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行操作可能还不够,有时候也需要对预期结果进行判断。 这里介…

oracle 表复制操作

如下&#xff0c;表a是数据库中以前存在的表&#xff0c;b是预备依据表a执行复制树立的表&#xff1a; 1、只复制表结构的sql create table b as select * from a where 1<>1 2、即复制表结构又复制表中数据的sql create table b as select * from a 3、复制表的制定字段…

linux系统运行iso,linux可以加载iso镜像文件到启动项吗

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼楼主的需求描述不清&#xff0c;不作评述。只说下关于楼上一些吧友提到的grub loopback设备可mount iso并读取其中文件的功能未读过grub1/2的源码&#xff0c;不太了解其实现原理&#xff0c;但从应用上来说&#xff0c;这个设备不…

ESFramework 可复用的通信框架(序)

自从2004年7月开始&#xff0c;就一直从事N层C/S结构的服务端的开发&#xff0c;从最初的熟悉各种Windows Socket API、熟悉完成端口模型&#xff0c;探索高效稳定的服务端通信模型&#xff0c;时至今日&#xff0c;慢慢的积累了一些C/S服务端开发的经验&#xff0c;ESFramewor…

为了兴趣爱好,我该选嵌入式么?

“绝对不要&#xff01;&#xff01;”“绝对不要&#xff01;&#xff01;”“绝对不要&#xff01;&#xff01;”喜欢听结论的同学们&#xff0c;我说的够清楚了吧&#xff1f;接下来&#xff0c;是为那些喜欢问“为什么”的小好奇们解答疑问的环节。为了让道理变得简单明了…

类中构造函数、析构函数与赋值函数的重写

类中构造函数、析构函数与赋值函数的重写 class String {public:String(const char *str NULL); // 普通构造函数String(const String &other); // 拷贝构造函数~String(void); // 析构函数String & operate(const String &other); // 赋值函数private:char *m_d…

Sublime Text3(mac)一些插件和快捷键

Sublime Text3&#xff08;mac&#xff09;一些插件和快捷键 楚简约 关注 2017.02.24 17:02* 字数 1216 阅读 412评论 0喜欢 2下载地址http://www.sublimetext.com/3一、安装Package Control按Ctrl 调出console&#xff0c;粘贴下列安装代码到底部命令行并回车&#xff1a; 重…

linux+内核+环形缓冲,环形缓冲区-模仿linux kfifo【转】

struct kfifo{uint8_t *buffer;uint32_t in; // 输入指针uint32_t out; // 输出指针uint32_t size; // 缓冲区大小&#xff0c;必须为2的次幂}/*判断n是否为2的幂*/static bool is_power_of_2(unsigned int n){return (n ! && ((n & (n - )) ));}/*将数字a向上取整…

【Project3】技术总结

1.quartz 百分百自己会用 2.转载于:https://www.cnblogs.com/mount/archive/2011/11/09/2243265.html

4-7月份规划

1.准备管理系统中计算机应该实践2.学习高等数学二及英语二3.学习VB.Net(估计公司会用VB.Net)&#xff0c;不过可以尽量争取C#4.和红哲讨论一下测试方法.5.对财务系统的测试,加强财务的能力6.购一本练习会计分录的习题集. 7.今后的发展方向&#xff0c;融投资管理 转载于:https:…

没去公司上班的这两天

这周得到通知是居家办公&#xff0c;但因为项目的事&#xff0c;前两天去了公司&#xff0c;今天情况特殊&#xff0c;我需要去合作的公司调试&#xff0c;就没去公司。早上还是9点起来&#xff0c;因为合作的公司离我家很近&#xff0c;可以多休息一会。但早早就睁开了眼&…

Activity的缓存方法

转载地址:http://blog.csdn.net/zhichu_2025/article/details/52047605 有a、b两个activity&#xff0c;当a进入b之后的一段时间&#xff0c;可能系统就把a回收了&#xff0c;这时候按back键&#xff0c;执行的不是a的onStart()方法&#xff0c;而是onCreate()方法&#xff0c…

c# datatable

DataTable dt new DataTable("cart"); //创建表dt.Columns.Add( new DataColumn("number", Type.GetType("System.String"))); //创建列 dt.Columns.Add( new DataColumn("qq", Type.GetType("System.String")));DataR…

linux pdm 查看工具,linux系统监控工具

通过系统监控可以了解系统的运行状态、及时发现异常、分析原因、提早解决&#xff0c;避免系统故障&#xff0c;确保用户对系统的感知度和满意度。IPTV系统一般是通过告警管理、日志管理、信令跟踪、探针、诊断测试来实现对系统的监控。小编为大家分享了linux系统监控工具&…