欢迎光临散文网 会员登陆 & 注册

关于鸿蒙,几个关键问题

2021-06-02 17:03 作者:飞虎233-放置游戏  | 我要投稿

这几年讨论最多的就是华为和它的鸿蒙,但是绝大多数参与讨论的人都并没有计算机领域的知识,结果被公知和民粹媒体刷得团团转,我觉得趁这个机会科普点东西,指出点问题是可以的,也是危险的.

首先表明立场,支持华为,支持鸿蒙,但不支持过分吹捧以及"偷换概念"的海军营销.如果将鸿蒙抬到一个不可及的高度,最后伤害的会是整个国内安卓市场,以及潜在的对开源精神的二次伤害.如果不想"红芯"重演,就请一起抵制这些炒作营销号.当然,如果不想在某一段之后继续看下去,也可以把我当成行走的50W,个人欢迎揭发检举,但不欢迎谣言.


首先要弄清楚的一个东西,是什么是Unix,什么是Linux,什么是安卓.

在操作系统领域,我们如果不讨论最早的单道批处理和多道批处理系统,那么现代意义上的第一个广为人知的操作系统,是贝尔实验室的Unix.这个操作系统的开发目的是运行一款研究员自行编写的游戏<Space Travel>,这款游戏现在在Steam可以通过输入代码的方式下载.Unix之后,C语言被贝尔实验室开发出来,一定程度上终结了汇编语言的统治地位(但汇编语言依旧非常重要),Unix系统也用C语言重写了一遍.再加上美国国防部开发的TCP/IP网络协议,这一套计算机软件体系(暂且这么叫),被分发给美国的各大学作非商业用途.而Unix是闭源系统,并且大多与计算机硬件挂钩(这意味着你的电脑换个牌子,可能装的就不是上一个电脑用的系统了),这使得Unix的普及变得困难.

Unix虽然是闭源的,但有很多的"分支",这些分支由不同组织和个人开发.有一些是授权二次开发,有一些是另起炉灶.其中就有现在的几种主流开源操作系统家族,比如FreeBSD,比如Linux.

Linux是林纳斯出于个人爱好编写的,随后他公开了Linux源代码,邀请其他人一同完善,正是由于这个决定,Linux系操作系统的基础-Linux才变得越来越好.事实上Linux现在的核心代码,只有大约2%是由林纳斯编写,他目前的工作也主要是对提交的代码进行裁定.由于代码开源,所以任何人都可以将代码下载下来进行修改,为自己定制一套系统,并且在不侵犯开源协议的前提下发布改造过的系统.


接下来要讨论的是Linux使用的GPL协议,其所属的"自由软件"概念,与"开源"有很大不同.这也是大家声讨或维护华为时造成误解的根本.实际上,如果你对GOG的反DRM有所了解,那么你会对以下的内容感到熟悉.

自由软件联盟规定了自由软件的四项基本自由(下面的讨论中软件和程序是等价的):

    自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由地运行软件

    自由度1:用户可以自由地学习并修改该软件,[作为前提,用户必须可以访问到该软件的源代码](访问源代码≠开源)

    自由度2,3:用户可以自由地分发该软件及该软件修改后的拷贝

在后续的阐述中,自由软件组织有进一步说明.

若甲程序运行的时候必须使用到乙程序,那么只有在甲乙都是自由程序时,甲程序才是自由的(但即使乙不是自由的,甲依然可以开放源代码供修改).如果修改甲程序成丙程序,丙程序不再依赖乙程序,那么丙程序就不必在意乙是否是自由的,只需做到自己符合原则即可.

自由软件必须可以商用,可以商业开发,可以商业发布.但在自由方面对用户加以限制,或要求付费才能实践这些自由和不赋予自由并无二致.但出售和购买自由软件本身确是自由的.

更多相关解释,可以查看: http://www.gnu.org/philosophy/free-sw.html

这里是GPLv3协议的一个简要说明: http://www.gnu.org/licenses/quick-guide-gplv3.html

和一个详细使用说明: http://www.gnu.org/licenses/gpl-howto.html


这里是时候引入开源了.在此之前,我们要先说,我们所使用的软件到底是什么.实际上,软件是由"源代码",经过"编译"而得以形成的."源代码"是程序员编写的,在程序员逻辑上能看懂的部分(所以说写代码用的是"语言").而计算机运行程序/软件,相当于用它自己的语言去给你展现一些东西,如果给它看程序员能看懂的"代码",它是无法理解的.所谓"编译",就是将程序员所用的语言,翻译成计算机能看懂的语言的过程.理论上,如果一门计算机语言对编译器的规定足够靠谱(没错,一个计算机语言可以被很多种编译器翻译,就跟一个人可以配好多英文同声传译一样),用相同的源代码,就能编译出同样的软件.

这么说,开源和闭源其实是一样的吗?毕竟如果是"翻译"成计算机语言的文件,那不是也可以进行"反翻译"吗?实际上,编译后形成的文件很难被破解,这不仅是理解问题.很多编译器还会在编译时,对文件进行"加密","加密"后的文件,计算机依然看得懂,但是反着翻译过来就会变成非常杂乱的一堆文字,人是看不懂的.还有一点,就是就算能够"反编译"出源代码,在使用上也会由于"协议"而受到代码原作者的制裁.

首先,与开源相对应的是闭源,我们现在所用到的大多数软件都是闭源的,它的特点就是用户无法接触到软件的代码.这对于软件开发者来说,能够保护他们的知识产权,也能够使他们"掌握核心科技".

而开源,就是开放源代码,并允许任何人自由使用,二次修改,和基于这些代码制作自己的软件.开源对于"自由"的解释,是根据源代码(即作者)所使用开源协议相关的.有的协议规定,使用开源代码制作的程序也必须开源;有些则说,可以将二次开发的软件闭源,但是所引用的开源代码必须标明版权;甚至还有一些协议规定,代码可以随便用,不注明作者也没关系.对于接下来要讨论的GPL协议,如果你从原作者那里购买了源代码,那么将它出售也没有关系.


实际上自由软件联盟是不赞同开源运动的.虽然自由软件中包含对于开源的要求,但是开源并不是从"自由"的角度,而是从"软件质量"的角度出发.虽然我们经常说,如果一个软件要闭源,那么它的最后一个开源版本会被自由复制,并最终诞生它的一个开源版本(想想PostgreSQL).但这是"自由软件"的体现.实际上,Linux开放了自己的很多接口,用于其他软件/操作系统的编写,这种做法主动提供了屏蔽GPL协议的方式,并最终诞生了安卓系统,也造成了安卓与自由软件联盟两方支持者长久的口水战.(安卓系统避开了GPL的传染性,使得硬件厂商可以放心为之开发驱动而不必担心暴露硬件参数,但安卓系统本身是封闭的,用户无法对其进行自由修改和二次分发,这在后来的"刷机"中尤为明显)我们可以说安卓对于Linux底层的引用符合GPL许可证,但安卓绝对不是自由软件/操作系统.

部分内容引自这篇文章: http://www.gnu.org/philosophy/open-source-misses-the-point.html

和这篇文章: https://linux.cn/article-8691-1.html


# 从这里开始,涉及到华为,请随时准备领 50W #

然后我们说说AOSP(Android Open-Source Project 安卓源代码开放项目).

安卓系统之所以拥有如此多的变种,就仰赖于AOSP,它是一个开源项目,但并不是自由软件项目.基于AOSP开发的操作系统,并不是"安卓套壳",而只是"跟安卓像,跟其他安卓系统共用一套生态".但 powered by Android 是对于AOSP的基本尊重,因为如果你使用了AOSP当中的部分关键成分(如Android运行环境),那么这个系统"在实际上"就是基于安卓开发的(powered by),虽然名份上依然是AOSP.华为大大方方承认自己基于AOSP开发,但是在使用了安卓的运行环境后没有显示powered by android,属于掩耳盗铃.其实小米等企业的操作系统,如果按华为的说法,也可以说是自研,因为都是基于AOSP,只是他们都很识趣地写了"powered by".至少在目前阶段,华为还未"掏空安卓"时,他们这么做是"合法不合理"的.

至于"西方卡脖子"说,看了前面关于"开源"的描述就明白了,即使谷歌突然宣布安卓完全闭源,AOSP终止,也不存在"卡脖子"问题,国内手机厂,乃至世界手机厂都可以基于闭源前的最后一个开源版本继续开发.顶多无法继续获得后续谷歌公司开发的技术.就算是现在所说的"GMS(谷歌服务)对于AOSP"的侵蚀,国内也早有解决方案.以"鸿蒙"去攻击其他国产安卓系统,说他们"不爱国","技术不行","被卡脖子",是非常反智的表现.

关于华为"自研内核",目前实际上是没做到的,属于虚假宣传,它只存在于未来,我也相信未来它会做到自研,但以未来去夺现在的舆论,有些不太合适.它现在还是基于AOSP,用的是安卓生态.如果它真的是自研,就应该像Linux上的Wine一样,搭建安卓虚拟机来运行安卓软件,但这会带来很大的性能问题.

关于"微内核"和万物互联,实际在宣传上与其本身定义有误,这不能说是华为造成的,他说了实话,但没辟谣,也没有辟谣的义务.微内核是一种设计方式,它将内核集成的系统服务层分离出来,变成根据需要加入的选件,这可以提升扩展性.在升级系统时,只需要用新模块代替旧模块,不需改变整个操作系统.微内核不是"小内核",但确实可以设计在小的组件上.微内核用现有的Linux分支系统就可以实现,实际上现在的物联网,就是各种基于Linux的操作系统,用同一套协议在网络进行信息交换而实现的.现在的一些手机可以操控空调,其实就是物联网的应用.万物互联需要的是统一的协议,并不需要统一的鸿蒙系统,或者说就算用了统一的系统,如果各用各的协议,也无法达成互联.这方面华为在尽力,但是外界如此将"微内核","底层细节"这些概念与"万物互联"绑定,是在造谣,偷换概念.所谓"安卓是宏内核,无法万物互联"也是不存在的,事实是我见过很多微系统都在使用安卓系(也就是AOSP).

对于开源代码贡献率的问题,实际上是有差别认知的.现在的Linux,其创作者林纳斯贡献的代码只有2%左右,但这依然是"林纳斯和Linux社区共同"开发的系统.提交占比高不能占用所属权.


至于最后的,最让我有 50W 嫌疑的,就是我对鸿蒙"国产操作系统之光"的严重厌恶.

国内的优秀操作系统有很多,有些甚至得到了世界的认可,它们的开发都是持续了几年,十几年的.其中最有名的是Linux Deepin/UOS,Ubuntu Kylin(优麒麟),NeoKylin(中标麒麟,国内保密要求高的企业和部分广泛使用).这些系统有的尝试万物互联,有的优化PC体验,有的可以替代安卓,但它们都明确说明了自己从哪来,而且就算美方制裁"卡脖子",它们也能迅速发挥作用.有些系统已经达成了"替代Windows"的能力(指的是操作感,单纯替代Windows现在Wine就能部分实现).

华为所谓"不花钱的水军"如此宣传一个"站在巨人肩膀却说自己没站"的操作系统,是对国内开源者信心的重大打击.如果华为方不加干预,未来只会出现更多的"鸿蒙"行为,它们可能是像鸿蒙一样宏自研,也有可能是像"中芯"一样,套个皮打口水战.

况且,华为的虚假宣传不是一天两天,从最开始被诟病的"PPT系统",它就在利用自己当前营造的民粹氛围,漫天撒谎,偷换概念,打压友商,为自己牟利.我对华为的研发能力充满信心,但对那些"没收钱的水军"带来的民粹和反智,以及华为方并未下场辟谣充满失望.


好了,行走的 50W 自暴了,你们可以开搞了.

本文若顺利,则首发于乌有之乡,否则知乎,否则bilibili.

关于鸿蒙,几个关键问题的评论 (共 条)

分享到微博请遵守国家法律