我记得我好像在哪里回复过类似问题,不过我没有搜到,所以就再说一次,下次就能找到了。
这是「软件中心」这个概念在 Linux 下的缘起,是 openSUSE 项目发起的:https://forum.suse.org.cn/t/opensuse/1369/21
而且我们有一个在线的「Appstore」,独一无二的,整合了 OBS 的 openSUSE Software software.opensuse.org/packages。明白了吧。这个别的发行版似乎没有(话别说太绝对避免被打脸)。
至于桌面版的 Appstore,你去 google 搜「openSUSE appstore」,你会发现有很多人都有跟你相同的想法,但最后都放弃了。为什么软件中心的创始人反而没有自己的软件中心呢?我觉得原因有以下几点:
- 我们不需要软件中心。
如果你把 openSUSE 用得和你的 Ubuntu 一样熟,你就明白,嘿,还真不用。
openSUSE、Fedora 和 Debian 从来都不缺顶级程序员,从来都不缺有点子的人,从来都不缺钱。这么跟你说吧,如果真的需要软件中心,哪怕是 openSUSE 官方不开发,我只用中文社区现在公开募集的经费就能雇个熟人移植出来,因为 Linux 下现在不缺软件中心:GNOME 有、KDE 有、Ubuntu 有、Elementary OS 有、Deepin 也有。Deepin 的人还非常鼓励我们来移植甚至不惜提供帮助呢。
不做的原因很简单:没有这个需求。
- 我们不需要评分评论系统。
评分评论系统自然要分成两种评论:正面评论和负面评论。
正面评论,没啥用。因为原理上自由软件开发者不需要看,他开发软件的本意是为了满足自己,只有卖钱的才需要维护名声。自由开源软件界决定你声望的是你的活跃度和贡献量,而不是开发了一个多么牛 X 的软件。fcitx 是由薛大大开发的,牛 x 吧?但 openSUSE 用户绝对认为我比薛大大牛 x,至少英文社区这么觉得。声望这个东西每个人的都不同质,没法比。软件本身只占自由软件社区的很小一部分。在评论栏里眉来眼去互相点讚不是 Linux 风格,Linux 风格是:fix the damn shit。说清了就是干活,你的贡献自有人来感激,激励他同样贡献社区,你想说好话我还没时间听呢,多修两个 bug 比什么都强。另外真正的好 Linux 软件从来都不缺社区和表扬。
至于负面评论,更没啥用。简单说吧,你开发个软件,是为了看一屏幕的人骂你么?是为了寻找快乐对吧?所以这种概念就是违背自由软件精神的,我开发,因为我能,因为我碉堡,不是因为我在乎你,你专门开个骂人的地方随便你呀,你说好的我都不在乎,还在乎差的么。反馈?那有邮件列表有 bugzilla,Linux 界有句名言叫:bug 永远属于 bugzilla。中文可能还有多一个论坛。你跟我私人反馈 bug?对不起,我有自己的生活。
另外这种评分评论系统的概念出现在发行版完全就是错的。苹果需要是因为苹果软件大多是闭源开发的,没有上游反馈通道。自由软件每个都有自己的社区。发行版只是拿人家社区的成果来打包整合,你反馈到我这级,没用。
- 我们不需要审核上架。
Appstore 自然需要什么能在里面,什么要在外面。什么都在里面那不叫 Appstore,那叫软件管理,跟 Linux 下的所有软件管理都是重复的,Linux 有一个哲学就叫:不重新发明轮子。汽车都有了,你再发明轮子有意义么。因此就需要人来决定,但 Linux 本质是自由的,你觉得不需要放的我觉得一定要放,这活儿没法干。而且这种活让开发者来干,浪费了。让用户来干,他不会评估。雇人来干,不值。另外自由软件的本质就是能自由分发,你这是控制。自由软件下的所有控制行为都等于抽刀断水,越这么干,老的软件管理越死不了,你越显得重复。
- 我们不需要商业软件。
openSUSE 是一个没有盈利目标和压力的自由开源操作系统。我们不是想钱想商业模式想疯了的 Canonical。我们有不需要想钱就进腰包的 SUSE 每年提供花不完的经费。你商业软件想来,我们还不愿意要呢,除非你像 Adobe Flash 那样成为业内标准人人都离不开它,才有平等商榷的资格。或者打个比方这么说,自由软件和商业软件就是黑白两面,白道老大和黑道老大能平等对话,白道老大是不搭理黑道小弟的(讲原理总是太无情了。。。致力于支持 Linux 的中文免费软件我还是能为它们找到后门的)
排除了以上几点,软件中心的元素还剩下以下几点:
- 软件排名
同上。Linux 下就不需要软件排名。所有的软件都是平等的。好用不好用只是你个人的选择问题。公众选的多不代表好,IBus 一定比 Fcitx 评分高,因为国际上就知道这个。另外在 Linux 下用户的软件排名什么都不是,简单说 Distrowatch 下 Ubuntu 排名永远比 openSUSE 高,但你要信那个你也不会过来了。
- 自动解决依赖关系
无论是软件中心还是软件管理,最终都要落实到 zypper/apt-get 这个层次,区别只是把界面藏起来和显示出来的区别。但如果藏起来好,当初就不会做出显示来,程序员在不领工资的时候可比你想象得懒多了。现在为什么藏,是因为某些引领这个潮流的发行版的用户普遍比较蠢,就是这样。Linux 是给乐意动脑子的人用的,这就是它的特质,哪怕你占领 100% 桌面平台这个特质也不会有本质上的改变,某 U 的做法个人觉得叫:有病不医怪医生不够迁就你。
另外你还得明白,有些依赖关系能够自动解决,有些就不适合自动解决,就好比我曾经说过的:你会用复杂的东西去用简单的叫「简洁」,完全不会用那叫「笨」。你把不适合自动解决的都尽量自动解决了,那叫人性化,完全全自动解决那叫「设计不合理」,再藏起来那叫「掩耳盗铃」。
比如这个帖子里我回复的:[ 已解决 ] 新安装的系统一键安装多媒体解码包就出现依赖关系问题,还好有多种解决方法!
- 软件截图
这个 OBS 上有,而且我们秉承不重造轮子,多与社区合作的理念跟 Debian 用的是一套。反而是跟 Debian 源出一枝的人重造了轮子。这要人如何是好。只能摊手。另外我觉得还有就是,如果你真的需要某个软件的截图,你不是出了软件中心就找不到。而且 Linux 就是一个埋头干活的料不是出 mockup 的料,包括 Linux 下的美工都是这样,所有 Linux 均是如此。Canonical 不是,因为它是商业公司,它做 Ubuntu 就是怎么赚钱怎么来。
好,你会发现只剩下:
- 安装软件
是如果 openSUSE 下开发软件中心需要做的东西。其它要么重复、要么不需要。
但 YaST 已经是最牛的图形化软件管理程序了,该有选项有选项,该自动化自动化,软件逻辑已经无懈可击(好吧,如果你在用 13.1 那是特例,因为我们 YaST 开发团队刚开发了机器人把一百万行代码自动从一个 c++ 的衍生语言转换到 ruby。大的毛病没有,小的抛光欠缺一大堆,这是我都批评的,但什么都需要过程),zypper 已经是最牛的命令行软件管理程序了(连 RPM 的创始人都在用,对 yum 是 libzypp 后端)。别跟我提 apt-get,我能黑死它,简单说一条:你经常安装软件时发现下载错误,因为源里有,但它没有刷新源,给你弹的提示就叫请刷新源。这种愚蠢配不上超级牛力。
另外软件中心还有一个硬伤就是:Linux 设计思路就是模块化的,它需要的就是包管理系统,和它配的只有这个。因为,Linux 下不是所有的软件包都是「软件」,有的叫「开发包」、有的叫「调试信息包」、有的叫「本地化支持包」、有的叫「用户手册包」、有的叫「函数库包」、有的叫「虚包」、有的叫「艺术作品包」,我想我不用再举例了。承载软件的软件包只占 Linux 的一小部分。在这个问题没有解决前(也解决不了,不然就不叫 Linux 了),学习 Mac 那种只能叫四不像。其实即使 Mac 那种也完全不适合 Linux 的传统使用场景,比如:
https://forum.suse.org.cn/t/opensuse/55/1
这个帖子里的奇瑞艾瑞泽就持续黑 Mac 软件管理 20 年。我们的历史比 Mac 悠久,我们甚至不是以取悦用户为自己目标的。
当然我说的只是我今天想到的,以前想到的可能没有写完整,其它人在「为什么 openSUSE 不需要软件中心」这个话题下也会有各种不同的想法。但是我觉得:鞋舒不舒服只有脚知道(习大大的名言),好不好用,用了看,至少我用 Ubuntu 虚拟机的时候,我在软件中心里从来没有找到过我要的东西,而且真要好用,omgubuntu 这种 ubuntu 的脑残粉也不会在什么「安装 Ubuntu 后 20 万件要做的事」这样的脑残文里推荐安装新利得了。