很多技术开发群里,在技术论坛以及 GitHub 社区都炸天了,彩蛋变成了炸弹,圣诞节变成了圣诞劫。原因很简单,阿里巴巴蚂蚁金服旗下的开源项目 Ant Design,在代码中预埋了所谓的彩蛋。这个彩蛋是什么呢?就是一个带有积雪效果,有圣诞节色彩的按钮,以及一个“Ho Ho Ho!”的提示。代码和效果如下:
Ant Design,是阿里蚂蚁金服开源的一套企业级的 UI 设计语言和 React 实现,在 GitHub 上有着 38k+ Star,13k+ fork。我们从中就可以看出这个开源项目的影响力和使用量有多大。
而这个彩蛋预埋在代码之中,在 2018 年 9 月 10 号提交的,代码会实现的功能就是:在 12 月 25 日圣诞节这天会给所有的按钮增加积雪效果并增加 Ho Ho Ho 的浏览器默认提示信息。而提交代码的开发者,说:早就做好了被骂的准备。
但是,可能代码提交者没想到引起的反响和效果竟然这么大。
关键是这次彩蛋的预埋,没有任何提示和在文档中注明相关情况,使用者都不知道预埋彩蛋一事,而且也没有提供关闭彩蛋的按钮或者方法。所以,导致圣诞节这天,使用了 antd 的项目如下效果:
所以,使用了 antd 开源项目的公司,都遭到了服务客户的质疑,尤其是给你官方和政府做的项目,让客户对开发公司产生了质疑和不信任,已经被控制了。竟然有人爆料,在军方的项目中也是用了这个开源项目,导致军方反馈,我们没有联网,为什么也会出现这个。
所以,在群里就出现了很多人讨论和社区留言,已经遭到客户投诉,有的开发者需要背锅,被逼离职或者扣工资。
今天一大早就有人在知乎上发起了话题,对这个事件进行讨论,问大家怎么看,我在知乎上的看法是:
开源项目要有开源的责任,要有开源的精神和原则。既然选择了开源,并让大家开源使用,就得有准则和节制。 不是免费开源,使用者就得被迫接受你们的彩蛋! Button 可以有惊喜,也可以有创意,但是得注明,写清楚,最起码得告知使用者,是否打开彩蛋的开关设置得来一个吧! 不是使用者免费用你的东西,不是你免费开源了,就得趾高气昂的对使用者说: 我免费开源,你还想怎么着?爱用不用! 开源项目和使用者之间是相互成就的一个关系,你开源,为使用者提供了方便,难道使用者大量的使用和 star 没给你带来名气以及名气背后的利益吗?本身就是公平的,如果一个再好的开源项目,没有人用,就是一堆废柴! ant 很优秀,但是请尊重使用者,请具备开源精神和原则,不要滥用开源。 这特么哪是彩蛋啊,这简直就是炸弹 !别人对你的开源项目信任,你却在背后偷偷写炸弹!
有作者说:自己的库,自己做主,没给一分钱,没给一分好处,凭什么要求我?使用者确实没有给你一分钱,但是如果没有使用者们的支持和使用,这个项目会有这么大的影响力吗?开源项目和使用者之间是相互成就的一个关系,你开源,为使用者提供了方便,难道使用者大量的使用和 star 没给你带来名气以及名气背后的利益吗?本身就是公平的,如果一个再好的开源项目,没有人用,就是一堆废柴!
确定没有因为这个开源项目的价值,让你完成 kPI ,让你晋升和升职加薪?
还有人说:使用者就是懒蛋,就是菜鸟,别人开源了,把代码都放在那里,自己不一行一行的看代码,研究学习,修改,你们还怪人家开源作者?自己犯得错误,能够赖到别人?
其实,我想说:开原作者的目的是什么?开源项目的目的又是什么?是不是为了避免重复造轮子,提高开发效率,开发更加便捷呢?如果每一个使用者都得一行一行的研究源码,有这个时间,还不如自己写呢?为什么还要用开源项目呢?
对于想提高能力,想学习的人,学习优秀的源码这是一个非常好的方式,也值得鼓励,但是在开发阶段,项目紧急的情况下,开发者都只需要按照开发文档,使用这个项目即可。
对于这次事件,我们也应该反思,并不是所有的开源项目都是安全的,可以放心使用的。而开源项目的作者,也应该有自己的原则和操守,既然开源了,就得想的更多,能力越大,责任就越大。
最后,我想说:使用开源的人得有感激之心,但是贡献开源的人更应该要有敬畏之心。我们感谢每一个开源的人,他们为这个世界贡献了自己的力量,为这个社会提高了效率,而开源的人也应该怀有敬畏之心,尊重每一个使用者,更好的回馈使用者,使用者和开源者是相互成就。