看到一个说法,说前段时间某滴的公司代码升级导致错误最后使全公司业务崩溃一整天的事情是因为公司商用软件中使用了一种合法的防御性编程,也就是商用软件调用开源代码后硬分叉不合并 ,这里对于这个说法不作任何评价。

 

----------------------------------

 

 

聊聊相关问题:

 

可以说商业企业大幅度使用开源软件已经是公开的秘密了,但是出于实际情况这些不合规的将开源软件商用化好像也不会有什么太直接的问题,但是商业企业对开源代码修改后造成分叉并不合并到底是出于什么目的呢?

有的人说,这是一种防御性编程,这样会造成后续代码的难以维护性,以此保证当前开发者的利益,毕竟在开发领域是真真切切的存在35岁魔咒的;

也有的人说,这其实是商业企业只顾吸血而不顾开源生态的一种贪婪表现,毕竟维护开源生态对商业企业不会有什么直接利益收益的。

 

 

下面说下个人的一些观点:

对于第一种说法,我觉得在大公司搞所谓的防御性编程是没有必要的,毕竟大公司的流程都很透明,如果真的是年龄大了被优化或者因为业务调整被裁掉往往也是大势所趋,这个时候搞埋坑往往是没有意义的,而且大公司的员工是不太有胆量在法律问题上和公司叫板的,所以说在大公司里面不论是明里还是暗里都不太会搞埋坑的,毕竟很多时候大公司里面对代码是有一定审核和标准化要求的,因此员工层面上搞搞小动作是可能的,但是搞主观上挖坑是不太可能的;

我个人是比较认同第二个观点的,但也不是完全认同。我认为大型企业在商用的时候使用开源代码完全是为了经济利益和时间利益出发的,这样他们可以节省掉大量的开发时间和经济支出,当然他们对开源软件不做什么维护工作也是出于利益角度出发,但是我认为像很多商业公司在开源软件上搞硬分叉往往还有一层其他的含义,那就是他们想再开源软件的基础上构建出一套自己公司特色的,可以被自己公司掌握的特色技术,而这种自己后期在开源软件基础上构建的商品往往可以很好的隐秘掉其开源软件的底子,而会给很多人一种完全自主研发的假象。出于这种目的在开源软件基础上搞硬分叉往往是出于整个公司的利益出发的,不仅仅是开发者的主观意愿更可能是整个公司领导层的默认意见,这一点也从在近几年被爆出在开源软件上魔改后宣传自研的国产的新闻中得到验证,其实很多国内公司喜欢这么干,这么干的有上千亿资产的国内的一线大厂也有没听过名的地方国企,总之这是一种常见的不合规操作。虽然这么干不合规,但是毕竟不像那种给摩托罗拉芯片磨戳那种要人无法接受,也就慢慢成了潜规则了。

 

可以说,商业企业在开源软件上魔改后不选择合并到主支而是选择硬分叉更多的出发点是为了搞出所谓的“自有技术”,最后套个壳然后宣传自主研发是一样的操作。但是吧,实际上这种操作只能是短线操作,毕竟在软件开发这个问题上技术更新和应用创新还是不一样的,大企业可以快速的搞应用创新,可以快速的把新技术商用化,但是却在技术更新上表现平凡。更多的是一些大型公司在开源软件上魔改几年后发现开源的主支已经更新到更好的技术了,这时候这些商用公司就需要手动的把主支代码clone下来和自己的这几年搞的代码进行合并,而每每到了这个时候就会导致极大的灾难,这个工作极为困难,即使最终完成合并也可能存在各种无法察觉的隐秘问题,最后在运行时就会在底层报错,从而出现无法短时间内修正的错误,而这才是整个事件背后最有可能的事实。

 

 

PS:

如果一个商业公司选择了开源技术就不要去魔改后不合并,这种短期有利的操作对自身的长久发展无益更对开源圈无益,既然选择了利用开源技术快速发展就不要私下搞小动作,当然要么也可以不选择开源技术,完全的闭源自主研发,不过在现在的技术领域好像还真没有哪个公司会有这样的底气的。

 

==============================