消失的测试用例,还是MySQL的另一部分刚刚变成闭源了?
大约一周前,我在查看 MySQL 5.5.27 版本时,注意到一件奇怪的事情。尽管新发布的 MySQL 版本包含了通常数量的 bug 修复,但没有一个修复伴随着测试用例。
现在,让我告诉你一些关于测试的事情。多年来,MySQL 一直使用自己的测试框架,称为 mysql-test。第一个版本早在 1999 年就已编写。多年来,它积累了大量的测试。有针对新功能的测试,也有回归测试——这些测试保证一个 bug 一旦被修复,就永远不会再出现。在 MySQL AB(以及后来的 Sun Microsystems),我们对此有相当严格的政策——每个新的 bug 修复总是必须伴随一个针对该 bug 的测试用例。而且由于这些测试在每次提交时(通过内部开发的持续集成工具 Pushbuild——由 Kristian Nielsen 开发)都会在许多平台上运行,我们有充分的信心,任何 bug 一旦被修复,就会永远保持修复状态。我现在不再是 MySQL 的员工了,但我仍然无法想象 Oracle 会削弱这条规则。所以,肯定不是这样。
5.5.27 版本带来的一个变化是扩展了 mysql-test-run
脚本——即 mysql-test 套件的驱动脚本——使其在新目录中查找测试用例。除了通常的位置(即源代码树中的 mysql-test/
目录)之外,它现在还会在 internal/mysql-test/
目录中查找测试用例。这是否意味着测试用例不再是开源的?Oracle 没有回复我的问题。但事实上,有证据表明这种猜测是正确的。例如,这封提交邮件显示,新的测试用例确实放在这个“内部”目录中,而该目录不包含在 MySQL 源代码分发包中。
MySQL 测试用例一直是 MySQL 源代码树的重要组成部分。它们对于存储引擎开发者以及其他扩展 MySQL 的人特别有用,例如 Facebook、Twitter 和 淘宝。 它们也对将补丁添加到基础 MySQL 中的 Linux 发行版有用,甚至对不修改源代码的用户也有用——他们仍然想确认某个 bug 已被修复或他们自己构建的二进制文件没有明显缺陷。
五月,在奥克兰举行的 Ubuntu 开发者峰会上,Oracle 有 7 位代表到场,他们承诺 Oracle 将对贡献者和分发版更加友好。令人遗憾的是,我们看到的是 MySQL 源代码树正在被关闭。
MySQL AB 在围绕产品构建开发者社区方面从来都不太擅长。MySQL AB 之外没有多少 MySQL 开发者或项目贡献者,公司也没有做太多工作来增加他们的数量。但现在 Oracle 注意到了他们——并且它正在有意地扼杀 MySQL 开发者社区仅存的一切。没有测试用例,MySQL 对外部开发者来说变得像任何闭源软件一样不透明,只有那些经验最丰富、对 MySQL 代码库最熟悉的人才能继续使用它。
更新: 对于外部开发者来说,很难找到比测试用例更有价值的东西了。但可以说版本历史同样有价值。它将这数百万行源代码的更改分组到 变更集 中,每个独立的特性或特定的 bug 修复对应一个变更集。它允许查看谁在何时因何原因更改了某行代码。而且看起来 Oracle 也将把这些信息据为己有。带有版本历史的公共 MySQL 树在 launchpad 上没有被更新。
现在,有没有一个没有任何开发者社区的成功开源项目?
更新 2: 我们不是唯一受此问题影响的人。另见
- http://mysqlha.blogspot.com/2012/08/less-open-source.html
- http://ronaldbradford.com/blog/when-is-a-crashing-mysql-bug-not-a-bug-2012-08-15/
那这是使用 postgres 的另一个原因吗?
我不太清楚。 🙂 在我看来,这更多是使用 MariaDB 的理由。
MariaDB 依赖于上游软件的程度与其他 MySQL 兼容的分支一样。这与 MariaDB 本身无关,但我们无法信任你们获取源代码的来源,这本质上破坏了信任链。
实际上并非如此。MariaDB 并不像其他兼容分支那样严重依赖上游。请查看:http://montyprogram.com/people/,这里列出了参与 MariaDB 工作的 Monty Program 成员。我怀疑您找不到另一个拥有如此深厚 MySQL 功底的分支。
MariaDB 开发者在合并 MySQL 代码时,会对其进行检查和评估,而不仅仅是盲目应用。如果有什么他们不满意的地方,就不会合并;如果是一个好主意但实现得很糟糕,他们会重新做好。他们还添加了许多在任何 MySQL 版本中都找不到的功能。
这就是为什么我们最终使用 postgres。
这是分支的结果。MariaDB 正在吸取开发成果,却不对专有项目做出贡献。
这真的令人惊讶吗?Oracle 在其政策上非常直接,他们只顾自己的业务,对投资一个无法为他们带来利润的社区毫无兴趣。
两点评论:我们正在回馈,但这并不容易。我个人曾向 Oracle 贡献了完整的“可插拔身份验证”功能,但那是一次我不想再经历的体验。
而且——Oracle 绝对有权将测试用例闭源并不在 launchpad 上发布代码树。此外,我同意扼杀开发者社区会带来某些好处。短期的。
但这就像一家餐厅将价格提高十倍,以便从每个顾客身上赚取更多利润一样。结果呢?人们会去别处吃饭。
基于 MySQL 社区版包含的许可协议,我们可以起诉 Oracle 公司违反许可吗?
不可以,Oracle 对代码和测试用例拥有全部权利。阅读关于 MySQL 双重许可协议的信息——如果他们愿意,Oracle 甚至可以关闭整个 MySQL 代码的开源。
我认为,这会立即引起欧盟委员会的回应,对 Oracle 在欧洲的商业机会产生负面影响。许可协议是一回事——Oracle 在收购 Sun 时给予欧盟的法律保证是另一回事。
欧盟委员会是如何参与进来的?供应商可以随意选择将其产品闭源或开源,欧盟委员会为什么要关心?
关心的是社区。
因为欧盟必须批准 Oracle 收购 Sun。为了获得批准,Oracle 必须做出承诺,并明确他们将采取什么方向。如果他们违背承诺,他们就违反了批准协议,可能会因此受到处罚。
欧盟委员会是否会因 Oracle 将 MySQL 闭源而立即做出回应,这一点值得怀疑。你们的极客价值观并非普遍认可。此外,如果他们在如此微不足道的事情上浪费时间,那将是欧洲政治的悲哀。
欧盟不能决定 Oracle 的商业决策(因为 Oracle 是一家美国公司)。但欧盟(和欧洲各国政府)可以决定 Oracle 在欧洲的商业机会和条款——如果他们自己不采取行动,我认为“有人”会帮助他们睁开眼睛。我不认为界限已经被跨越——但它正在接近。Oracle 向欧盟委员会提供了法律保证,保证 MySQL 将继续作为开源软件。在欧洲扣押 Oracle 的财产(但首先更有可能是罚款)并非不可能。
有趣的是,即使在这里,许多人也无法摆脱他们的“粉丝”态度,不断发帖建议转向 PostgreSQL。我只希望你们能继续进一步开发 MariaDB,即使 Oracle 要彻底关闭 MySQL 项目。我的意思是,你们真的需要他们的东西吗?
任何时候一个社区的成员称另一个社区的成员为“粉丝”,都会让所有人都丢脸。你真丢人。
显然,如果有人自称 Monty 并推荐使用 PostgreSQL 而不是基于 MySQL 的数据库系统,那肯定是有“喷子”参与其中。
我个人认为只有 Oracle 数据库系统很糟糕,我讨厌使用它。虽然我对 Microsoft 数据库系统经验不多。PostgreSQL 绝对是一个非常好的数据库系统,而且最好的一点是,它是真正的完全开源的。但统计数据仍然显示 MySQL 拥有更高的市场份额(参考 W³Techs 和 Google Trends)。MySQL 和 PostgreSQL 正在失去阵地,因为涌现出了许多*新*东西(例如 Redis、MongoDB)。
我们真的需要关系型数据库管理系统(RDBMS)吗?
我一直想知道 KDE 软件是如何使用 RDBMS 的,我认为 NoSQL 数据库会更轻便,更适合应用程序的使用。
即使在 Web 开发中,mysql 也只是因为它是事实上的标准而被使用,而不是因为应用程序需要它的特性。
那是时候转向 MariaDB 了……或者如果你愿意,也可以转向 postgres。
Bug #65831 (http://bugs.mysql.com/bug.php?id=65831) 被标记为 bug #65740 的重复项(65740 是私有的并已划掉..)
你抱怨的时候要来点奶酪吗?行了……你正在推广 MariaDB,而你吸引人们使用你项目的最佳方式就是诋毁“邪恶的”Oracle?你自己的承认,Oracle MySQL 仍然在开源的 GPL“社区版”下可用。你下载的就是这个版本,对吧?它仍然可以在这个网址获取:https://mysqlserver.cn/products/community/。那么,没有测试用例到底是怎么让它变得不那么开放的?Oracle 肯定想把企业客户的内部修复细节放在一个单独的内部目录里。
你应该从 LibreOffice 分支的过去错误中吸取教训,用 Shuttleworth 的话说:http://ho.io/libreoffice
你在如此多项目中为 Oracle 进行的恶意“喷”功,简直就像是他们雇佣的人,就像 Florian Mueller 一样。你歪曲事实,忽视现实(你告诉过所有项目测试用例应该保密吗?),咒骂别人,贬低他们。我希望他们付给你足够的钱来当他们的“宠物反社会者”。
我要祝贺 TrollWatcher 对我进行了研究,并发现我对 Oracle 对 Sun 前开源项目的资助给予了正面评价。祝贺你!这说明你会使用 Google。但是,你却当了一个匿名的“鼠辈”,真是糟透了。无论如何,我认为这次攻击是来自那些项目管理员“鼠辈”。
我早就预料到会发生这种情况,就在 LibreOffice 那些该死的分支支持者说“接下来是 MySQL!”的时候。不幸的是,我当时没有保存 Twitter 界面的截图。显然,Oracle 的竞争对手正在协同努力,试图让该公司处理的每个自由开源软件(FOSS)项目脱轨并争夺控制权,把 Oracle 描绘成一个“邪恶公司”,而对 Novell 与微软的交易、RedHat 试图隐藏补丁等事情却只字不提。
http://www.channelregister.co.uk/2011/03/04/red_hat_twarts_oracle_and_novell_with_change_to_source_code_packaging/
显然,这里应用了双重标准,Oracle 总是受到指责,而其他人使用相同方法却安然无恙。
最后,我遗憾地告诉你,我和任何美国公司之间都没有金钱交易。事实上,我 90% 的时间向 ORCL 的人发送关于 Java 的投诉或建议,都未得到回应。他们不如 Sun 的人开放。
当他们回复时,他们会让我联系他们的公关人员。
FC
PS: MySQL 是双重许可的,如果你反对双重许可,你应该发起一场反对它的运动。双重许可正是允许这样做的原因(以及任何其他使用双重许可的公司)……它允许公司首先为付费客户发布关键补丁,而这些补丁会在稍后日期纳入 GPL 版本。这被称为销售激励。
”
显然,Oracle 的竞争对手正在协同努力,试图让该公司处理的每个自由开源软件(FOSS)项目脱轨并争夺控制权,把 Oracle 描绘成一个“邪恶公司”,而对 Novell 与微软的交易、RedHat 试图隐藏补丁等事情却只字不提 ”
你是不是太以自我为中心了,一心只想逃避任何责任和问责,以至于使用了书中老掉牙的借口:别人也这样做!
别管那些项目脱轨的责任在于 Oracle 本身,也别管 Novell 和 Red Hat 的过失已经被辩论得体无完肤。更别管这两家公司长期以来一直表现出色,是开源项目的好管理者。这是 Oracle 无能为力的!
亮出你的真实姓名和身份并不能阻止任何人做出不光彩的行为,看看你自己就知道了!
你这个人真是可悲。
你甚至连重音符号和撇号都分不清。可悲!
老兄,不要对你不了解的 Red Hat 说三道四。你不能把 Red Hat 的补丁混淆和闭源相提并论。你看,RH 可以混淆,但源代码仍然是开放的。RH 的做法和 Oracle 的做法是两回事。
开放测试用例并不那么重要,开放开发才重要。这里提出的观点是——Oracle 正在朝着关闭开发的方向迈出微小的步伐。某个东西恰好是 GPL 的事实并不能使其本身成为一个开放项目。
对于公司应该依赖什么,优先级顺序是这样的
最佳:开放代码(GPL/BSD 等),开放开发
不太糟糕:开放代码(GPL/BSD 等),封闭开发
糟糕:封闭代码,封闭开发
Oracle 正在将 MySQL 从“最佳”类别移到“不太糟糕”类别。这对于任何正在使用并依赖 MySQL 的人来说都值得注意。
这是你能想到的最好的回应吗?引用一位“喷子之王”在 12 个多月前的一段突出评论?
你不懂责任的含义。反思一下……也许……