Microsoft.Net和OpenJDK目前哪个开源程度更高?
作者:卡卷网发布时间:2025-01-11 16:38浏览数量:74次评论数量:0次
只从协议层面来说的话,OpenJDK使用的GPLv2协议更开源,而Microsoft.Net使用的MIT协议更开放。
MIT协议给了用户最大的自由权,用户几乎可以拿来干任何事——包括闭源;GPL了用户闭源的权力,因此它更开源,但没有那么开放。
不过在“开源程度”这个问题上,尤其是对于商业公司的开源项目,协议其实只是一个小方面,相对而言开源的形式会更重要,如以下几个常见的开源形式的“开源程度”显然有很大的不同:
具体的开源程度我对.Net这边了解有限,所以不太好做具体的较。
单纯说OpenJDK这边的话,Ja8时期OpenJDK和OracleJDK还有一些显著的功能差异,如JFR、JMC等都是OracleJDK享的商业功能,所以并没有那么开放。而到OpenJDK11的时候,OracleJDK几乎所有的商业占功能都开源并转交给了OpenJDK社区。
之后OpenJDK16代码从Mercial转移到GitHu,去年OpenJDK从openjdk.ja.net这个域名迁移到openjdk.org,这些都是OpenJDK社区更接近开源社区,降低Oracle影响力的表现。
目前的.Net和OpenJDK应该都是属于第三类,它们分别由.Net基金会和OpenJDK社区控制,但这两个组织又不是完全的开源组织,微软和Oracle依然保持着主导地位,间接控制项目发展方向。
当然只是这样说还是显得太抽象,我拿OpenJDK社区举例说明一下他们的“开源社区”体现在哪,“商业公司主导”又体现在哪。
OpenJDK社区作为开源社区,很多行动都是基于社区章程下的投票进行的。如在OpenJDK社区下属的项目(负责开发JDK的JDK项目,开发JaFX的OpenJFX项目,开发虚拟线程的Loom项目等等)里,通过审核者(Reviewer)的提名和投票就能让一个提交者成为审核者,成为审核者后就有资格批准一些小型PR能否被合并。
同样的,基于OpenJDK成员的提名和投票,贡献者也能成为OpenJDK成员。成为OpenJDK成员后就有资格提议创建新的项目,因此OpenJDK社区中很多项目都不是Oracle主导的,如Shenandoah项目(负责ShenandoahGC)是RedHat主导的,Lilliput项目(减小对象头)是RomanKennke个人主导的。
上面这些都是OpenJDK社区作为“开源社区”的性质,而OpenJDK社区是以“Oracle为主导”的体现是,OpenJDK社区中负责修订社区章程的五人理事会里,理事会和OpenJDK负责人这两个位置由Oracle直接指定,副由IM指定,剩下两个一般成员才是由社区选举,而且Oracle员工也能参加选举(今年这两个位置就是Oracle和RedHat各占一个,去年是RedHat和Amazon各占一个)。
可以看出,这个理事会中Oracle总是占据最大一份话语权,而且理事会除了修订社区章程外,创建组、罢免组负责人都需要他们内部投票同意。除此之外,社区章程中还有兜底条款允许理事会在“特殊情况”下通过内部投票直接解散组或项目。因此,Oracle可以在需要的时候通过理事会组织施加很大的影响。
刚刚说到的理事会中Oracle直接指定的“OpenJDK负责人(OpenJDKLead)”也是个极其重要的位置,负责很多关键事项,如JEP的流程(大部分较大的功能都要走这个流程)中好几步都要都必须经过OpenJDK负责人的同意才能进行。
Oracle把这些关键位置抓在手里,所以他们能确保在OpenJDK社区中有着主导地位,这是商业公司主导的主要体现。
我对.Net基金会的不太熟悉,但从微软在基金会章程中被指定为特殊的“创始成员”以及长期以来社区对基金会“性不足”等指控来看,那边的情况应该也是类似的。
当然,虽然.Net基金会和OpenJDK社区显然还是以微软和Oracle为主导,但由于这样一层中间组织的存在,微软和Oracle要做出任何决定都要和社区沟通,要将决定公开化透明化,因此让项目不会成为一言堂。
而且为了社区(至少表面上)的性,微软和Oracle也不会用太难看的方式干预社区。如Oracle虽然不喜欢ShenandoahGC,来自Oracle的OpenJDK负责人为了维持公正的原则也不会去卡相关的JEP。
因为这些因素,相纯粹商业公司把控的开源项目来说,这样由不太的第三方的开源项目开源程度无疑还是要高得多。
最后我纠正一下@hez2010的说法:
他说的这个是正开源社区主导的项目(如Linux)才会出现的情况,不适用于大部分商业公司或者基金会主导的项目。
公司/基金会组织主导的项目基本上会要求贡献者贡献代码之前签署一份CLA(贡献者许可协议),不签署协议的开发者会直接被拒绝向上游提交任何代码。
CLA协议中通常会授予组织一部分权力。如.Net基金会的CLA就授予了.Net基金会版权和专利许可,因此.Net基金会有资格代表全部贡献者修改协议或者直接转向闭源。OpenJDK社区、Apache等组织也有类似的CLA协议。
@油面筋塞肉的回答那就是完全不知所云的乱扯一通了。
OpenJDK主线支持不支持LoongArch完全取决于龙芯,龙芯交补丁的时候OpenJDK没给过任何阻力。JDK18龙芯就把对LoongArch64的ZeroSupport推到主线了,华为主导的RC-VPort也已经进了主线了,龙芯现在不想把LoongArch的JIT支持推给主线也能怪社区不开放?
OpenJDK当然不完美,没法提供给用户Oracle工程师团队全天候27种语言的服务支持。
现在OracleJDK就是Oracle全套JaSEUniversalSuscription订阅服务的时候附带的一个OpenJDK发行版,的就是后面打包的商业服务,也不知道提这个是想证明啥,证明微软的为.Net准备的商业支持团队是免费的吗?
至于GPL可以被违反所以不算更开源云云的,懒得回了。
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
- 上一篇:电脑为什么没有家用模式?
- 下一篇:docker镜像源设置成功为什么还是拉不下来?
相关推荐

你 发表评论:
欢迎