Skip to main content

Linuxer怎么直面内心的挣扎?

为什么今天要写出来?

为什么是今天要写这样一篇文章?这篇文章是我混迹linux世界这么久一直想说的很多话的集合,从年初就一直想写一篇这样的文章,苦于当时脑袋里面都是只言片语,并不成系统,再加上我一直面对开源社区很多看不惯的做法一贯都是怼回去的做法,比如在知乎上和各路妖魔鬼怪狂撕,事实证明互撕会导致自己智商和情商降低,远不如一篇系统的文章更具说服力,就像我用超长文《深度桌面操作系统架构设计》放到知乎上以后,无谓的口水都要少好多。
所以这大半年写文章和代码时一直在构思怎么理性而又饱含深情的 “胡说八道”, 直到今天在看《火星崛起3》的时候,看到戴罗在自己最脆弱的时候面临最强大的敌人时,对自己最信任的战友说的话:
... 问题就出在这里:我一样不知道怎么打赢这场战争,也不会假装自己有答案。可是我也不会就这么应了高古斯都的预言,什么计划都没有,直接带领人类走向混沌。正因如此,我们需要贾王这样的盟友,而且不能走恐怖分子路线,必须召集真正的军队 ...
这段话之前,戴罗和他最亲密的战友打得不可开交...随着最激烈的战斗画面脑补到戴罗的突然降温的这段话,突然这篇文章之前零零碎碎的构思突然就理顺了。
更加明白了,怎么用一种反常的理性来阐述我内心的愤怒,更能让你们这帮技术高深的 ”高智商混蛋“ 能够不带着抵触情绪耐心的看完另外一整篇长文,哈哈哈。

这么多Linuxer挣扎的来源?

每一个Linuxer都是折翼的天使,都是一个智商超级高的善良人,至少最开始学习Linux的时候是这样的
我玩Linux十几年了,代码也写了很多,虽然还没有那么多开源的前辈的代码多胡子长,至少也算什么神鬼蛇神都见过的,从内心一直在想一个问题,在现代互联网和通信异常发达的时代,大家都学的都是几乎一样的Linux知识,为什么国外的开源发展的如火如荼,而且大多数Linuxer乐在其中,而国内的Linuxer大多数都比较艰苦,在面对互联网块钱快餐理论的狂轰乱炸下,发展的越来越...怎么说呢?没有希望
就像昨天有一位朋友关心的问 ”深度最近怎么样?”,我完全知道朋友在想什么,长时间的沟通和了解情况下,询问中透露出一丝丝常规式的关心,我想了半天,最后打了一句 ”哈哈哈,还活着 ;) ", 我想这句饱含深情的话最具幽默感,果不其然,朋友发了两个”哈哈“过来。我想这种感觉不光是deepiner有这种感觉,很多中国做开源的单兵英雄和小而美的团体都生活在这种氛围中,在众人皆快我独怪的大氛围中艰难的努力和坚持。
从经济发展和物理规律来看,本质上的原因是,开源运动这种纯粹精神领域的折腾是要建立在足够的物质条件上的,人总是遵循:“长时间教育学习→在社会上活下去→活得好过上理想生活→钱赚的多了生活无聊了找点乐子” 的规律去折腾这一生的。一个人和一个社会只有经济发达到一定程度,让人完全忘记 “活下去” 的本能威胁后,人才会毫无危机感的去 “玩” 开源。
在物理规律之下,当下的中国开源的主要矛盾是:
一个长不大的大男孩好奇探索世界初心和一个有嗷嗷待哺小朋友后被迫当父亲的强烈责任心之间的相互矛盾
这种强烈的、不用负责任的、主动探索的好奇心遇到那种同样强烈的、每天都要想家人生存的、被动的做不喜欢事情的现实冲击,造就了一大批 “具有社会主义特色中国IT宅男” 的自然景观。
我相信大多数Linuxer在第一次读《地下》、《大教堂与集市》、《黑客与画家》、GNU历史、Linux开源运动的时候,都会被世界上最顶尖黑客键盘敲击声背后那种纯粹的、发自内心的、绝对公正和自由的伟大远见以及无畏的英雄气质所深深震撼,看着千万行的超大软件工程就像集市一般不可思议的构建起来后,自己也多么希望参与到这场全人类的伟大事业中,就算自己最后成为不了大师,做开源和自由软件本身也能在养家糊口前提下, 不违背自己最坚守和最看重的良心。
我相信大多数Linuxer都是从当初最真实的震撼和坚守到今天的不论好与坏...
我个人来看,今天中国大多数Linuxer挣扎的本质在于:
内心的理想世界和个人能力无法改变世界带来自我受挫的矛盾

怎么从挣扎变成高智商混蛋?

如果一个社会和一代人主要的矛盾不解决,就会上升成为一种社会问题,至今仍然相信和坚守开源的你们应该也可以看到,中国开源社区并没有衍生出足够多的回归内心和开源本源的开源中坚力量,而是在整个社会的浮躁、鼓励享乐鄙视基础科学研究、一套套互联网的赚钱论把一代人的无穷欲望深深的撩起来了,你内心越喜欢看黑暗,互联网快餐就以最快的方式造黑暗供你“享受”。
中国的开源不是像黑客马拉松那样大家想象的越来越多了,而是越来越功利心了,催生出一大帮为了赚钱和吸引眼球的技术人放弃专研,天天把简单的道理吹得天昏地暗,一大帮郁郁不得志的人,从开源爱好者变成 “高智商混蛋”,不做贡献,只会天天吹牛,开键盘会,断章取义的评论所有来抬高自己,却总是把自己从自己的理论中排除在外。
就像文章最开始说的那样,我不想纠结混蛋如何如何,我只想像柴静的《苍穹之下》那样,分析背后的现象和原因,看看能否从原因走到一些深入思考的地方,给大家的脑袋里面塞一些不同的声音,如果能够带动一部分实干家加入开源运动,也算是不枉写那么多代码和文章,没白活...
从现状看,中国开源社区中人的分布呈金字塔型:
  • 最底部的是大多数学习不努力的人,不论做开源还是其他,都拿着自己的不努力和逻辑不通当成最伟大的借口,伸手要一切自己想要的东西,如果有一天不如意了,就只会在网上用键盘自导自演的提出虚拟的场景和YY世界来证明自己是对的,而别人都是错的
  • 接着是一部分心理受伤害者,不论是小时候的不如意还是社交上的障碍,选择开源更像开源对自我封闭和自我孤独的一种心理寄托,自己通过后天的努力学到了一部分技术,能够养活自己,同时希望通过技术辩论来构建一圈保护自己的领地,喜欢在技术上和别人争论的天昏地暗,浪费了大部分时间都在争论上,与其说是爱好争论,还不如说是为了用技术保护自己的一种防御手段,如果这种防御手段再加上 “你不用自由软件你就是垃圾” 的宗教式的强迫症,就更令人讨厌了
  • 极少数人,异常专注的努力后,既养活了自己和家人,又获得财务自由,在中国这种儒家思想、权威不容挑战的社会氛围下,大多数人选择了另外一种与世无争的生活,往往随着物质生活达到一定程度后,在开源世界销声匿迹,甚至不再做开源事业,用一种更回归自然的方式的宣扬自己最初对开源精神的理解
  • 世界级少数的天才,我认为开源社区的领袖力量的有两种类型的发展方向,一种就是开源大牛型的,创建了世界伟大的开源项目,99%的时间都花在写代码上了,认为代码是诠释自己思想最好的形式,很少把自己除代码以外的思想公开讨论,更不用说和外界讨论了。另一种就像RMS一样,技术上和思想上都极赋远见,但是因为他个人太耀眼,观点很难被接受,这样从技术上和思想上都能够影响世界的人慢慢的都快绝种了
从开源社区的人群分布来看,真正有实力能够影响开源社区的人要不是归隐桃源、要不就是专注代码,真正技术和思想上都有独立思考不人云亦云的领袖型人物几乎不存在,而在开源社区中发声的更多是,教条式的理解自由软件用技术压迫别人和自己不努力键盘党传递负能量的人居多。而相对于技术用户而言,要多上万倍的非技术人群要不就是被气走了,要不就是看笑话或者看不懂走了,非技术人群参与开源运动极少。
不得不说,中国开源社区现状一句话就是:
装逼吹牛的人居多、真正的产品用户很少、能够给开源社区带来推动的实干者极度稀少
非技术人群是推广开源运动不可或缺的力量,甚至是主力,可却因为上面的情况导致,开源运动演变成技术用户自私的守护自己个人爱好的领地,甚至故意排挤非技术用户加入到开源社区。

我在deepin的每一天都在思考 “战争”

我在deepin工作的7年多,我大部分时间都在战斗中,有时候也会很颓废,颓废的时候就自我开玩笑问我自己我在干什么?我自己回答:
”我在思考怎么打赢一场实力悬殊的战争“
在知道打赢之前,我看到的战争对局往往让我都感到绝望:
  • 微软和苹果更懂普通大众在想什么,而开源社区连合格的产品经理都鲜有,更不用说站在用户同理心去理解用户的痛和花时间做真正的产品
  • 微软和苹果造了成百上千的应用航母舰队,形成全方位的立体战斗力为它们自己的技术和商业护航,而开源社区却教条的用KISS原则针对某个开发者造了一艘初级的应用木船,都要用狭隘的、自私的技术人自身利益角度去口诛笔伐
  • 微软和苹果知道利益分享才是生态发展的帝国基石,而开源社区大多数开发者在不理解商业本质的情况下,却还在为哪个技术更精巧而你争我斗
  • 微软和苹果知道上千人团队开发的力量,而开源社区却只相信英雄单兵作战,可惜英雄也会老,英雄精神却后继无人
  • 最可怕的是,巨人在苏醒,用开源的模式来剿灭曾经它们看不上的一星半点’开源反抗军‘
如果把开源运动和传统软件的闭源现状当成一种战争革命的话,现在的开源社区状态最多就是游击队,在某些零散的领域造成了星点袭扰,面对基础设施、物质后勤、领导统御、生态联盟更加成熟和健全的微软帝国,开源真的造成了动摇和威胁了吗?
就连这几年被开源社区当做无脑宣传的安卓真的达到大家YY的理想国了吗?不论从技术还是生态发展上都达到了吗?一点都不:
  • 技术上,从开源技术人YY的Linux构建的手机操作系统到安卓内核从Linux主分支中彻底剥离和抛弃,安卓真的从技术上大量回馈了Linux了吗?反而从商业成功到内核代码自成一体系
  • 从生态发展上,安卓真的带动了商业程序的开源运动了吗?撇开那些从所谓平台而不得不开源的各种框架外,这个世界上又有多少企业真正认同开源文化,而从道德自律上去支持开源运动呢?有多少呢?你几双手可以数完?
开源社区和开源运动在传统帝国和互联网商业下,还有哪些是自己独有可以生存的?恐怕只有分布式的开发模式了,而这最后一个引以自豪的开发模式,微软这个巨人已经在大力借鉴和反击了,linux server app、docker、虚拟化、vscode, 微软在带领它庞大兵力的开发军团再比世界上90%的企业更快的迭代速度,在拥抱开源以及开源开发模式。
最令我害怕的不是微软这个巨人的觉醒,而是开源社区自身这种死不了也活不好的天然混沌,很多人说开源代码让我们可以站在前人的肩膀上发展,减少代码重复。
而这么多年我看到的确实另外一番景象:
因为力量不集中和个人开发者的资源和精力不够,大多数开源项目都是在现有大项目(商业公司背后开发)的基础上小修小补或者fork一些小项目供自己练手,当自己精力和资源不够时,一个小项目就中途断了,然后等下一个学生学习后再次折腾类似的技术。
对,因为开放源代码,我们折腾的时候不用自己造前人的代码,但是这个世界上真的有多少超大的开源项目不靠商业公司雇员,纯粹靠开源模式长久发展下去的呢?
在我看来,开源社区最开始的大规模分布式开发模式确实对传统的大教堂集中开发模式产生了巨大的冲击和创新,但是当大教堂(公司)也学会集市(社区)开发模式后,真正拼资源和黑科技的时候,现今的开源社区面临着后劲不足的挑战,而大部分生在开源社区的人却不愿意看到这一点,还在拼死嘴犟。
Tower的古灵今年在WHLUG上说了一句话,我至今还在回味:
大教堂和集市是否永远都应该在对立面?
面对越来越多大教堂学习集市开发模式的商业趋势下,生在集市的这些开源个人英雄们是不是应该在更广阔的视角去思考开源的未来呢?
说实话,我更害怕将来的大教堂军团会用集市战术把开源社区的这些残存的游击队剿杀,更希望开源社区的每个人用更广阔的视角(并非只是技术)去审视未来,集中资源不要内耗,造一些真正的杀手锏武器来对抗大教堂军团。

未来怎么走?

生在开源社区,我了解开源社区的优点,也了解它的缺点,正是因为了解的多更感到害怕,下面是我个人对开源社区的建议,我分为感性和理性两个方面,感性是我看到和担心的地方,理性是我以及deepin团队正在做的事情。

感性的建议

感性的建议给开源社区的每个开发者们,这些话说出来可能很难听,或者很难接受,但从我个人的角度看,却无比真实,如果你觉得被冒犯了,请你不再生气的时候再看一遍,希望你能够理解。
除了技术强大外,我们不能变成只会电脑的傻子
现在这个时代,在我看来,大多数人的知识和认知被同化的太严重了,尤其是开发者。为什么这么说?我亲爱的开发者们,你们每天都会看各种API文档、技术原理文章,定期都会主动看计算机专业书籍。但是从个人视野和更广阔的方面看,你们多久会看一本非计算机的书籍呢?多久会和你完全不同出生或背景的人深入探讨交叉科学的问题呢?而现在的互联网时代就像一个快餐连锁店一样,不断的烹制一代又一代的快餐和理论,让所有人放弃自己独立思考的个性,去追求各种互联网成功理论、赚快钱的方式、一套一套的套路解析,仿佛如果一个人,不了解现代商业和赚钱的套路就是傻子一样,而开发者这类追寻知识和一定要明白的人群却最享受各种商业模式和套路解析的文章,殊不知知道了理论如果不认同商业的本质和商业带来的牺牲外,除了变成吃饭时吹牛逼的谈资外,并不会给开发者带来快钱,反而会让开发者过得困惑和浮躁无比。因为这个时代塞给开发者太多本不属于他们这个群体的知识、套路和生活。而我认为开发者是介于科学家和艺术家的交叉艺术,开源开发者更是在独立思想上更优秀的一群人。
如果大多数的开发者不看更多的书,从思想上对开源有更深刻的理解,仅仅技术是无法给开源社区提供更多元化的发展思路和创新。
给自由软件争气,不要成为披着开源精神的恐怖分子
曾经有幸和UCloud的老季吃饭,他的一句话我还是很受用的,大家都在讨论如果我这辈子生在美帝多好,而不要生活在中国,忍受这一切。他说:
中国很多地方还需要提升,还有很多问题需要解决,如果十年后中国还没有发生改变,我觉得我就白做中国人了
开源开发者都是非常有原则的人, 大家都想达到理想国,但是既然现在不理想,请不要愚蠢的只会释放愤怒,好好学习本身就是一种力量,如果我们大家都好好学习,好好努力,非技术人员永远都是敬仰创造更多价值让世界变得更好的人,特别是开源本身还带有很多神秘感。如果我们大家放下我们自己的技术炫耀、放下我们自己的技术偏见、教条压迫,用更开阔的视野去看待和包容更多事情,我相信及时在中国这种物质限制的社会条件下,开源都会有快速发展的时代。
接受屎一般的世界,你才能去清除这个世界的肮脏
这是我最近在想清楚的一点, 大多数玩开源的人都足够聪明,很多时候阻碍大家行动的不仅仅是逃避,而是想清楚以后不愿去脏自己手去铲屎的矫情,一整个群体的不好意思催生了更多无谓的自我失控,社区开发者自身的矫情才是开源社区发展的最大敌人。
明明一件事情可以快速做好,非要自己先YY一个牢笼出来,然后自己禁锢自己,觉得如果这样写代码,就会让某个用户在极限条件下出问题,而真实场景下,根本就不会有这样的事情发生,全部是开发者自己幻想出来的场景。
另外一个例子就是,比如Linux的依赖问题,如果要达到系统升级稳定和生态爆炸发展,就需要一种技术做到微软和苹果的那种runtime出来,runtime来保障应用API的稳定和环境稳定,操作系统本身只针对硬件和底层技术革新。要从Linux到达这种技术,就需要走很多弯路、workaround甚至是非常脏的方法,因为Linux设计时就是按照依赖方式做的。从技术上当然不好做,但是并不是做不到,苹果基于BSD就构建了成功的参考例子。但是从开发者本身来说,要不就找借口说很麻烦没有意义,要不就是从开发者自己是使用者的角度去反正这样做没有意义,或者系统升级稳定和隔离不是问题。
开发者是离强迫症患者最近的人群,开发者考虑问题的时候希望所有的事情都是井井有条,逻辑严密的,如果一条道路或者解决方案只要 “不完美” 或者 “不能解决所有问题” 或者 “不能符合自己的使用习惯” , 这条道路就是行不通的。
我就举几个简单的例子:
  • wayland这么多年,不去解决自身产品的问题、不解决高性能的应用场景(游戏或专用设备)的生态,天天用wayland就是理论性能最好的技术去吹嘘,甚至去咒骂英伟达,wayland技术最终如果无法促进先考的销售,没有钱能够养员工的情况下,谁有原生动力去做?难道redhat出钱去养英伟达的员工和家人吗?反过来,当年 Id Software 通过商业成功,最终还反而推进了DX在很多技术上的革新
  • flatpak和snap发展,软件包格式对于用户没有意义,唯有包格式的runtime+应用商店+系统升级,三个维度同时做好才能达到 flatpak 所设想的理想技术境界,因为用户只会为了稳定、易用、方便而埋单的,而不仅仅只是折腾软件打包技术
  • systemd 这么好的技术,能够让系统服务并行启动加速电脑启动速度,这种对用户来说就是体验好的技术却因为和老派开发者自己配置系统服务的习惯不一样遭受各种不公平的排挤
这几年我想清楚了,阻碍开发者个人发展甚至影响到开源社区整个开发观念最大的障碍就是,开发者需要接受一种由不完美到完美渐进发展的开发模式,如果大家做任何开源项目的初期,都是抱着完美的、鸡蛋中挑骨头、站着说话不腰疼的混蛋模式去看待问题,开源社区很难发展壮大,因为辛苦做事情的人总是被没有包容性的人吐槽得没有任何前进的动力。
因为世界本来就是不完美、有瑕疵甚至肮脏的,只有极少的开发者在屎一样的世界做清除和构建工作,而更多的混蛋只会站在一边嫌臭

理性的建议

理性的建议是从deepin团队自身的经验出发,希望可以给别的开源社区团队有一定的参考作用。
笨方法,只有航母舰队可以打败航母舰队
全世界都在笑deepin造轮子,我笑全世界的开发者都只看到轮子,却不知道deepin造的是航母舰队。
微软、苹果和安卓作为操作系统最大的航母舰队,他们有:
  • 几十款高质量的、设计统一的预装应用,我们就也把系统预装的应用造一遍
  • 它们有 .Net/COM 设计,我们就基于 FlatPak 发展runtime,把应用和系统彻底分开
  • 它们有系统原子更新,更新系统就像Docker一样快速和稳定,深度也要打造一套再也不用依赖软件包就可以轻松升级的系统
  • 苹果有牛逼的应用商店,深度也要做一套
  • 它们都有各自的杀手锏应用,深度也会做一套
  • ...
因为我们总有一天会让那些笑话我们造轮子的人自己笑自己,因为那些嘲笑我们的人,根本就不知道什么叫用户体验,什么叫战略布局,因为那些嘲笑我们的人,只会人云亦云的说那些老掉牙的理论,却从来不知道怎么做到商业成功。
更快的产品迭代速度和社区协作模式
微软、苹果已经发展了这么多年,人比我们多、钱比我们多、产品还比我们功能多,怎么办?
只有更快的追呗,他们两年发一个版本,我们就一年发三个版本。
他们还在犹豫要不要改东西的时候,我们就已经收集完建议、马上讨论设计方案都更新出去了。
没错,方法就是这么简单暴力,这么笨,闪电侠的速度来移动大山,越难的事情我们越兴奋。
建立更为广阔的商业利益共同体
既然微软和苹果最大围墙就是生态,世界那么大,一定能养活我们。
我们不怕在微软的市场上和他们正面竞争(丢什么都不能丢骨气),我们自己也要在更多微软没有涉及到的领域发展自己的利益共同体和生态(这个世界不仅仅是互联网看到的地方才叫市场)。
保持耐心、初心和远见
在赚钱的路上操练军队,要相信广阔的市场,一定会在我们自己足够强大时,让我们数十年的技术和产品积累在更多领域大放异彩。

星星之火可以燎原

一位阿里的朋友的话,送给看到最后的朋友:
既要仰望星空,又要脚踏实地

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...