当前位置: 首页 > 科技观察

国产操作系统不只是换皮

时间:2023-03-22 14:01:21 科技观察

昨天写了一篇关于国产操作系统的文章,头条推荐数突破10万,证明国人对国产操作系统还是很关心的。也有很多人私信我各种技术问题,能解答的我也一一回复。也有很多问题因为超出了我的知识盲点无法回答,非常抱歉。今天本来打算发一篇关于QT5的研究文章,但是通过昨天的讨论,我想很多国人对国产操作系统有误解,“这不就是在linux系统上换皮吗?”这种评论我听得最多。所以我觉得有必要给那些对国产操作系统有误解的人科普一下。让大家知道这些年我们在国产操作系统上做了哪些工作。什么是桌面操作系统?桌面操作系统是大家在普通电脑上使用的操作系统。桌面操作系统应该是所有操作系统类型中最复杂的,也是开发和开发难度最大的。世界上优秀的桌面操作系统有微软的Windows和苹果的MacOS,还有其他的Linux桌面操作系统,比如Fedora、Suse、Ubuntu,包括我们自己的deepin操作系统。虽然在过去的十年间取得了长足的进步,但与Windows和MacOS相比,在技术进步、交互设计、产品质量等方面仍有较大差距。桌面操作系统的组成部分是什么?普通用户使用的桌面操作系统的组成部分主要包括:内核、驱动程序和固件:主要用于驱动硬件正常工作。除了CPU、内存和磁盘,最重要的是要广泛兼容不同的网卡、显卡、声卡和外设等硬件设备。软件仓库和众多开发库:如果没有开源社区众多高手打包的软件仓库和各种开发库,很难开发出基于Linux的操作系统,更不用说开源爱好者,甚至一个中等规模的公司。据说开源软件仓库从根本上改变了操作系统和开源软件的开发模式。丰富的软件仓库使开源开发者、组织和公司能够使用最新的技术,同时大大降低开发成本。桌面环境:指的是大家平时一开机就用到的桌面、任务栏、开始菜单。可以说,一个高质量、交互设计的桌面环境,可以大大降低用户使用新桌面操作系统的门槛。Appstore:对于用户来说,绝对不仅仅是一个可以抛在脑后的好玩的桌面环境。如果没有好的应用商店带来的海量应用和简单易用的安装操作,普通用户用几天就会放弃。可以说,应用商店是留住普通用户最基本的需求。预装应用:从国内的角度来看,至少QQ、Office、网银等一系列方便易用的多媒体应用,才算是好用的桌面操作系统。目前国产操作系统可以兼容很多windows软件。如果有急需,可以到官网提交自己的需求,加快适配速度。什么是桌面环境?简单的说,桌面环境就是在内核和XServer之上写了一批程序,让用户在登录后可以直观流畅的使用桌面、任务栏、开始菜单、文件操作、系统设置等。下面是一个X服务器上的科普。X服务器是Linux系统中图形界面服务器的简称。Windows系统的界面是系统不可或缺的一部分。各种窗口操作界面显示直接由系统核心管理,而Linux的图形界面不是系统的必要部分,可以无界面运行。当需要Linux提供界面时,系统会建立一个或几个X服务器,通过X协议与窗口管理器进行交互,由独立于系统的应用程序生成窗口、状态栏、按钮等交互界面。比较常见的Linux界面操作环境有KDE和GNOME,为它们提供系统支持的是Xserver,而不是Linuxcore。总结一下linux图形界面的层次关系:linux本身-->Xserver<-【通过X协议说话】-->windowmanager(集成桌面环境)-->Xapplication。这个世界上,从功能完整性和产品质量上来说,主要有四种桌面环境:RedHat开发的Gnome,稳定性和性能都非常好的Gnome2,包括从Gnome2衍生出来的Mint桌面。Suse开发的KDE:可以说是功能最丰富的桌面环境,包括产品质量和性能,每年都在飞速提升。Ubuntu开发的Unity:在Unity中还是可以看到很多Gnome2的影子。产品质量和性能良好。Ubuntu自主开发了Mir、Unity桌面环境和一些全局菜单等独特功能。Deepin开发的DDE:作为DDE的开发者,客观评价、产品质量和设计视觉都符合国人的使用习惯。很多地方的交互设计细节都比其他桌面环境更精简,主要是开箱即用的非技术用户不适合技术达人和技术用户,在功能方面已经喜欢折腾了设计。其他轻量级桌面环境,如LXDE、XFCE、Enlightenment等,性能优秀,但从功能的完备性和交互设计的精致度上还不够,更适合有一定技术含量的技术用户。比开箱即用更深入和追求性能和自我配置。剩下的就是一堆tilingwindowmanagers,比如大家熟知的:awesome、i3、xmonad、dwm、stumpwm等,这些windowmanager类型的桌面环境有300多种。以前研究过所有桌面环境,这些窗口管理器的特性都用过,最喜欢的是xmonad。这类窗口管理器可以将个人工作环境的内存和性能消耗降低到极低的水平,并且具有高度的可定制性,甚至可以通过编程来创建自己独特的工作环境。这种类型的窗口管理器桌面环境更适合开发者和黑客。当然,国内也有大量的X用户。桌面环境和那些改变主题的有什么区别?可以说,桌面操作系统的核心技术和产品技艺都集中在桌面环境上。只有掌握了桌面环境古老而深奥的核心技术,才能说桌面操作系统可以随心所欲地修改和改进,才能给用户带来更好的使用体验。因为桌面环境强调的是自上而下的全栈技术,无论技术深度、技术全面性、代码工程量,都是巨大的。开发一个功能完备的桌面环境需要一个20+人的团队至少要花费2年多的时间才能打造出来,而且桌面环境的技术核心都依赖于一批古老的协议,比如:x11、xcb、composite等基础技术。网上几乎没有文档教你如何一步步搭建桌面环境。现成的桌面由于多年环境的发展,代码已经很复杂,最多只能从核心代码片段中学习。一个人从上到下学习桌面环境的核心技术,实现一个功能齐全的桌面环境,几乎是不可能的。所以大部分Linux发行版都是在Gnome和KDE的基础上修改的,大多是在网上找了一批主题(Gtk+主题、图标主题、光标主题、窗口边框主题、DM主题、锁屏主题)然后配置.您可以使用漂亮的墙纸创建自己的DIY桌面环境。很多linux社区的用户说,你看,我可以自己做一个桌面环境,甚至国内很多linux发行版厂商利用社区桌面环境,换皮骗政府的钱,说是自研。操作系统。既然换个主题也可以很好,那么桌面环境和那些换主题的有什么区别呢?在我看来,主要是几个方面:核心技术能力:如果不掌握桌面环境的核心技术,所有的修改能力都仅限于修改主题、logo、字符串替换的能力产品质量无法做到guaranteed:尤其是有很多隐藏如果不掌握核心技术,连问题的原因都不知道,更别提如何解决设计细节了:如果仔细看那些刚应用的桌面环境主题,你会发现他们在外面看起来没问题,但是很多按钮的颜色、留白、控件的对齐方式都有问题,甚至是粗糙的,为什么?这是GTK+的主题设计造成的。GTK+强调一套原生控件打天下,但面对无限的应用和需求,并不是所有的交互都可以靠一套控件来满足。在大多数Linux社区中,在开发者不具备自己绘制控件能力的前提下,大多数开发者选择应用不合适的控件和控件主题来组装,而GTK+主题作者在制作主题时无法测试所有软件,以及其先天的局限性GTK+也是到底,不管怎么套用主题,各种软件都是拼凑在一起的,就像各种质量参差不齐的补丁拼凑在一起一样。开源社区的大部分开发者都被虐了很多年,可以容忍粗略的设计细节。但对于普通用户来说,这个总成的设计细节就如同把当年的诺基亚和现在的iPhone7抱在了一起。统一操作界面:如右键菜单、文件打开对话框、认证对话框等。只有在深层次上统一这些底层界面,你才不会看到不同风格的右键菜单、文件打开对话框、身份验证对话框等。两者对于统一的桌面操作系统体验都非常重要。想一想,如果你买的iPhone很粗糙,到处都不一样,你会砸吗?但是为什么那么多开源爱好者能够忍受这些粗糙的东西呢?(因为我没花钱,如果我花钱,你看他不炸客服电话。。。)从技术上来说,一个完整的桌面系统从底层主要分为这几层totop:Kerneldriverlayer:前面说的有,主要是保证硬件的基本功能和兼容性。所有的Linux发行版都是相似的。不同的是内核补丁集不同,或者集成驱动和固件的区别显示服务层:从内核开机到普利茅斯(俗称开机动画),只要看到登录界面和输入密码,此时XServer已经启动。XServer简单理解为Linux系统中掌握绘制图形界面权力的“上帝”。所有的程序都必须在绘制图形时,必须向XServer发送消息,由XServer为你绘制。同时XServer也是事件输入(键盘鼠标)输出(显示)的抽象层。开发者可以直接使用X11/XCBAPI进行应用开发,无需考虑底层驱动和显卡驱动等细节,但更多的开发者在X11/XCB上层使用Gtk+/QtAPI进行应用开发。DisplayManager:简单理解就是看到的登录界面提示输入密码的地方。Explorer:这一层主要由一系列底层守护程序组成,负责监控硬件的状态,并向上层桌面环境和应用程序汇报,以便进一步操作。例如,常见的桌面环境包括网络、电源、磁盘、蓝牙、声音、键盘、打印等:以深度操作系统桌面环境为例,主要包括桌面环境的后台服务和守护进程,图形开发桌面环境提供的工具库、二进制工具、DBusAPI服务和桌面环境的UI界面层。后面我会讲到每一个细节。应用商店:主要提供系统的软件安装、卸载、升级操作,确保用户安全、便捷地管理软件,同时提供商店评论、评分等功能应用:主要包括深度开发的系列应用,合作开发国产应用,Android应用、Windows应用和Web应用,开发者在linux系统中内置了AndroidRAT,可以直接运行Android应用。为什么不能使用开源轮子?深度造了那么多轮子,为什么不用社区的呢?社区有很多技术,但是技术强大,能把一个应用的UI和交互细节做好的开发者很少深切希望十年内解决linux桌面问题,我们内部快速迭代几百个commits天,社区主导开发完了,鲜花谢了,希望能做出来然后吹牛,不想天天在社区里说这些。为什么开源社区做了十几年就做不好桌面?主要用户群体是开发者,大部分开发者喜欢像黑客一样把各种功能堆在一起,而普通用户只需要简单易用的产品,过于碎片化:大家不在一个地方,大家创造半成品产品互相打压,没有形成合力,到头来除了大量的半成品,社区里能比windows软件更好的应用不多(不多于50个真正可以与Windows平台相媲美的应用程序)。严厉打击新手用户。在大量真正的桌面新手用户离开后,大家已经不关心桌面体验的细节了。他们做得太少,说得太多,却付诸行动。10年会是翻天覆地的变化,不是每个人的时间。都很失望。开源社区擅长什么?开源社区适合远程协助和碎片化的东西,比如文档和翻译。Deepin社区在全球有超过300名翻译贡献者:https://www.transifex.com/linuxdeepin/public/,曾创建西班牙语一周翻译整个系统的Miracle开源社区适合投诉,我说的是客观的投诉,https://bbs.deepin.org/各种用户帮助开发团队在测试版中发现了更多的错误并且非常非常好的反馈表明开源社区适合打包移植,https://www.deepin.org/dde/desktop-transplantation/目前,深度桌面已移植到Arch、Manjaro、SparkyLinux、openSuse、Ubuntu、Gentoo、Fedora等发行版。国内技术圈偏见十多年来我在开源社区看到了很多国内技术圈的偏见,最主要的有:用自己的平铺窗口管理器安装X,鄙视新手用户:其实,玩过的都知道,有些配置需要一些耐心和毅力才能搞定。这些只能证明你比较能折腾,但折腾不代表你有知识有能力,也不是鄙视和嘲笑别人的资本,认为只会玩内核才是技术高手:人不懂Linux的人都这么想,很多开发者也是这么想的。真正开发内核的开发人员都知道,内核开发和应用程序开发与其他任何开发都一样。唯一不同的是调试起来更困难,也更复杂。只会开发内核的开发者,并不是最厉害的人。许多内核的开发必须配合应用和现实场景才有意义。不是我能编译内核就开始厉害了。我觉得做UI和桌面环境很容易:其实很多嘲笑做UI的人,甚至是一些开发者,我相信他们中的大部分人连XCB,窗口移动,甚至窗口阴影都不会画。出来吧,我在中国见过太多以无知为权威的喷子了。我希望这些人长大后能学会谦虚。其实每个人都是看功成名就来评判的。苹果应该是世界上折腾UI细节最多的公司了,但没有人说苹果只会UI。为什么?中国人喜欢打压还没有成功的企业,然后跟风吹捧成功的企业和产品。Linux要折腾:Linux早期的折腾对开发者帮助很大,但人都会老,会累。(如果不是为什么达拉斯黑客大会那么多大佬最后都用Mac,是不是因为他们没有你那么麻烦?),一旦你折腾完了Linux,就应该多花点时间学习新知识或者享受生活而不是一直折腾,然后鄙视不会折腾的人。通过上面的科普,大家是不是还觉得国产系统只是简单的换个皮呢?我觉得大家应该尊重每一位技术开发者,但对于那些根本不根据调查,而单纯根据对国内开发团队的蔑视而得出结论的人,我真的感到难过。希望国人根据事实支持好产品和团队,停止一切虚假攻击。以上内容来源作者:ManateeLazyCat链接:https://www.jianshu.com/p/e871723f9460