最近德云社演员“有房有车还募捐”的事情正在发酵,开源圈里关于技术募捐也曝出了丑闻,主角是知名 Python 库 Requests 作者 Kenneth Reitz。
Python async/await-native I/O 库 Trio 作者 Nathaniel J. Smith 发文详细介绍了 Kenneth Reitz 在 Requests 3 的开发过程中是如何“骗捐”的。
2017 年 8 月,Nathaniel 开始为 urllib3 添加异步支持,urllib3 是 Requests 使用的底层 HTTP 库,该支持是是高度实验性的。Kenneth 对这项工作非常感兴趣,他非常希望在 Requests 中提供异步支持,但是自己又不知道怎么做。于是他开始招募志愿者以 Nathaniel 的方式去开发。
几个月之后,Kenneth 宣布 Requests 3 的工作开始,并且首要新特性就是 Nathaniel 正在进行的原生 async/await 支持:
同时,Requests 3 项目发起募捐,以实现这一目标。很快许多个人与微软、谷歌与 Slack 等大公司都进行了捐款,筹款达到了 3 万美元左右。
随后 Kenneth 联系 Nathaniel 讨论筹款活动,Kenneth 表示不知道如何处理这笔钱,他说最初的目标只是筹集 5 千美元来买一台电脑。
Nathaniel 心里觉得 5 千美元都可以买一台强大的服务器或者高端游戏设备了,跟开发 Requests 没有什么关系,Requests 是一个小的纯 Python 库,使用任何便宜的笔记本开发都完全没问题。但他同时也理解,即使花了 5 千美元购买一些不相关的电脑,也可以将这笔费用认为是对过去的工作进行的一种补偿,而且还会留下 25 000 美元来履行他在筹款活动中所作出的承诺,不管怎么说这对于开发出一些令人惊叹的新功能其实是有帮助的。
于是 Nathaniel 提供了一些筹款和拨款的经验,强调了保持信任的透明度的重要性,并建议 Kenneth 与 Python 软件基金会(PSF)或类似的非盈利组织建立财政赞助关系。
同时 Nathaniel 试图帮助找到有效利用这笔捐款的方法,例如联系志愿者,邀请其他人参与有偿开发 Requests 3;并且在后来他离开 UC 伯克利时,还希望能够全职去参与到 Requests 的开发中。
然而在这个过程中,虽然 Kenneth 也有对 Nathaniel 在 urllib3 上的工作进行一些实验,添加了一些基本的 HTTP/2 支持,但是 Nathaniel 早就提示过这种方法不可行,最后 Kenneth 的这些代码实际上也没法用。
同时其他社区成员也听到了关于募集到的这笔资金去向的不同版本。
几个月后,Kenneth 在回复 Nathaniel 的邮件中提出了以下几点内容:
- 他实际上只筹集到了 2 万 8 千美元
- “大部分”都是税
- 他希望 Nathaniel 完成(Kenneth)在 Requests 3 中为新功能所做的承诺
- 但是完成功能并不会支付他资金,相反,需要等功能实现后,把这 2 万 8 千美元用于编写文档
- 如果 Nathaniel 不能志愿地去实现功能,Kenneth 鼓励其发起自己的筹款活动
也就是说 Kenneth 想让 Nathaniel 无偿地去开发 Requests 3 那些承诺好的异步功能,而且这笔筹集到的捐款去向也不明不白,甚至最开始募捐也是没有在 Nathaniel 本人承诺会完成异步功能的情况下发起的,而实际上完成 Python 原生 async/await 支持很难。Nathaniel 震惊了,并且拒绝了这个想法。
Kenneth 没有回应,之后他删除了网站上筹款页面收到捐款记录的页面,以及他承诺的回报(before/after)。同时更新了 Requests 文档及其博客,删除了对已删除页面的引用(before/after)。
在博客中 Nathaniel 明确指出:“实际上,他公开承诺如何使用 Requests 3 资金是彻头彻尾的谎言,他没有表现出任何悔恨,甚至不明白这是一个问题。”
Effectively, his public promises about how he would use the Requests 3 money were lies from start to finish, and he hasn’t shown any remorse or even understanding that this is a problem.
Requests 一直以来享有“以人为本”的美誉,然而发生在作者身上的这件事情,同时也让 Nathaniel 觉得“在互动中非常容易被操纵”,“我觉得他试图利用我,并试图让我同谋掩饰他的谎言以保护他的声誉。我对与此相关的想法感到非常不安,在他造成的这种情况下,我唯一的其它选择就是要么完全放弃异步工作,要么全身心地公开,这对我自己造成潜在的严重损失。”
最终,为了自己与 Python 社区,Nathaniel 决定把事情公开。他呼吁 Kenneth 对他筹集的资金以及如何使用进行公示,敦促 Requests 项目维护者将他们的项目转换为更正常、功能更少的管理模型。
原文:
转自 https://www.oschina.net/news/106470/why-im-not-collaborating-with-kenneth-reitz