考虑引进的MongoDB的官方驱动围棋的社区影响188金宝搏手机客户端安卓下载
当一个开源项目,你靠不再满足你的需求,你做什么?当你的选择会影响不只是你,但一个更大的社区,什么原则指导你的决定吗?
提交补丁往往是第一选择,但你在维护者的摆布接受。如果您需要更改扫地,实质性的改变,接受的几率很低。最终,只有少数现实的选择依然是:找到一个替代,叉项目,或写自己更换。大家谁依赖于开源面临这一难题,在同一时间或其他。
依托多年在社区开发后氧化镁转到司机Mong188金宝搏手机客户端安卓下载oDB的,MongoDB的已经开始了一个全新的,内部开发的,开源的围棋驱动工作。我们知道,释放公司赞助的替代成功,社区开发的项目为用户创造紧张和不确定性,所以我们没有轻易作出这个决定。我们仔细考虑了我们的选择会如何影响MongoDB的当前和未来的围棋用户。188金宝搏手机客户端安卓下载
首先,一些历史:古斯塔沃·尼迈耶首次公布MgO的社区驱动器2011年3月 - 大约在同一时间发布的MongoDB数据库的1.8.0版本。188金宝搏手机客户端安卓下载它目前拥有超过1800星星在GitHub上和32个贡献者- 包括一些现任和前任员工的MongoDB。188金宝搏手机客户端安卓下载MongoDB的在围棋界难以置信的成功在很大程度上要188金宝搏手机客户端安卓下载归功于古斯塔沃和MgO。
188金宝搏手机客户端安卓下载MongoDB的本身就是这个社会的一部分。随着Go语言成熟和普及获得,MongoDB中发现许多用途为它的内部。188金宝搏手机客户端安卓下载一些使用它的项目包括:
- 我们的自动化部署远程代理,用于备份和监控。
- 我们的命令行操作工具,如mongodump。(重新写在去的3.0服务器版本)。
- 我们本土的持续集成系统,常绿。
- 我们的云产品,如MongoDB的Atlas和针都写188金宝搏手机客户端安卓下载在Go主要成分。
从这些经验,我们的工程师贡献回到MGO:超过半打的员工都在提交氧化镁,占比超过2000线的变化。
但是更多的我们的MgO中,我们更发现局限性。
随着我们的内部驱动程序 - 包括深商业采用流行的语言 - 我们经常与服务器功能的开发,使我们能够尽快的服务器合并功能测试它们并行启动驱动程序功能的开发。但是,作为一个社区项目,氧化镁的功能支持通常滞后于MongoDB的服务器开发。188金宝搏手机客户端安卓下载更重要的是,使用氧化镁我们的产品不能轻易对测试或新服务器特性充分利用。即使我们认为围棋还不在我们的用户群临界质量证明的内部驱动器,我们自己公司的产品不能等待新的特点。
有时候,我们打补丁的MgO的私有副本来实现我们迫切需要的新功能。这并不容易。在2015年,我们宣布我们的下一代驱动程序,在内置公布的一套规范对于司机的行为。由于氧化镁早这项工作,它的公约和内部不符合我们的规格。当服务器执行的新功能和驱动程序的开发团队编写的规格相匹配,这些新的规范承担实施之前的规格的。在氧化镁开发同等的功能,可能意味着从一个完全不同的基地出发。
不仅氧化镁比我们内部的驱动器不同的内部惯例和行为,它封装在我们发现的制约方式,这些行为。通常情况下,封装是一件好事 - 好设计的标志 - 但我们的许多产品,从低级别的访问插座,电线协议模型和编码获益。最终用户不需要这种机会,但我们必须认识到工作与我们自己的通信协议和消息格式和安全有很大的影响。
例如,我们的mongoreplay工具可以让用户回放针对不同的服务器或群集的MongoDB服务器请求的tcpdump的。188金宝搏手机客户端安卓下载当重放的工作量,我们需要服务器连接和认证功能 - 氧化镁的公共API的一部分 - 但复制每个连接的交通,我们还需要通过套接字连接的数量和插座消息流量,所有这些都是私人直接控制。入队请求和读响应,我们需要访问表示焊丝协议消息的类型 - 也私有类型是不可见的给最终用户。
随着时间的推移,我们发现自己复制和粘贴氧化镁源的部分转化为具体的项目库,或线协议的重新实现部分或驱动程序的行为直接。
这里面需要工程师补丁MgO或写,修复和扩展有我们自己的产品不能够使用我们自己的服务器的最新功能的内部库过多,加上机会成本时的实际成本。我们决定整合和标准化的一种实现方式,以满足所有这些需求。我们考虑两种选择:
- 叉完全MGO - 我们的速度发展,修改内部根据需要和扩展API来满足我们的需要。
- 开发新的驱动程序 - 从地上爬起来,以我们的规范建设,把它看齐,与我们的其他官方维护的驱动程序。
分叉氧化镁本来的好处,但许多挑战了一把。在利益列,分叉将尽量减少对现有产品的影响,在使用氧化镁,以及对谁选择使用我们的叉子原来的任何用户。在挑战专栏中,我们确定了给我们暂停技术和社会方面的考虑。
在技术方面,叉不会解决很大的差距,以我们共同的规范,使得新功能的开发比我们内部开发的驱动程序更难。这也提出了一个棘手的问题:如果我们实现我们的叉的一个新功能是什么才发现,氧化镁实现它以不同的方式?我们越可能采取的内部结构,并在由MgO不同方向的API,就越难将保持我们的叉子“插入式”替代,并就越难将发送补丁上游或向上游发展的合并。我们觉得叉子将很快成为一个独立的,向后兼容的产品,尽管共同族系 - 削弱涉嫌分叉的好处。
在社会方面,我们知道什么,我们发布 - 叉子或新的驱动程序是否 - 可能对现有氧化镁社区破坏性影响。我们不希望使用的MgO MongoDB中继续使用它来阻止任何人都高兴。188金宝搏手机客户端安卓下载我们想邀请谁想要更多的东西到新的试一下,而不是人 - 通过分叉 - 含蓄地要求人们挑边在他们已经在使用的项目。分叉也可能意味着我们将采取氧化镁的技术债务,这是我们希望避免的。
这些挑战光,我们决定,而不是写一个新的,独立开发的围棋司机加入我们的官方维护十一其他司机驱动程序的生态系统。一个新的开始使我们能够专注于四个主要的好处我们的努力:
- 速度:一旦完成,新增设的围棋司机会演变为快速的服务器一样。每个服务器GA版本之前,我们内部就可以狗食品新功能。
- 一致性:新增设的围棋司机会按照我们的常用规格从一开始,所以新的驱动程序API会感觉像其他MongoDB的驱动程序,缩短了用户的学习曲线。188金宝搏手机客户端安卓下载我们也将保持地道走,如支持上下文对象对于撤销的请求。
- 性能:新的驱动程序提供了一个机会,提供了新的,更高的性能BSON库和设计驱动的API,让用户在内存分配更多的控制的一种方式。
- 低级API:为我们自己内部的产品和其他电力用户,我们将提供低级别的组件进行再利用,降低整个公司的代码重复。不同的是司机的休息,这个API将没有稳定保障,没有最终用户的支持,但它会让我们开发更好的产品更快,我们的用户将受益的方式。
幸运的是,我们能够从开发的原型驱动程序自定义开始我们BI连接器- 和构建从朝共同驱动的规范,基地 - 由前司机工程师编写的。现在我们正在敲定新BSON库的细节和核心CRUD API。
下一步是什么驱动程序?在接下来的几个月中,我们将出货转到司机的“阿尔法”的发布,使代码库公开。在这一点上我们会要求转到-使用MongoDB的社区成员来尝试,并帮助我们与他们的反馈改进。188金宝搏手机客户端安卓下载
更新,2018年2月19日:新的驱动程序现在是在阿尔法,请阅读公告以获得更多信息有关想出来。
如果你有兴趣在被通知当alpha是可用的,或者如果您对这篇文章有你想分享的想法,请发送电子邮件至我david@mongodb.com或订阅的MongoDB,宣布谷歌组。188金宝搏手机客户端安卓下载我期待着您的回音。