免费的才是最贵的:阿里AntD圣诞节“踩蛋”事件
昨天是圣诞节,但对不少开发者来说,大概得叫做“圣诞劫”了。起因是阿里的前端开源项目 Ant Design,在圣诞节弄了个彩蛋:所有按钮上多了一块积雪,页面的浏览器标题会变成“Ho Ho Ho!”(圣诞老人的笑声)。
图片出处 微博@不给力的面条
Ant Design 是由蚂蚁金服开源的一款前端设计框架。使用开源框架的好处就是我们之前提过的“避免重复造轮子”,可以很轻松地搭建出美观易用的网页/移动页面。比如按钮,它会给你很多预设好的按钮样式选择,拿来就用,无需你自己去费时间设计和实现。
然而就是这样一款大厂背书、宣称“服务于企业级产品”的项目,在圣诞节来了个“惊喜”。在众多开发者尚不知情的情况下,这个“彩蛋”直接展示在了用户,甚至用户的用户面前。各种企业、组织甚至政府项目的一线开发者纷纷中枪:
图片出处 知乎@李熠
经查,这个功能是一位开发人员早在 9 月 10 日就提交进代码库的,并且没有在修改日志中具体说明。
想必开发者的本意只是开个玩笑,给各位开发者一点调剂,但显然这个做法欠考虑。毕竟这是一个“企业级”的前端项目,会直接面向各类使用者,擅自改动显示效果会带来什么样的影响完全不可预知。如果这个“彩蛋”仅限于开发版本,或是仅在控制台中出现,那情况就完全不同了,或许还能得到不少开发者的好评。就像有人评论的:“彩蛋”是需要用户主动去找的,且不应对产品有任何影响,这位开发者恐怕对“彩蛋”有什么误解。
此事在开发者社区持续发酵,引发了不少讨论。大多数是愤怒的开发者,痛斥阿里的不负责任。但也有一些人认为,人家开源项目不是欠你的,别把锅都甩给社区,有种自己写一个,爱用不用。
对此我想说两点:
1. 对外,这件事上我站大多数开发者一方。虽然 Ant Design 最初是服务于蚂蚁金服内部系统的,但既然选择了开源,向所有开发者开放,就应该有义务承担起相应的责任。开发者使用你开源产品的同时,也在一定程度上给你带来了价值,尽管不是直接的付费。作为开源项目的使用者,原本就是想节省开发精力,不会也不可能审阅项目的每一行代码、每一次提交。所以大家才会选择知名或大厂的项目,用的人多,总归更靠谱些吧。当真出了问题,也好抱团“维权”,比如这次。开源方不合时宜的提交在先,使用者的抨击在后,这已经是事故发生后不得已的弥补之举了,是种略显粗暴但又确有一定效果的监督机制。或许某个团队、某个开发者个人会很冤,但承担错误的代价是必要的。如果这样的“维权”都不行,踩到别人埋下的臭蛋也要自认倒霉,那才是对开源社区更大的危害。
2. 对内,从开发者的角度来说,因使用了开源项目而被连累,也同样是“承担错误的代价”。上次我在文章《价值2个亿的代码》最后有提到,开源并不等于随便用。任何开源都应有相应的协议,协议里会涉及你可以使用的场景,以及项目方的免责条款。所以别说是放一个彩蛋,就是埋个漏洞留个后门,你可能都没法要求赔偿。(于是去社区里骂成了唯一途径。)事实上,开源项目里暗藏挖矿、刷广告之类的代码并不是没有过。而产品的交付客户也有理由认为,你连一个按钮的显示都不可控,又如何能保证产品数据的安全性。所以,虽然跳出彩蛋不是你的锅,但在你的产品中使用开源项目,这个决定是否合理就值得商榷了。你用开源项目做商业产品,省下了一部分开发费用,那就做好承担相应风险的准备。
把这两点放一起,其实你会发现一个令人沮丧的事实:开源项目很可能逐步沦为一件吃力不讨好的事。作为开源方,本想贡献社区,反倒很可能招来麻烦,那多一事不如少一事。作为使用方,本想少造个轮子,但质量又没法保证,还不如直接买付费产品。这次事件更是让开源社区的这种信任危机进一步加深。
图片出处 微博@程序员的那些事
我作为一个开发者,敬佩开源的力量,但也不得不承认,那个自由免费开放的软件和互联网田园时代已经步入黄昏。回头看,那更像是一小撮 geek 开发者的乌托邦。而当逐步进入大众领域后,合理的商业模式才是更加可持续发展的保障。有点可惜,有点失望,但可能原本就该如此。天下没有免费的午餐,如果你觉得有,那在下口前最好想清楚是谁在买单。