有一种豁达叫开源

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

=====

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

在现代计算机研发初期,核心问题是硬件,寻找实现记忆的方式,建造庞大的机器。那时的大牛们都不太重视软件,把编程的事情交给女生去做,因为此,早期大型机上的程序员都是以女生为主,比如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,一经查实,立即删除!

相关文章

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

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

怎么选工作?

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

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

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

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

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

没去公司上班的这两天

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

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

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

USB抓包

安装的时候需要选上安装完之后,会提示让你重启电脑,如果不重启电脑的话也看不到USB的设备。之后可以通过usb.src来过滤自己想dump的设备信息当然,有一个技巧是,你可以先停止读写你的USB,然后再操作你的USB设备&#xf…

Appium的环境搭建和配置

Appium的环境搭建和配置 一、安装Nodejs 下载nodejs安装包(https://nodejs.org/en/download/)安装 下载后,双击安装文件,按提示来安装。 测试安装是否成功:运行cmd,输入node –v 二、安装android的SDK 安装…

sqlite3的基本操作

转自:http://blog.chinaunix.net/uid-26833883-id-3239313.html一、数据库基本概念 A.数据(Data)能够输入计算机并能被计算机程序识别和处理的信息集合。B.数据库(Database)数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。注意&am…

收藏这些芯片原厂的代码仓库

本次给大家分享一些芯片原厂的代码仓库,这些资源已收录到咱们嵌入式大杂烩的资源仓库里了:https://gitee.com/zhengnianli/EmbedSummary我们用到一个新的芯片时,一般在它们的官网都可以找到一些入门、上手的资料。除此之外,有些原…

javascript计算小数保留两位小数,多位小数的方法

<SCRIPT LANGUAGE"JavaScript"><!--functionformatFloat(src, pos){ return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);}alert(formatFloat("1212.2323", 2));//--></SCRIPT>转载于:https://www.cnblogs.com/catxp/archi…

Android dumpsys命令详细使用

Android dumpsys命令详细使用 一、dumpsys命令介绍 1.命令说明 Dumpsys用户系统诊断&#xff0c;它运行在设备上&#xff0c;并提供系统服务状态信息 命令格式&#xff1a; adb shell dumpsys [system serbices] 2.系统服务查询 如果直接运行adb shell dumpsys&#xff0c;将会…

基于 esp32 + lvgl8.0 的小电视

一个有趣的作品&#xff0c;转给需要的小伙伴。详情可阅读&#xff1a;https://gitee.com/wangpeng25/the-little-bili-tv输入图片说明支持功能微信配网&#xff08;完成&#xff09;时间显示&#xff08;完成&#xff09;三日天气显示&#xff08;完成&#xff09;温湿度显示&…

同步滚动两个DataGrid

拿到这个首先想到的就是重写Scroll方法&#xff0c;可是想想工作量有些大&#xff0c;所以想在Form级别上做做手脚&#xff0c;看看DataGrid的成员列表可以看到这样两个保护性的方法&#xff1a;GridHScrolled Listens for the horizontal scrollbars scroll even…

整蛊偷快递的家伙!不愧是 NASA 工程师

分享个有意思的新闻给大家&#xff0c;一笑之余&#xff0c;也可以学习下文中主角的理工科思维。不知道你有木有过。。快递包裹被别人偷走的经历&#xff1f;&#xff1f;包裹历经波折终于到了家门口&#xff0c;结果。。却被人给顺走了&#xff01;&#xff01;报警&#xff1…

图解Cisco Packet Tracert之利用TFTP来升级路由器的IOS

对于我们这些学生来说&#xff0c;如果是自学的朋友来说&#xff0c;想摸到真机那实在是太难了&#xff0c;说去买一台呢&#xff1f;买来又没有多大作用&#xff0c;利用dynamips来模拟呢&#xff0c;他本来就是加载的IOS&#xff0c;在flash里面又没有IOS&#xff0c;这时候那…

不指导,一起学习

不敢说指导&#xff0c;只能说以自己的观点来说下这个事情。年前的时候&#xff0c;我一个朋友的朋友也想学电子方面的技术&#xff0c;他毕业后做汽修工作&#xff0c;但是没做多久没离职了&#xff0c;之后在工厂上班一段时间&#xff0c;最近两年帮亲戚一起打理一些生意上的…

linux按键检测结束,关于Linux下按键的检测

写这篇博客是因为自己想做一个fc模拟器&#xff0c;核心代码(6502和ppu的模拟代码)用的原子开发板的代码&#xff0c;人家是从pc向单片机移植&#xff0c;我是反过来了&#xff0c;不过因为写的不错&#xff0c;用函数指针代替了switch方法可以学习一下&#xff0c;so就用了它的…

C语言那年踩过的坑--局部变量,静态变量,全局变量在内存中存放的位置

先看几个概念&#xff1a; 1、bss是英文block started by symbol的简称&#xff0c;通常是指用来存放程序中未初始化的全局变量的一块内存区域&#xff0c;在程序载入时由内核清0。bss段属于静态内存分配。它的初始值也是由用户自己定义的连接定位文件所确定&#xff0c;用户应…

wireshark抓包工具的使用及分析

前段时间看到群里在讨论Wireshark抓包工具&#xff0c;想写一篇使用笔记但一直没来得及写&#xff0c;本篇就通过实例来分享wireshark抓包工具的使用。Wireshark简介 Wireshark 是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包&#xff0c;并尽可能显示出最为详…