开源运动
门户之见. 从古至今都有,古时候师傅教徒弟都要留一手怕徒弟抢了自己的饭碗,现今多数行业也都会视自己的技能,工具为商业机密生怕让别人知道.
但在计算机相关领域却是相反,当今的主流框架主流工具几乎都是免费的,而且文档丰富毫无保留.如果你不是软件开发行业你恐怕很难理解为什么.这就得益于开源的力量.
开源即开放源代码
开源运动源于自由软件运动是指那些源代码公开的软件项目.
开源与free
开源运动常常被人与自由软件,免费关联起来.实际上他们并不是等价的.开源只是开放源代码,它并不意味着这个代码可以被任何人以任何形式利用.通常允许的利用形式是通过开源协议进行约束的.
而自由软件指的不光是源码开放,而且更多的是指可以自由地运行这个软件,学习,修改分发它.
开源软件也并不意味着免费,一些开源软件软件本身是免费的,但技术支持是收费的.有些则对一般用户免费,而对付费用户提供另一份有额外功能的fork.
当然了多数时候开源软件都至少有一部分是免费的.
关于开源协议的选择
开源协议很重要,他可以为你规范后续再开发者的行为,不过一般喜欢开源的都懒得管后续开发者啦,whatever,咱今天聊聊这个.
基本上选啥取决于你想咋样:
-
我想要一个简单宽松的许可证建议: MIT许可证。这是一个宽松的、简明扼要的许可证,只要用户在项目副本中包含了版权声明和许可声明,他们就可以拿你的代码做任何想做的事情,你也无需承担任何责任。使用该许可证的项目:jQuery、Rails
-
我比较关心专利建议: Apache许可证。这类似于MIT许可证,但它同时还包含了贡献者向用户提供专利授权相关的条款。使用该许可证的项目:Apache、SVN和NuGet
-
我关心项目的共享改进建议:GPL( V2或 V3)许可证。这是一种copyleft许可证,要求修改项目代码的用户再次分发源码或二进制代码时,必须公布他的相关修改。V3版本与V2类似,但其进一步约束了在某些限制软件更改的硬件上的使用范围。使用该许可证的项目:Linux、Git
-
我的开源项目不是代码建议: Creative Commons。这是一个相对宽松的版权协议。它只保留几种了权利(some rights reserved)。使用者可以明确知道所有者的权利,不容易侵犯对方的版权,作品可以得到有效传播。 作为作者,你可以选择以下1~4种权利组合:
- 署名(Attribution,简写为BY):必须提到原作者。
- 非商业用途(Noncommercial,简写为NC):不得用于盈利性目的。
- 禁止演绎(No Derivative Works,简写为ND):不得修改原作品, 不得再创作。4. 相同方式共享(Share Alike,简写为SA):允许修改原作品,但必须使用相同的许可证发布。
另外可以参考阮一峰大大在博文中提到的简单选择方式
开源与企业
开源和企业现在是一种奇怪的共生关系.
开源项目本身是去中心化的,任何人可以参与任何人可以使用,但开源项目往往希望获得更多的关注以发挥开源的优势,因此往往会托管在中心化的平台上.比如早期比较SourceForge,现在的Github.像一些开源基金会也会专门提供旗下开源软件的文档入口.而中心化的企业则更加喜欢使用开源软件,因为优质的开源软件通常免费而且强大,它们也往往愿意投入人力财力给大型的开源项目或开源软件基金会以获得话语权甚至影响软件的开发路线.