开源和开源软件是两码事
原文作者:Haacked
这一切都是源于一个不知名的文件,内容关于ASP.NET MVC 3是否为开源的。我认为这是毋庸置疑的!源代码在OSI法律审查许可公认的Ms—PL下发布,以确保它符合OSD(开源定义)。FSF(免费软件基金会)认为,要通过审核,让 “免费软件许可”不仅符合OSS,也要符合FOSS(免费开源软件)体系。
后来,在Twitter中引起了一些争议。这种良性争议有时在Twitter发生。同时我也学到了一些东西。
许多人也提出了异议。如果在开源许可下,产品的生命周期结束时,做完开发后,项目怎样才能以开源的形式发布出去?如果不接受供款又怎样发布呢
下面是我遇到的一些情况:
1.我在描述问题时,使用的语言不够专业,精准;
2.许多人对“开源”有着不同的概念。
开放源代码和开源软件是两码事。
第一个词儿是定义一个构建软件的方法。而第二个是最终产品。他们是同一有人说,他们说是一回事,就像Toyota和 Kanban品牌的汽车是一回事,这显然是不对的。
下定义的重要性
我是开源软件和开发源代码的软件开源模型的粉丝迷。我认为,将所有的软件做为开源软件是没有必要的,但是我确实发现了这种做法的好处。我也不评论这种用封闭式方法写OSS是好是坏。我关心的是在我们使用这些术语的时候,我们不要将术语误解,要保证他们的准确,这样易沟通。所以我们要对这些术语下个精准的定义。
定义很重要!如果你让任何代码本身作为“开源”,那么你会像MS-LPL一样。它看起来像开源许可认证,但是它有很讨厌的平台限制。
微软开始用“共享源”来形容这些能够让你可以看到代码许可证的这一术语,但它们不是所谓开源最经常定义的术语。
开源软件
回到现实中,我所谈论的“开源”的意思就是“开源软件”。在我看来,开源软件是符合开源定义许可授权下的开放源代码。
因此,这句话完全是就源代码属性下的定义。 更确切的说,它是就源代码的许可认证而定义的。
所以,当我们讨论软件是开源软件时,这意味着什么,我尝试在软件中构建一些框架,而不是构建思考这个软件是谁做的,或者是怎么做的。
这就是为什么我认为ASP.NET MVC是OSS,虽然该小组目前不接受外界的供款。毕竟,源代码不能接受供款。人们的确也这么做了,实际上,开源许可证与供款完全没有关系。
定义的OSS有权修改代码,并且可以自由地重新分配代码资源。任何人都没有迫使作者接受供款的权利。
开源
在以前,我经常使用“开源”这一术语,在定义我所谓的“开源软件”,从现在开始,我会改正这个错误的。
当我和别人谈论到“开源”这一术语的时候,他们总是有不同的观点。他们总是围绕构建开放源码产品,如开源软件,谈论它的文化,工艺,理念。典型的特征包括:
1.包含社会参与的开放性开发。
2.团队接受符合标准的供款。
3.最终产品有一个开源许可证。这包括开源软件,开源硬件,等等。
这三点对我来说,十分重要。尽管我完全相信,一个团队可以在不接受供款下开发出私人性开源软件,但是我认为他们没有遵守开源的文化和精神。像我同事Paul所说的那样。
同时,Bertrand在我的评论中指出,“开源”适用于许多领域,不仅仅涉及软件方面,还有诸如开源硬件,食谱等领域。
为什么那么重要?
那么为什么它那么重要?如果一个项目是在私下做的,并且不接受供款,那么这个产品作为开源软件,认证许可后,为什么很多人关注它?
我认为这很重要。实际上,最重要的部分是一个开源许可认证允许的自由。在理想化下来看,在开放和接受供款下的开发是给予你许可认证最重要的一点,同时也是自由的。
这是为什么呢?也许是一个人制定的,但这不是遥不可及的,实例有助于说明。
想象一下,一个开发项目,在完全公开并接受供款之下,构建一个JavaScript库。他们就会建立了一个很好的良性生态系统和社会周围的项目。这里一些代码非常的神奇,使我的网站实现超级强大的功能。我可以告诉你们我所要的所有供款。
但还有一个问题。代码许可证有一个平台的限制。也就是说代码可能只在Windows平台上运行。这再糟糕不过了。这对我来说就失去了软件的意义。由于我在Mac上运行的浏览器要访问我的网站,我甚至不能在自己的网站里使用一小部分内容,因此我只能在违反许可证的非Windows平台上,使用我自己的网站。
但是如果它是一个个人开发的库,并且一旦他们有了开源许可证,那么许多资源就会被打开。我就可以选择其中的资源,还能创建一个单独的开放社群。我也可以通过我的网站来分配资源。其他人也能重新分配它们。
我还要澄清一点,在理想的状态下,我想两者兼顾即一个开源许可和提交供款的能力,同时能够查看在开放形式下开发的软件。我的主要观点还是要有一份有用的软件许可证,当然它的来源是要正规的。