从应用“妮乎”不遵守开源协议谈谈我国开源的现状

身在这个奇怪的地方,被迫做着奇怪的事情,来获取本该轻易获取的东西。然而就算这样,也不能避开一群被害不浅的人,来帮他们洗地。

我本以为我应该对这种事情是睁一只眼闭一只眼的。但发生了一些事情以后,我还是选择了站出来。或许我把自己看得太高,不过,谨慎一点好。


在酷安“妮乎”这个应用中因为开发者不负责任的举动、不遵守开源协议的行为的撕逼中,我可能不是最积极的,但的确是很活跃的一个存在。

“妮乎” 具体都干了什么,我大概列举一下就行:

  • 其开发的工具箱 “妮哩萌萌” 提供类似交流社区的服务,但是却使用明文传输用户名和密码;
  • 其开发的工具箱 “妮乎” 功能不华也不实(什么振动1次、振动2次),部分功能(如抢TIM红包,网易云音乐VIP破解功能)甚至盗用了开源项目的源码。之所以称为盗用,是因为使用了开源项目的源码却不遵守开源协议。

具体的可以去看知乎 “如何看待“妮哩萌萌”开发出的《妮乎 ARE YOUOK》不遵守开源协议?” 的回答。我的回答是 https://www.zhihu.com/question/55263859/answer/143661495


当然我这篇文章不能只单纯批判妮乎,不然就没有什么意义了。

现在国内的开源现状是什么样的呢?用 Shadowsocks 的开发功臣 clowwindy 的话来讲,叫做“社会人人都围着官转,人人都巴不得当官”。

这个是另外一个事件了,破娃酱的事情,也许经常翻越 The Girl Friend Wall 的人可能会知道。
破娃酱(Breakwa11)开发了 ShadowsocksR ,实现了 TCP 协议头混淆,但是拒绝开源,而 SSR 本来是在 SS 的基础上开发的、而后者是根据开源协议 GPL 开源的。后来那些纠葛我无需再提。最后 clowwindy 被 你懂得那啥 请去喝茶了,所有 Github 的动态被冻结在 2015 年 11 月;破娃酱最后还是把 SSR 开源了;现在 SS 和 SSR 项目依然在蓬勃而富有生机地继续发展着。对于用户方面,现在服务商卖 SS 的也有,SSR 的也有。
我本人对这件往事不置可否。我的个人看法是:BreakWa11 再怎么圈粉也好,最后他还算有贡献的——他至少开发了个 SSR,至少最后开源了;他还有一个用爬虫构建的项目 gfw_whitelist,PAC 用的。这和妮乎直接盗用、不尊重他人成果、毫无贡献,还是有一些区别的。

现在国内的各个手机厂商,不尊重 GPL 就算了,“把名字换成自己的”,还加点什么功能,然后加上 “官方、独家” 之类的字样。
比如小米的内核。众所周知,Android 内核是基于 Linux 内核的,然而 Linux 的内核是根据 GPL 协议开源的,所以各大厂商使用了 Android,就必须第一时间开源内核源码;但是小米宣称自家内核用了什么黑科技,所以拒绝开源。。。

在国内使用Linux内核的手机厂商有数十家,然而遵守 GPLv2 的仅几家而已,某些个人开发者更将自己修改后的内核作为私有财产,不仅不开源,还在代码中加入诸多限制,绞尽脑汁使内核只在自己指定的环境正常工作。用户并不懂什么是开源协议,所以这些人就会去拉拢用户攻击其他试图使他遵守开源协议的开发者。
在国内厂商中,开源这一块做的最好的是一加。虽然做得不好——氢 OS 发布 3.0 一个月以后基于 Android N 的内核才开源出来。但是,这总比其它厂商做得好——比如吧一加还开源了 device tree。看看传说中的蓝绿大厂 OPPO VIVO,连谷歌发布的 Android 安全补丁都不更新,还宣称安全,结果被 wuxianlin 这样的真大神吊着打。呃,跑偏了。

当然啦,大部分用户才不会管这些(不然为什么线下 OV 做的这么欢快)。
享受成果的人是不会去花时间去研究你是不是盗用的、有没有遵守开源协议,也不会去做道德判断,大部分人都是只要觉得好用就行。所以可以看到,这种环境下开源其实并没有什么优势,只不过为一些人抄袭提供了便利。在这种环境下最后留下来的都是这些,比如妮乎。

clowwindy 说过,他一直想象的那种大家一起来维护一个项目的景象始终没有出现,也没有出现的迹象。他在维护 SS 时,遇到的主动分享的贡献者并不多。

与 clowwindy 所想是不同的是,他被喝茶一年以后,SS 项目现在是活跃的,Fork 数我最近去看了一下已经 2.7k 了,全球都有人参与这个项目,为了各种目的(比如翻越限制,比如躲避审查,比如内网穿透)。
我认为我自己也是 Github 开源社区的受益者。我参与了我现在使用的博客主题的开发(这个主题的开源地址可以在 Footer 和侧边栏看到)——虽然贡献是微小的,但是项目老大 viosey 依然给了我 collabrator 的权限,我也很幸运能加入到这个项目的开发:我学到的不仅仅是如何用 ejs 开发 hexo 博客的主题,我学到的东西更多,比如如何管理一个多人协同开发的项目,比如 commit 信息怎么写符合规范便于追踪,甚至在和来自法国的小哥共同开发时略微提升了自己英语水平。
当然现在年轻的开发者都愿意开源的(比如我认识的 dalao 们,Aviraxp、Omico、iACN、PeterCxy、Trumeet . . . 等等)。但是 Github issue 却并不是那么景气——很多来报 bug 的人是以一种小白求大大解决问题,解决完就走人的方式来的。他们既不愿提供足够的信息(我们也不奢求日志,但是有的 issuer 提供了日志,我们找问题真的会简单很多),也不愿写一些自己尝试的过程供后人参考。他们很多连文档都不仔细阅读,所以弄出不少问题。

事实上,就以 Material 主题为例——老大 vio 喵是建立了挺完善的文档供大家参考的(而且我们参与者都是谁开发的功能就由谁写文档~)——但是依旧有很多小白进来提问题,而其中有的问题真的可以看文档就能解决的。我又不好意思留个 Please read [docs](https://material.viosey.com) 作为回答然后就 close issue(至少我觉得我和其它外国项目维护者不同,他们真的会这么回答然后 close 掉 issue 的)。
我以前做 ROM 时,发包帖会带上一句——“请仔细阅读这个帖子的每一个字,避免错过重要信息。如果做不到,就请大声朗读本帖”。我不希望任何文档需要带上这个。

不是我贬低什么,也不是我看不起什么,我真的是觉得最适合这个民族的其实是一群小白围着大大转,大大通过小白的夸奖获得自我满足,小白通过大大的幽默挑逗获得参与感。被迫闭源主代码库的魔趣就是这样,龙猪在贴吧和微博和用户们打情骂俏,在自己的魔趣社区搞社区经营。当然龙猪自己也和他带领的团队也是为魔趣写了不少东西的。现在魔趣暂时(希望以后永远是)是世界第一大安卓开源项目,希望国人能够争气一点。

像月光这种打包他人 device tree 和开源的内核源码,还恶意诋毁他人、污言秽语人身攻击的,的确又是中国扭曲的开源现状上的又一大块污点。
像月光这种打包别人东西搞什么 MOS,这和 RR、AICP、DU、SultanCM 之类的 ROM 性质不同。后者的上游代码也的确都是 CM,他们的项目会严格地附上 credits,甚至是 reference ,它们是互相促进的。大家都知道,少了谁都不行。这就是为什么 CM 解散以后 Android 会有这么大动荡的原因,不过这是另一个故事了。
跑偏了,回来继续说。大部分开发者是很低调的,他们愿意去自己潜心做一个项目,就算被侵权被抄袭也不会说什么。他们会觉得很难受,但是不会停止开发。。也有开发者受到用户攻击和诋毁的——Nubia Z11 社区的那几个喷子那次搞起来的就是——但是说实话,几个卷入的 romer 当时其实是在那里把这个当笑话看的。

在这种用户的群体存在,中国的开源现状就是玩笑。

我已经有一些明白到这个民族的前面为什么会有一堵墙了。国内的论坛和社区到处都是什么附件回帖可见,等级多少用户组可见,一个论坛一个大大供小白跪舔。不需要造墙,网民也已经地自发造墙——这些回帖可见、等级不足啥的不就是墙么?

当然,国内清流的论坛也有,比如 MAT BBS,近乎于无偿地让大家一起平等地分享 MyAndroidTools 的使用经验。这样的参见蠢喵大佬的《良心不易》)。

当然,正如我所说的,“大部分用户才不会管这些”,小白跪舔时也不会选人的,他们不会判断。不然就没法理解月光打包党的微博下面为什么会有这么多评论在那里跪舔了。

这和国外社区是不一样的,国外社区哪有这样的环境?重新提我之前写的那一段,在国外,遇到 bug 和 issue,会有人发帖挖坑,然后很多人参与研究和造轮子,造出来以后会有自己的经历分享。我觉得这才是一个技术向的社区应该有的气氛,比如 xda-developer fourm 就是这样的一个社区。在这个全球最大的智能设备交流社区,不论技术多高,任何不遵守开源协议的开发者都会被删帖封号。国内哪个论坛会这么干?也就一加论坛和 MIUI 论坛封过臭名昭著的月光的号罢了。


我自己也是华夏民族的后人,但我也知道,我的民族是一个造了几千年墙的保守的农耕民族。我不得不承认我自己的劣根性(鲁迅说过,也是整个民族都有的劣根性),也不得不承认我们有时候的确缺乏对别人的基本尊重,我们不愿意分享、喜欢遮遮掩掩,喜欢小圈子抱团,需要通过闭关锁国来获得自己需要的优越感。

也许我颇有些数典忘祖的感觉,但是不得不承认的确是这样。

国内的开源环境到底是什么样呢?大量开发者使用现成的开源的成果,却很少有人遵守开源协议。他们从上游 merge,却并不将自己的成果反馈回去,然后大言不惭地宣称自己的项目有多么多么强大,比事实上的上游(他们往往并不承认)牛掰多少,这与开源社区的精神背道而驰。更有甚者,如我文首提到的,毫无贡献、拿来就用,然后宣称是自己的成果(即使不是公开说出来,也是暗示性的影响。为数不多的人遵守 GPL ,更别提哪怕在 Credit 注明一下来源的了)。


尾声:在我写到国外社区那一段时,妮哩萌萌找到我,告诉我侵权的网易云和谐功能已经去除。所以我把我在酷安的那条动态删掉了。更新日志说是功能“已经失效”,Aviraxp 说是“因为你抄错了”。是不是这样,我也已经不想深究,人的确是会累的,但是在做自己喜欢做的事情和自己有义务要去做的事情,我希望我会继续坚持乐此不疲。写完一篇博客,梳理自己大脑里混乱的思路,其实真的能看开很多东西。
最后,推荐大家读一读 《自由软件,自由社会》Free Software,Free Society)。这本书的中文翻译在 Github 开源。

=========================

2017.08.14 更新:

昨天下午我在知乎看到妮哩萌萌开发者对我的回答下评论做出「表态」如下:

0000141.png

既然作为妮乎的开发者「表态」,我在看到以后很快对「表态」做出「回应」:

针对「表态」的第二条:妮乎使用的 Unblock163Netease 模块的源代码根据 GPLv3 开源,妮乎最早开源出来的源码使用 Apache 开源,不符合 GPL License。
针对「表态」的第三条:开发者不允许将 GPL 代码用于商业,QQ 进群收费是一种商业行为。
针对「表态」的第四条:妮乎之前开源的代码为混淆过的代码,并非软件源代码,违反了 GPL。而且,现在 stytool 开源的 Repo stytooldex/stytool 里面都是些啥?

实际上,我很早就没有关注这个事件了,甚至不知道这个声明最早诞生于今年四月。
不管怎么说,我的回应是针对「表态」本身,而不是针对开发者本人。所以,虽然今天下午我在知乎上的回答收到了评论,不过还是让这件事算了吧。
开发者既然已经发了声明,应该是已经端正了态度、正视这个问题。如果这样的话,对开源协议本身不完全了解和不懂得如何用 Git 在 GitHub 上提交代码是可以原谅的。。。

就这样吧,希望国内开源环境能好。以上。