Wine 这支神秘的黑客团队是怎么建立起来的?
建议先转后看,绝对技术科幻小说的手感(不是,读感)
话说,那是 2013 年,12 年前,我那时候基本上就是 deepin linux 的超恐怖代码狂魔,一个人写了基本上所有深度的应用,侯哥(AKA,深度音乐的作者)是我最得力的左膀右臂,也是代码狂魔和泡妞高手,现在头发比我多。
那时候,公司主要分为 4 个部门,一个是我和猴哥的应用部门,每天看 Linux 缺啥应用就干啥应用,Linux 界的平头哥,不服就干。
另外一个部门(其实是一个人,也就是现在懒猫微服的 CTO)在干牛逼的 WebOS (简单来说比 ChromeOS 还早,还先进,整个 Linux 桌面都是 WebKit,界面都是在桌面上点一下界面,就会弹出 F12 窗口现场改 CSS,然后保存这样写的)巨牛逼(这次不写了,那个故事都可以写一篇),还有一个系统狂魔部门,专门从零构建操作系统包,其中里面有个大佬我们内部称为移动的 Linux 参数百科全书,任何包巨长巨长的参数他的手都记得,脑袋记不得,编译参数不可描述,手指一放在键盘上就会自动飞舞,Arch Wiki 有时候都没他的手指记忆牛逼(这个故事也下次再写)
咳咳咳咳,今天不是要说第 4 个部门吗?
系统构建部门太先进,普通人(99% Linux 高手)也听不懂,我就不讲了,你们真听不懂。
WebOS 桌面团队(人)太牛逼了,当时为了保密不能透露。
而我们两人的应用开发团队,虽然生产力暴打 Gnome3 弱旅,但是社区每天在那里 BB 我们,只会写应用。
所以,2013 年我们和 CrossOver 的中国团队,一起移植 QQ 到 Linux 上来,我们大概合作了一年,和当时 CrossOver 中国区负责人洪谦一起整,这家伙大学上的是理论数学,普通话虽然不标准,但是每天研究 MSDN API 和内存日志那个是个厉害啊,每天看内存偏移和寄存器跟吃萝卜白菜一样的,啃起来嘎嘣脆。
我记得最后搞 QQ 移植的时候,都把他整到武汉来驻场了,终于搞了一年发布了,那时候社区整个就轰动了,我们是第一个把 QQ 完整稳定的运行起来的,之前社区那些只会 BB 的人没技术可以搞起来。后面洪谦去了土澳搞金融,走之前还在广州酒家请我和吃早茶,那个早茶真是叹为观止啊,我第一次见吃饭是从早上吃到中午,中午吃到下午的,那一天把我撑的啊,洪谦说,吃撑了就喝茶,然后继续吃。
他走了以后,我说,我们自己整一个 Wine 团队吧,洪谦说可以帮我们面试一下(真哥们),你还别说,创业像我这样勤奋的人,上天真是眷顾,1 个多月,一个深圳的刘先生投了一封神秘的简历,一看 C/C++了得,Win32 API 很熟练,最主要工作是专业逆向蓝光协议的,这个人经验超过 15 年,简历写的朴素的不能再朴素,太符合黑客的简历了(不像很多技术水货,动不动写精通,那是写简历的大忌)。
但是我也不知道 Wine 技术如何呀,主要怕是东郭先生。洪谦大佬说,这样面试,我们请到武汉来。我们上午培训他一上午怎么在 Linux 下跑 Wine 和调试 Windows 程序的方法,下午给他出一个题,如果他会就招聘。
我说好啊,哪知道那时候洪谦把我们正在合作移植微信的题出给他,我们自己都还没搞定,就是微信自己有很强的反逆向能力,退出进程的时候多个线程在后台打攻防战,经常 Wine 一跑就开始各种随机崩溃,因为退出有多线程竞争条件,重现和调试极度复杂。
没想到这个刘先生最后一下午居然搞定了,果然聪明绝顶啊。
最后在刘先生的带领下,我们把 QQ、微信、百度网盘和前 20 的 Windows 应用都移植到 Linux 下了,所以现在 Linux 能跑 Windows 程序,90% 的代码都是这个团队写的。那些社区经常吐槽补丁怎么样,我总是怼回去,技术太弱不要在那里 BB,有种不要用。
直到我离开 deepin linux 之后,我约刘先生吃饭,我问他,你调试和移植 Windows 程序为啥这么快,动辄几十 GB 的内存日志,普通人别说调试和开发了,看完都是天书啊,因为那真是 16 进制的乱码啊。
刘先生告诉我两个秘密:
-
他说他用过 gdb,不适合调试这种超复杂的内存日志,所以他自己写了一个新的调试器,专门干 Wine 程序调试的工作
-
他调试很多功能的时候,根本不看功能和逻辑,只是先稳定重现 bug,一旦稳定重现 bug 后,只看寄存器的变化,从 bug 定位到寄存器,再从寄存器反向定位代码,因为寄存器是固定的,代码函数也是固定的,所以不管是什么原因,肯定是那行代码出了问题,一般盯着那行代码 10 分钟就可以倒退出 bug 的原因了
所以,那些鼓吹 AI 的人真是无知,AI 只对那些大量重复的低级问题(比如前端)有生产力,对我说的操作系统、编译器、Wine 领域这种平常一篇文章都没有的知识,AI 没见过,AI 会写代码吗?