我是 Anduin,AnduinOS目前唯一一位维护人。
最近偶然看到了 AnduinOS 已经抵达了 distrowatch的trending榜单,并且我的服务器每天都被大量多线程下载挤爆了,我实在是倍感惊讶,感慨自己何德何能……在看了看许多社区的评价和意见以后,我还蛮想借机聊聊这个系统的构建历程和背景故事,顺便和社区好好交流交流的。
首先,我确实是微软的员工;我有全职的在微软做工程师的工作(虽然不是Windows相关),所以目前我的经济状况没有什么问题。因此这个项目我暂时也没有打算商业化。当然,从更本质的角度来说,它也并非是商业项目。这纯粹是我花了一下午的时间搓出来的玩具和练习罢了。
我经常沉浸于开发一些,一键配置脚本(我相信大量Linux爱好者都会这么做),毕竟每次在重装完系统后,手动对其进行个性化配置是非常痛苦的一件事--我需要反复操作半个小时才能符合我的使用习惯。自然我在微软使用 Microsoft Windows,我也发现 Windows 的交互逻辑确实效率是很高,仅仅只是它的Shell太容易崩溃和遍布牛皮癣一样的广告罢了。
而显然 Linux 的自由允许你几乎做任何事情。我在业余时间全部都使用 Linux,同时编写一些自动化。我和朋友之间也经常分享交换我们的自动化初始配置脚本。尤其是我也是 Arch 和 NixOS 用户,使用它们也时刻提醒着你:from scratch做事情,同时要注意你曾经做过的事情的历史。
构建一个发行版我发现确实不难,或者说,似乎每一位 NixOS 和 Gentoo 的用户,本质上都是发行版的作者。他们都能够在努力使用形式语言描述自己需要的操作系统变成的样子,从而让自己个人的终端设备更加趋近于一种“无状态”。
抱着这种想法,我觉得我大可以直接修改一下Ubuntu官方的iso,然后重新压缩一下,就得到了自己个性化定制过的发行版了。很多人批评这个AnduinOS几乎没有做任何工作,只是换了个主题。但这正是我要的事实效果。实际上我只是和无数普通Ubuntu用户一样,想在业余时间舒服的使用Linux,仅此而已。同时有趣的是:很多人也认为这反而是优点,因为AnduinOS甚至在 /etc/os-release 里都标记自己是 Ubuntu,它就是 Ubuntu,这就是为了不引入太多新的概念,来尽可能重用 Ubuntu 的知识和生态。
当然,我最终还是学习了 Debian 的构建工具链,例如 debootstrap 等工具来构建它。AnduinOS 的源码其实更像是一个封装整合器,用户可以自己将自己的logo、dconf等放入其中,然后得到属于自己的 iso。我很骄傲它有一份很好用的构建器,而且目前还算容易维护。
所以,AnduinOS 并没有花费我太多的精力,或者说是我茶余饭后的消遣项目(很多人都知道其实我主业是开发 .NET 应用的)。反而奇怪的事情是:我的主业总是无人关注,而消遣项目总是非常成功。这总让我觉得十分离谱,就像我拿到 Star 最多的项目是一份菜谱。
AnduinOS 能够获得社区的认可和关注我是非常惊讶的。我觉得它成功的秘诀正是在于它没有做什么工作,很多人只是好奇这样一个有着 Windows 主题的 Ubuntu 罢了。我知道这种成功势必是短期的,我也不应该因此骄傲。我站在了太多巨人的肩膀上,以至于太多问题已经都解决很好,我只是封装整合了罢了。
最开始的时候,我并没有为它预装应用商店,甚至很多人主要批评于此。其实很多人过多的猜测了我为什么不预装应用商店,他们可能想的有点儿多了……完全没有那么多复杂的猜测和顾虑,纯粹是因为我自己个人不需要罢了。就像我刚刚提到的,这是我没打算花太多时间,制作的给自己使用的 iso ,只是顺便分享给了社区罢了。它能满足我自己个人的需求对我来说就非常完美了。当然,如今它预装了 flatpak 也是正好我个人的需求。虽然 flatpak 也带来了很多问题(例如应用很难选择主机上的文件),但我也很乐意使用 flatpak 安装一些我未知行为的应用,让它有一层不错的隔离。
更多的原因其实还挺多。我在构建的时候也学到了不少包管理方面的知识。其中让我认识比较深刻的还是,现在无论是 apt、rpm 还是 flatpak、snap、appimage,都不能完美的解决应用依赖关系和版本的可重现性的问题。我仍然对 Nix 充满了敬意。或许有一天我完全投奔 Nix 以后会使用 Nix 来构建我自己的操作系统吧。
很多人问我为什么不接受捐款?我是如何盈利的?有没有商业化的打算?严格来说这些问题我都没有想太好。毕竟对我来说,一方面它不是我的主业,我也没计划以此为生。我会每个月抽几个小时的时间来维护它,仅此而已。另一方面,我也有本职工作。或许我会考虑在未来面向企业提供一些基于 AnduinOS 的解决方案,但我不会因为这个而让 AnduinOS 混合太多不应该属于它的东西。它的诞生始终保持着最初始的目标:给我一个让我对主题感到习惯的 Ubuntu,仅此而已。
目前在疯狂的世界格局的变化下,我总是随时感觉自己可能会丢掉工作,毕竟中国和美国的关系简直每天都在发生变化。但对我来说我倒是不是很在乎工作这件事。作为一个工程师,丢掉工作最多就是刷几个月算法题面试下一家公司罢了。AnduinOS 或许可以提供一些企业的技术支持,或是我自己定制一些设备玩玩,想挣钱的办法还是有的。有一些风投机构想为此投资,我大多是拒绝的。我跟他们说这不是商业项目,是我自己业余时间乱搞的,没前途的。
我还注意到很多社区对AnduinOS批评,说它是来自中国的,是邪恶的,会收集人的信息并上传给党的!我认为和阴谋论者是无法沟通的,因为阴谋论无法被证伪。但毕竟我提供的是一份源码,用户大可以自己去运行这份源码来自己得到一模一样的 iso,我完全不可能,也没必要冒着被发现的风险去在里面安插后门。
当然,现在 AnduinOS 对很多人来说,最大的缺点就是它太新了,太年轻而不成熟,又只有我一个人在维护,很担心某一天突然暴毙或我无暇修复 bug。这担心毫无疑问是合理的。不过目前考虑到我生活还算整齐,维护它需要的精力也不算太多,我还是会坚持工作下去。如果有一些赞助,或企业的合作机会自然就更好了,说不定我可以全职去维护它。
相反,它今天有趣的故事也正好说明了,一个闲暇业余时间维护的操作系统,说不定还更加吸引人。因为就像我所说:它不是商业项目,它是兴趣爱好。它目前没有任何理由去往里加入恶心人的东西。我想我最应该做的,就是保持这份本心吧!
感谢社区的支持!
至于 WinGet 这种形式是不是像你说的“做的不好”,我感觉这不好说。
先说它只是“索引”,下载全都是从上游获取这点。
然后你说 WinGet 形式依赖管理很差。 我的这种做法说到底还是 apt 仓库,借助 apt 也能实现一定的依赖管理。并且现实是很多软件厂商也知道Linux上依赖比较麻烦,也在尽量处理好依赖做到一个单体 deb 完成安装,有需要的依赖一般也都是仓库里有的。最起码文档中官方仓库外软件都是这样,所以我觉得不用过于纠结这个,保证还在维护中的 Debian、Ubuntu 都能用就可以了。
你要是实在不喜欢这种形式,我看你有镜像 Ubuntu 仓库,应该也是有足够服务器资源的,你可以看里面的爬虫脚本自己建一个自动化的普通仓库。
关于应用商店(包管理),我想推荐一下我的 apt 软件源。https://github.com/wcbing/wcbing-apt-repo
现在AnduinOS的方式是收录了一大堆软件的安装方法,其实不少都是去 get 官网的 deb 或加 apt 源,以至于你说如果做个相应的包管理器是“相当于搞了一个winget类似的东西”。
正好,我这个仓库就是借助 APT 实现类似 WinGet、Homebrew Cask 等仅提供仓库索引的效果的这么一个“安装索引器”,你可以看一下。
这篇文章展现了AnduinOS开发过程中的深度思考与持续改进的精神,尤其是在界面设计和应用管理方面的努力令人印象深刻。看到团队能够从Windows的设计理念中汲取灵感,并将其融入GNOME环境中,体现了对用户体验的高度重视。同时,面对包管理和应用商店的挑战,选择开放用户自主权也是一种务实的选择,毕竟每个用户的使用习惯和技术偏好都不同。希望AnduinOS能在未来继续倾听社区的声音,在保持灵活性的同时,逐步完善其生态系统,为用户提供更加无缝和直观的操作体验。
这篇博客介绍了作者构建Anduin OS操作系统的过程和思路。作者选择了基于Debian的Linux发行版,并融合了Ubuntu的软件源,以实现一个稳定、易用的操作系统。作者通过自己的尝试和实践,逐步搭建了Anduin OS,并解释了其中的一些技术细节和挑战。
博客最大的闪光点是作者能够从零开始构建一个能够安装、启动和使用的Linux发行版,并且通过自己的努力和创新解决了一些技术上的问题。作者的思路和解决方案都很有创意和实用性,尤其是通过魔改和打补丁等方式来定制和优化操作系统。
作者在博客中提到了一些可以改进的地方。首先,在安装器和主系统的构建过程中,作者面临了一些复杂和繁琐的问题,需要进行大量的hack和调试。这可能导致代码的可读性和可维护性降低。建议作者在代码编写过程中注重代码的结构和可读性,以便于日后的维护和扩展。
另外,作者在博客中提到了Anduin OS的应用商店问题。作者认识到应用商店对于一个操作系统的重要性,但目前的解决方案还比较简单,只是一个网页收录了一些软件的安装方法。建议作者可以进一步改进应用商店,提供更完善的功能和用户体验,例如引入包管理器或者与现有的包管理器进行集成,以便用户能够方便地安装和管理软件。
总体而言,这篇博客展示了作者在构建Anduin OS操作系统过程中的经验和思考,作者的努力和创新精神值得赞赏。同时,建议作者在代码的编写和应用商店的改进方面继续努力,以进一步提升Anduin OS的质量和用户体验。