极客们经常把程序描述为“开源”或“自由软件”。如果你想知道这些术语到底是什么意思以及它们为什么重要,请继续读下去。(不,“免费软件”不仅仅意味着你可以免费下载。)
一个程序是否开源不仅关系到开发人员,最终也关系到用户。开放源代码软件许可证给了用户以其他方式无法获得的自由。
图片来源:Flickr上的Quinn Dombrowski
如果一个程序是开源的,那么它的源代码就可以免费提供给用户。它的用户和其他任何人都有能力获取源代码,修改源代码,并分发自己版本的程序。用户还可以分发任意数量的原始程序副本。任何人都可以将程序用于任何目的;软件没有许可费或其他限制。OSI在其网站上对“开源”有更详细的定义。
例如,ubuntulinux是一个开源操作系统。你可以下载Ubuntu,创建任意数量的副本,然后把它们送给你的朋友。你可以在无限数量的电脑上安装Ubuntu。您可以创建Ubuntu安装光盘的混音并分发它们。如果你有特别的动机,你可以下载Ubuntu中某个程序的源代码并进行修改,创建你自己的自定义版本,或者Ubuntu本身。开放源代码许可证都允许您这样做,而封闭源代码许可证对您有限制。
与开放源代码软件相反的是封闭源代码软件,它有一个限制用户的许可证,并对用户保留源代码。
Firefox、Chrome、OpenOffice、Linux和Android是一些流行的开源软件,而microsoftwindows可能是最流行的封闭源码软件。
开放源代码应用程序通常是免费提供的——尽管没有什么能阻止开发人员对软件副本收费,如果他们允许在以后重新分发应用程序及其源代码的话。
然而,这并不是“自由软件”所指的。自由软件中的“自由”是指“像自由一样自由”,而不是“像啤酒一样自由”。由理查德·斯泰尔曼和自由软件基金会领导的自由软件阵营关注使用用户可以控制和修改的软件的伦理和道德。换句话说,自由软件阵营关注用户自由。
理查德·史泰尔曼。图片来自Flickr上的Fripog。
开源软件运动是为了关注选择这类软件的更实际的原因而创立的。开源倡导者希望把重点放在使用开源软件的实际好处上,这种软件更能吸引企业,而不是伦理道德。
最终,开源软件和自由软件的倡导者都在开发同一类型的软件,但他们在消息传递上存在分歧。
开放源代码项目使用了许多不同的许可证,这取决于开发人员对其程序的偏好。
GPL,即GNU通用公共许可证,被许多开源项目广泛使用,比如Linux。除了以上所有关于开放源码的定义外,GPL的条款还规定,如果任何人修改了一个开放源码程序并分发了一个衍生作品,他们还必须分发其衍生作品的源代码。换句话说,没有人能从开源代码中创建一个封闭源代码的程序,他们必须将他们的更改发布回社区。由于这个原因,微软将GPL称为“病毒性的”,因为它强制包含GPL代码的程序发布自己的源代码。当然,如果这是一个问题,程序的开发人员可以选择不使用GPL代码。
其他一些许可证,如BSD许可证,对开发人员的限制较少。如果一个程序是根据BSD许可证授权的,任何人都可以将该程序的源代码合并到另一个程序中。他们不必将更改发布回社区。有些人认为这比GPL许可证更“免费”,因为它使开发人员可以自由地将代码合并到他们自己的封闭源代码程序中,而有些人认为它不那么“免费”,因为它剥夺了派生程序最终用户的权利。
这并不都是枯燥的,不重要的东西,只关系到开发人员。开源软件最明显的好处是可以****。上面的ubuntulinux的例子清楚地说明了这一点——与Windows不同,您可以安装或分发任意数量的Ubuntu副本,而不受任何限制。这对服务器特别有用——如果您正在设置服务器,只需在其上安装Linux即可。如果你正在建立一个虚拟化的服务器集群,你可以很容易地复制一个Ubuntu服务器。您不必担心许可和允许运行多少Linux实例。
开源程序也更灵活。例如,windows8的新界面让许多长期使用桌面Windows的用户失望。因为Windows是封闭源代码的,没有Windows用户可以使用windows7界面,修改它,并使它在windows8上正常工作。(一些Windows用户正在尝试,但这是一个艰苦的逆向工程和修改二进制文件的过程。)
当像Ubuntu这样的Linux桌面引入一些用户不喜欢的新桌面界面时,用户就有了更多的选择。例如,当GNOME3发布时,许多Linux桌面用户同样被关闭。一些人将代码移植到旧版本gnome2,并对其进行了修改,使其能够在最新的Linux发行版上运行,这就是MATE。一些人把代码带到GNOME3中,并对其进行了修改,使其以他们喜欢的方式工作——这就是肉桂。一些用户只是切换到现有的替代桌面。如果Windows是开源的,那么windows8用户将有更多的选择和灵活性。只需看看CyanogenMod,一个流行的、社区驱动的Android发行版,它增加了新设备的功能和支持。
开源软件还允许开发者“站在巨人的肩膀上”,创建自己的软件。Android和Chrome操作系统是基于Linux和其他开源软件构建的操作系统。苹果OSX的核心——也就是iOS——也是建立在开源代码之上的。Valve正在全力将他们的Steam游戏平台移植到Linux上,因为这将允许他们创建自己的硬件,并以一种在微软Windows上不可能实现的方式控制自己的命运。
这并不是一个详尽的描述——整本书都是关于这个主题的——但是你现在应该对开源软件的真正含义以及它为什么对你有用有了更好的认识。
...灵活和功能齐全的在线商店。 目录 1. 概述和主要区别 2. 什么是Opencart 3. 什么是Magento 4. Opencart和Magento的相似之处 5. 并列比较——Opencart与Magento的表格形式 6. 摘要 什么是网店版(opencart)? Opencart是一个用于构建电子商务网站的开...
...这可能会让人困惑。让我们试着弄清楚这意味着什么以及为什么它对你很重要。 ...
... 在这些情况下会发生什么?最初的开发者能保护他们的作品吗?弄虚作假的“开发商”会有什么后果吗? ...
...。 那么,你应该用哪一种呢? 相关:什么是开源软件,为什么它很重要? Chromium很好,因为它允许需要开源软件的Linux发行版打包一个与Chrome几乎相同的web浏览器,并将其发送给用户。这样的Linux发行版甚至可以使用Chromium作为...
...诺的愿景。也许再过几年就稳定了。 相关报道:以下是为什么Firefox仍然落后谷歌Chrome数年 Mozilla在确定优先级方面也遇到了一些困难。他们仍然没有在Firefox中提供多进程和沙盒功能。这些对于保持浏览器的安全、防止崩溃破坏...
...还有一个单独的文件系统,程序用它来相互通信。这就是为什么在Linux上“一切都是文件”的原因——包括硬件设备和提供系统信息或其他数据的特殊文件。这也是为什么只有Windows有从DOS继承的驱动器号——在其他操作系统上,...