开源悖论
一种新观念正在社交网络和编程社区中悄然流传:人们为编写某样东西付给你的钱,和他们自认为有资格对你的工作提出的质量要求之间存在正比关系。
正如有人所说,最好的代码往往是在你本该做别的事情时写出来的[1]。就像作家写那部也许没人愿意花一分钱购买的小说时,可能比为一家知名公司做文案时更能发挥出最佳水平一样,程序员很可能会在自己的开源副项目上投入比办公时间更多的精力,而不是在办公室里继续编写某个他们觉得愚蠢、无聊、毫无意义的项目。况且,如果公司足够大,这个项目很可能六个月后就会被取消,或者在盛大发布一年后被淘汰。
开源是不同的,它是一件作品,是你真正想做的事情、你认为软件应有的样子,或者你编程时感受到的所有乐趣、喜悦甚至愤怒在代码中的投射。你希望它出色、完美;如果里面有一个该死的heisenbug(海森堡 bug),你甚至会彻夜难眠。所以,如果你软件的用户来找你,说你的代码有某一部分烂透了,而且愿意和你一起解决问题,同时还非常苛刻,那么别因为他们没有付钱就认为他们在滥用你。这和钱无关。你当然可以不修复 bug,也可以无视他们的抱怨,毕竟你没有合同要求自己必须这么做;但他们其实是在帮助你,他们在乎的,和你在乎的是同一件事:软件的质量、伟大与完美。
你真正拥有、却常常没有行使的权利,是只有你能决定软件的设计。因此,你完全有权拒绝一个pull request(拉取请求),也有权拒绝采用某些良好实践的建议,因为你觉得别人的贡献不符合你正在设计和构建的整体蓝图。
但如果你承认有人指出的确实是软件中的缺陷,就不要犯把这种互动降低为卑劣金钱问题的错误。你是在无偿工作,而他们在部署你写的东西时也在拿自己的饭碗冒险;你们都在乎质量。
编辑:如果你编写 OSS,却因用户的要求而恼火,有没有想过,也许到了这个阶段,由于某种原因,你的工作已经更像办公室工作了?
编辑 2:一位 HN 用户问了这个标题的由来。悖论在于,OSS 作者更在乎自己免费编写的代码,也往往更愿意修复它,而不是修复自己从事的另一份有偿工作。
[1] “最好的程序,是程序员本该在做别的事情时写出来的。”——Melinda Varian(梅琳达·瓦里安)。https://twitter.com/CodeWisdom/status/1309470447667421189
随机一篇博客