什么是开源软件,为什么重要?

极客经常将程序描述为“开源”或“自由软件”。如果您确切想知道这些术语的含义以及它们为什么重要,请继续阅读。 (不,“免费软件”不仅仅意味着您可以免费下载。)

程序是否开源不仅仅关系到开发人员,最终对用户也同样重要。开源软件许可为用户提供了他们原本没有的自由。

图片来源:Flickr上的Quinn Dombrowski

开源的定义

如果程序是开源的,则其源代码可供用户免费使用。它的用户以及其他任何人都可以获取,修改和分发自己的程序版本。用户还可以根据需要分发尽可能多的原始程序副本。任何人都可以出于任何目的使用该程序;该软件没有许可费或其他限制。 OSI在其网站上对“开源”有更详细的定义。

例如,Ubuntu Linux是一个开源操作系统。您可以下载Ubuntu,根据需要创建任意数量的副本,然后将其提供给您的朋友。您可以在不限数量的计算机上安装Ubuntu。您可以创建Ubuntu安装光盘的混音并分发它们。如果您特别有动力,则可以在Ubuntu中下载程序的源代码并进行修改,以创建该程序或Ubuntu本身的自定义版本。开源许可证都允许您执行此操作,而封闭源许可证则对您施加了限制。

开源软件的反义词是闭源软件,它具有限制用户并保留用户源代码的许可证。

Firefox,Chrome,OpenOffice,Linux和Android是开放源代码软件的一些流行示例,而Microsoft Windows可能是其中最流行的封闭源代码软件。

开源与免费软件

开源应用程序通常是免费提供的-尽管如果开发人员允许在以后重新分发应用程序及其源代码,那么它并不会阻止开发人员为软件副本付费。

但是,这不是“自由软件”所指的。自由软件中的“自由”意味着“自由中的自由”,而不是“啤酒中的自由”。由Richard Stallman和自由软件基金会领导的自由软件阵营,侧重于使用可以由用户控制和修改的软件的道德和道德。换句话说,自由软件阵营侧重于用户自由。

理查德·斯托曼(Richard Stallman)。图片由Fripog在Flickr上拍摄。

创建开放源代码软件运动的重点是选择此类软件的更多实用性原因。开源倡导者希望专注于使用开源软件的实际好处,该软件将更吸引企业,而不是道德和道德。

最终,开源和自由软件的倡导者都在开发相同类型的软件,但是他们在消息传递上意见不一致。

牌照种类

开源项目使用许多不同的许可证,具体取决于开发人员偏爱其程序。

GPL或GNU通用公共许可证已被许多开源项目(例如Linux)广泛使用。除了上述所有对开源的定义之外,GPL的条款还规定,如果任何人修改了开源程序并分发了衍生作品,他们还必须分发其衍生作品的源代码。换句话说,没有人可以使用开源代码并从中创建一个开源程序–他们必须将所做的更改发布回社区。出于这个原因,Microsoft将GPL称为“病毒”,因为它迫使包含GPL代码的程序发布自己的源代码。当然,如果出现问题,程序的开发人员可以选择不使用GPL代码。

其他一些许可证(例如BSD许可证)对开发人员的限制较少。如果某个程序是根据BSD许可获得许可的,则任何人都可以将该程序的源代码合并到另一个程序中。他们不必将更改发布回社区。有些人认为它比GPL许可证更“免费”,因为它使开发人员可以自由地将代码合并到自己的封闭源程序中,而有些人则认为它不那么“免费”,因为它剥夺了权利来自派生程序的最终用户。

给用户带来的好处

并非所有干燥,无关紧要的东西都只对开发人员重要。开源软件最明显的好处是可以免费获得。上面的Ubuntu Linux示例很清楚–与Windows不同,您可以不受限制地安装或分发任意数量的Ubuntu副本。这对服务器特别有用-如果您要设置服务器,则只需在其上安装Linux。如果您要设置虚拟服务器集群,则可以轻松地复制单个Ubuntu服务器。您不必担心许可以及可以运行多少个Linux实例。

开源程序也更加灵活。例如,Windows 8的新界面使许多长期使用台式机的Windows用户感到失望。因为Windows是开源的,所以没有Windows用户可以使用Windows 7接口,对其进行修改并使其在Windows 8上正常工作。(某些Windows用户正在尝试,但这是进行反向工程和修改二进制文件的艰苦过程。 )

当像Ubuntu这样的Linux桌面引入了某些用户不喜欢的新桌面界面时,用户会有更多选择。例如,当GNOME 3发布时,许多Linux桌面用户同样被关闭。一些人将代码升级到旧版本GNOME 2,并对其进行了修改,使其可以在最新的Linux发行版上运行-这就是MATE。一些人将代码添加到GNOME 3中,并对其进行了修改以使其以他们喜欢的方式工作-这就是Cinnamon。一些用户只是切换到现有的替代台式机。如果Windows是开源的,则Windows 8用户将有更多选择和灵活性。只需看看CyanogenMod,这是一个受社区推动的流行的Android发行版,它增加了对新设备的功能和支持。

开源软件还允许开发人员“站在巨人的肩膀上”并创建自己的软件。见证Android和Chrome OS,它们是基于Linux和其他开源软件构建的操作系统。苹果OS X以及iOS的核心也是基于开源代码构建的。 Valve正在疯狂地将他们的Steam游戏平台移植到Linux,因为这将使他们能够创建自己的硬件并以Microsoft Windows上无法实现的方式控制自己的命运。

这不是一个详尽的描述-整个书籍都是关于该主题的书-但是您现在应该更好地了解什么是开源软件以及为什么对您有用。


$config[zx-auto] not found$config[zx-overlay] not found