精华内容
下载资源
问答
  • 自由软件
    千次阅读
    2020-06-14 19:04:21

    自由软件、开源软件、免费软件,这三个业内最常见出现的软件术语,想必您很难用一句话就说出它们之间的区别。本文将重点和您讨论这三个术语之间的主要区别,以便您在构建技术类产品时,能够做出正确的选择。

    自由软件(Free Software)

    首先,我们必须弄清楚的是:所谓“Free Software”中的“free”一词强调的是自由,而不是价格上的免费。因此,为避免英语歧义,有时人们也称为:libre software。

    支持自由软件开发的非营利组织--自由软件基金会(Free Software Foundation,FSF,请参见-)是这样定义的:“自由软件是指那些授予用户自由共享,学习和修改权利的软件。”该名称由FSF在上个世纪八十年代所创造。也就是说,您可以对此类软件做任何想做的事情,甚至可以对其原有版本进行改进,进而从中获利。

    在FSF的定义中,自由软件必须遵守如下四个“自由支柱”(注意这些是权利而不是义务):

    • 可以在任何使用环境中自由地部署软件,而没有任何限制。例如,某个程序的许可证会在30天后过期,那么它就不是自由软件。
    • 可以自由地研究软件的工作方式,并能够根据实际需要和偏好进行修改。
    • 可以自由地二次分发(re-distribute)某个软件,以帮助有需要的人。此处的二次分发既可以是有偿的,也可以是无偿的。
    • 可以自由地增强软件的性能,并发布增强的功能,进而让社区(各种程序员或非程序员)能够从中受益。此类行为既可以是有偿的,也可以是无偿的。

    FSF同时强调:自由软件不仅仅局限于非商业用途。如果某个商业软件程序能够允许用户间接获取上述“自由”,那么它也属于该类型。

    此外,与免费工具不同的是,由于用户可以自由地进行修改,因此自由软件允许用户访问其源代码。

    从理论上说,任何自由软件的许可证,都应该使得用户能够从上述四点中受益。这些许可证既可以是保护性的,也可以是非保护性的。其中,前者将要求其使用者维持软件原有的使用,研究,分发和修改等权利(也就是业界经常提到的:著佐权,copyleft)。而后者则允许使用者在二次分发时修改这些权利。

    以下是最常用来定义自由软件的三种许可证(请参见)类型:

    • MIT(麻省理工学院)许可证:这是一种相对宽松的软件授权条款,但是对于软件的重用场景,是有所限制的。
    • GNU通用公共许可证v2:这是一种著佐权类型的许可证,它允许用户可以自由运行,研究和改进软件。
    • Apache许可证v2:这是一种许可性的证书,要求保留版权声明和免责声明。
    • BSD许可证系列:它们是一组非著佐权类许可证,在使用和二次分发软件方面提供了最小的限制。

    在完全尊重自由性的方面,Linux操作系统算是自由软件领域最典型的一个范例了。其中我们比较熟悉的一个发行版便是赫赫有名的Debian。

    开源软件(Open Source Software)

    虽然术语名称有所不同,但是开源软件与自由软件在含义上比较相近。它们有着一套相似的许可证和软件权限。

    支持开源软件开发的非营利组织--Open Source Initiative(OSI,请参见)极力倡导:任何开源软件都必须遵循如下标准:

    • 可以被免费进行二次分发。
    • 源代码应当公开、可用。
    • 可以与原始软件不同的格式进行修改和分发。
    • 软件本身不应歧视任何个人或团体。
    • 软件本身不应限制其他软件的使用或调用。

    尽管这两个术语都源于支持自由软件的思想(包括上面提到的使用,研究,共享和修改的权利),但是从历史上看,自由软件的叫法早于开源软件,而且它们的目标和理念也有所不同。

    开源一词是在上个世纪九十年代后期,针对自由软件的限制而引入的。实际上,OSI让它具有了“教育和倡导开放式开发流程的优势”(请参见)。开源软件“提供了一种与潜在的软件用户和开发人员相互动的宝贵方法。通过一个具有互动参与性的社区,大家可以创建新的或改进原有的源代码。”可见,“开源”一词强调了自由软件的一个实际好处便是:支持各种软件开发项目中的协作。换句话说,开源是一种更加面向业务的开发理念,而自由软件则是一种针对社会和道德的哲学。正是由于“开源”一词较少地强调了自由性,因此它更为企业所接受。

    我们以Android移动操作系统为例,它属于开放源代码类软件,但是不能被称为自由软件。其原因就在于它没有遵从上述四个“自由支柱”。

    为了最大程度地减少误解,并避免自由软件和开源软件之间的术语之争,业界在后续又出现了诸如FOSS(free and open source software)和FLOSS(free, libre, and open source software)之类的其他术语。

    免费软件(Freeware)

    免费软件是指您可以在不产生任何费用的情况下使用某个软件。与开源软件和自由软件不同,免费软件给最终用户提供了最小的自由度。一般而言,用户虽然可以免费地使用某个软件,但是在未经作者许可的情况下,通常无法对其进行修改,调整,以及二次分发。可见,免费软件通常是在不包含其源代码的情况下被共享使用的,这是和开源软件、以及自由软件的本质区别。

    Skype和Adobe Acrobat Reader是两款最常见的免费软件。它们虽然可以被免费使用,但是其源代码并不对外公开。在实际商业环境中,大多数开发人员通常会选择将免费软件作为免费增值的服务、或以共享软件的形式进行销售,以便鼓励用户购买其对应的、功能更为强大的版本。这里的免费增值服务是指那些免费提供的程序,它们往往需要用户花费更多的钱,才能获得额外的、更为全面的功能。

    可见,免费共享软件就是指那些最初无需任何附加费用,即可使用的程序。它们鼓励用户去分发其副本。不过,此类不收费期往往只会持续一段时间。过期以后,用户还是需要付费才能继续使用。

    更多相关内容
  • 自由软件自由社会

    2018-11-02 17:19:03
    自由软件,自由社会:理查德·斯托曼选集(第三版)
  • 什么是自由软件

    千次阅读 2020-10-31 22:16:12
    关注+星标公众号,不错过精彩内容来源 | www.gnu.org编排 |strongerHuang可能你认为免费软件,就是自由软件,那么你肯定错了,下面来听听专家怎么描述自由软件的。s...

    关注+星标公众,不错过精彩内容

    来源 | www.gnu.org

    编排 | strongerHuang

    可能你认为免费软件,就是自由软件,那么你肯定错了,下面来听听专家怎么描述自由软件的。

    strongerHuang

    1

    自由软件定义

    开源(Open source)是另外一回事:它有基于不同价值观的非常不同的哲学。其实际定义也不同,但是几乎所有的开源程序事实上都是自由软件。

    “自由软件”尊重用户的自由,并且尊重整个社区。粗略来讲,一个软件如果是自由软件,这意味着用户可以自由地运行、拷贝、分发、学习、修改并改进该软件。因此,“自由软件”是关乎自由的问题,与价格无关,软件如何定价并不影响它是否被归类为自由软件。

    英文中,我们使用Free Software。由于Free一词既有自由,也有免费的意思。而Free Software中的Free是指“自由言论”中的自由,而非“免费”这一意项。为避免歧义,在使用英文时,我们也会借用法语或西班牙语的“Libre Software”来指自由软件。

    我们支持软件用户的自由,因为我们坚信这是每个用户应得的。有了这些自由,软件用户,无论是个人还是集体,都可以掌控所运行的软件,并决定这些程序如何为自己服务。如果一个软件令用户失去了这种控制权,我们则称它为“非自由”的,或“专有”的程序。与自由软件相反,非自由软件会操控它的用户,而软件的开发者则掌控着软件。这使得非自由软件成为了非正义力量的帮凶。

    strongerHuang

    2

    四项基本自由

    如果一个软件是自由软件,那么它必须为用户提供以下四项基本自由:

    自由度0:无论用户出于何种目的,必须可以按照用户意愿,自由地运行该软件。

    自由度1:用户可以自由地学习并修改该软件,以此来帮助用户完成用户自己的计算。作为前提,用户必须可以访问到该软件的源代码。

    自由度2:用户可以自由地分发该软件的拷贝,这样就可以助人。

    自由度3:用户可以自由地分发该软件修改后的拷贝。借此,用户可以把改进后的软件分享给整个社区令他人也从中受益。作为前提,用户必须可以访问到该软件的源代码。

    一个软件只有提供了以上所有的自由给它的用户,才可以被成为自由软件。否则,它就是非自由的。尽管我们也可以比较非自由软件为其用户提供的自由度,但是我们认为,无论如何,非自由软件本身是不道德的。

    无论在哪种情况下,只有所有用户使用的代码都满足了这四项基本自由,该程序才能被视作自由软件。例如,有两个程序,甲程序运行的时候会自动调用乙程序。发布甲程序意味着用户必须使用到乙程序,那么必须甲乙两个程序都是自由的,甲程序才是自由的。如果通过修改甲程序,使其不再依赖乙程序,那么仅仅以自由软件的形式发布甲程序即可。

    “自由软件”不等于“非商业软件”。一个自由软件必须允许商业用户、商业开发和商业发布。商业开发自由软件早就司空见惯了,这样的自由软件非常重要。你可能需要花钱购买自由软件的拷贝,也可能免费拿到。但是无论你如何获得你的拷贝,作为用户,你的四大自由都会被保证,你可以自由地运行,修改,发布甚至出售你拿到的自由软件。

    假如获得自由软件拷贝的用户遵守了自由软件的许可证条款,那么该自由软件必须为用户提供自由软件的四项基本自由。在自由方面对用户加以限制或者要求付费才能实践这些自由和不赋予用户自由没有什么两样,因此这样的程序不是自由软件。

    strongerHuang

    3

    澄清几点

    在本节的以下部分,我们会进一步准确地解释这些自由针对各种问题会如何扩展才能使软件自由。

    自由度0:无论用户出于何种目的,必须可以按照用户意愿自由地运行该软件。

    “自由地运行程序”(自由度0)意味着任何人或组织可以在任何(支持的)计算机系统上,出于任何目的去运行该程序,并且没有义务通知软件的开发者或任何个人或团体。此处,用户的目的是重点,而非开发者的目的。如果你是该程序的用户,那么你就可以自由地运行该程序。同理,如果你把程序发布给别人,那么此人也成了软件的用户,他也可以出于自己的任何目的运行该软件。然而,你作为软件的发布者,不可将自己的目的强加于你的用户。

    “自由地运行程序”意味着没有人可以禁止或阻止用户运行该程序。这和该程序的功能特性没有关系,既不考虑该程序在特定环境下的可用性,也不考虑该程序对特定计算的有效性。

    例如,如果代码随意地拒绝某些有意义的输入——或者甚至无条件地失效——这就可能使该程序不那么有用,甚至可能完全无用,但是这并不妨碍用户运行该程序的自由,因此,这和自由之零并无矛盾。如果该程序是自由的,那么其用户可以克服这些无用之处,因为自由之一和自由之三允许用户和社区修改和发表不带有随意代码的改进版本。

    学习和更改程序源代码的自由

    自由度1和3(自由地修改软件;自由地发布修改后的软件)意味着用户必须有权访问程序的源代码。由此,访问源代码是成为自由软件的必要条件。混编(Obfuscated)后的“源代码”不是真正的源代码,不能被算作此处讨论的源代码。

    自由度1(自由地运行程序)包括自由地运行自己修改后的程序以替代原版程序。如果程序是跑在某种设备上,该设备可以运行别人修改的软件但不运行你修改的软件—这个方法叫做“tivoization”或者 “锁死”,或者(用其发明者的术语)叫做“安全启动”—自由度1将被视为无法满足。该设备中的程序也将不被视为自由软件,即使它们的源代码是自由的。

    倘若要修改某个程序,一种很重要的方法就是从别的程序中拿来现成的函数,或模块来使用。如果某个程序的许可证中禁止你使用其他合理授权的软件的代码来修改该程序—比如,如果某个程序的许可证要求你只能使用你拥有版权的代码—那么这个程序的许可证将不被视为自由软件许可证。

    对软件的修改可能是出于各种目的。某个特定的修改究竟是好是坏,这本身是个非常主观的事情。自由软件许可证不能对用户修改软件做任何限制,例如,不能仅仅因为某人觉得哪处修改不够好,就禁止用户自己做这个改动。

    自由度2:用户可以自由地分发该软件的拷贝。

    自由分发(自由度2和3)意味着你(即,软件用户)可以把软件原版或修改版再发布给其他用户。你可以免费发布,也可以收取费用。软件可以发布给任何地方的任何人。所谓“自由”,意味着你的这些行为(发布软件原版或修改版给其他用户;或其他自由度中提及的行为)不必事先征得任何人的许可,也不必为此额外支付任何费用。

    用户可以自由地运行该程序或对程序进行修改。如果仅仅私下自己修改或运行该程序,那么你没有义务将该行为公开给任何人。如果你发布了自己修改后的程序,那么你也没有任何义务将该修改行为告知给哪个或哪些指定的人或组织。

    自由度3允许用户自由地发布软件的修改版。自由软件不一定要求修改版必须继续采用自由软件许可证。换句话说,自由软件许可证可以不必是copyleft许可证。但是,如果一个软件许可证要求修改后的软件必须以非自由软件的形式发布,那么该许可证则不被视为自由软件许可证。

    “自由地分发软件的拷贝”意味着必须允许用户自由地发布软件的原版或用户自己的修改版。无论那个版本,用户都可以选择发布程序的二进制或可执行文件,也可以发布程序的源代码。(以可执行文件的形式发布程序可以让人方便安装,这一点对于推广自由软件也至关重要。)对于某些程序,也许无法或者不必发布二进制或可执行文件(一些编程语言的实现可能并不支持,例如某些脚本语言),但是用户必须有权利以任何方式生成二进制或可执行文件,并且发布这些生成的软件。

    Copyleft(公共版权)

    当然,只要不违背这些核心自由,自由软件许可证也可以额外添加一些要求,限制软件的分发步骤。例如,copyleft就是常见的一种限制。简言之,copyleft要求软件的修改版必须同样以自由软件的形式发布。这条限制与核心自由并不冲突,相反,copyleft可以用来很好地保护软件用户的自由。

    strongerHuang

    4

    打包和发行的详细规则

    自由软件可以对修改版的打包或分发方式做一定的限制。这些限制不得与前面提到的四大自由相矛盾,不得直接或间接地限制用户运行,修改或发布软件。例如,某些自由软件可以要求修改版不得使用软件的原有名字发布;不能使用软件的原有商标;必须标明软件来自谁的修改等等。只要这些限制不会明显地限制用户再发布软件的修改版,那么它们就是可以接受的。既然已经对软件修改了,那么你估计也就不会在乎针对这些额外的小限制再做一点修改了。

    同理,自由软件也可以要求用户“如果以这种方式发布,那么用户必须也可以从另外某一渠道获得”。比如,某个自由软件可能会要求如果发布了修改版,那么必须也要给原作者一份修改后的拷贝。(注意:此处前提是软件必须发布,用户可以私下修改软件而不发布,这样也就不必把修改版发给开发者了。)另外还有一些规则也不会与自由软件原则冲突,比如软件可以要求修改后的版本发布时需要附带相应的原版软件的代码。

    有一些特例需要额外讨论:如果某软件许可证要求修改后的软件必须修改可执行文件的名字,那么必须保证软件运行的环境允许修改文件名或具备某种别名机制,否则该要求将被视作与自由软件原则相背。因为软件的可执行文件可能会被其他第三方软件调用,而文件名则是这种调用的基础。别名机制可以保证用户在遵守该要求的前提下,顺利将原版软件替换成修改版,并且不会影响依赖该软件的第三方程序。

    strongerHuang

    5

    出口条例

    一些政府的出口限制或贸易制裁可能会影响到软件用户在国际范围内发布软件的自由。软件开发者也许没有能力去改变这些现实,但是我们可以拒绝自我审查。自由软件的开发者不得在软件许可证中要求用户遵守哪条特定法律,因为开发者无法保证用户所在国度或地区具备该法律条款。这样,自由软件许可证就不会给用户在法律之外添加额外的违反基本自由的限制。

    当然,自由软件可以仅仅在许可证中提及某条出口条例或相关法律,而不强制要求用户遵守。这样做只是为用户提供了信息而没有实际限制用户。如果某条出口限制法律是普遍存在,全部用户所在的地区都做出该限制的,那么在许可证中要求用户遵守该条例也不会被视为限制用户的自由。然而,这会存在潜在问题:一旦该条出口限制法律在某个用户的所在地区做了修改,那么该许可证也就不被视作自由的。

    strongerHuang

    6

    法律考虑

    要落实这些自由度,就应该保证:如果用户遵守许可证上的要求,那么这些自由度就必须是长久的,不可更改的。如果软件的开发者有权利随意修改已发布软件的许可证,那么该软件也不被视为自由软件。

    自由软件许可证不得要求用户额外遵守哪些非自由软件的许可证。例如,自由软件许可证不得要求用户必须遵守“所有使用的软件的许可证”。因为用户可能使用非自由软件,而要求用户遵守全部使用的软件的许可证则意味着需要遵守非自由软件许可证,这要的要求将被视作非自由的。

    自由软件许可证可以指定与软件相关的诉讼需要遵守哪个地区的法律,或需要在哪里提起诉讼。

    strongerHuang

    7

    基于合同的许可证

    绝大部分自由软件许可证是基于版权的。基于版权,能采取的限制往往相对有限。如果一个许可证基于版权并且遵照上述的自由软件原则,那么它很可能被视作是自由软件许可证。当然,我们也见过一些例外,不过这些还很少见。然而有些自由软件许可证是基于合同的。合同可能会有更多的额外要求。这就意味着基于合同的许可证可能会在很多不经意的地方违背自由软件原则,导致软件不被视作自由软件。

    很遗憾,我们无法列出所有可能的意外情况。如果一份基于合同的许可证对用户做出了一些额外限制,并且这些限制是不可能包含在一份基于版权的许可证中的,那么我们就需要再三考虑它是否可以被视作自由许可证。很多情况下,这些许可证都是非自由的。

    strongerHuang

    8

    其他

    除了以上描述的内容,还有一些需要注意的,比如:

    • 在谈论自由软件时使用正确的词汇

    • 如何诠释这些标准

    • 获得关于自由许可证的帮助

    • 软件之外的手册文档

    • ······

    关于自由软件,GNU进行多次修订:.

    ------------ END ------------

    推荐阅读:

    SEGGER的三款RTOS有什么特点?

    Keil MDK如何将变量存储在指定内存地址

    几款优秀的支持C、C++等多种语言的在线编译器

    关注微信公众号『strongerHuang』,后台回复“1024”查看更多内容,回复“加群”按规则加入技术交流群。

    长按前往图中包含的公众号关注

    点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看

    展开全文
  • 《若为自由故:自由软件之父理查德·斯托曼传》用叙事体的风格,讲述了理查德·斯托曼的成长经历和传奇人生。本书记录了斯托曼从一名黑客成为自由软件的倡导者,并发起自由软件运动的成长经历。作者通过接触斯托曼...
  • 自由软件、开源软件、免费软件之间的区别

    万次阅读 多人点赞 2019-07-27 20:00:29
    什么是自由软件?他们就是免费软件? 很多人经常把开源软件和自由软件混为一谈,也常常会有人把开源软件和免费软件这两个概念混淆在一起,其实当我第一此站在HUSA的讲台上的时候,自己对开源的了解,也只是狭隘的...

    一。好汉一问:什么是开源软件?什么是自由软件?他们就是免费软件?

         很多人经常把开源软件和自由软件混为一谈,也常常会有人把开源软件和免费软件这两个概念混淆在一起,其实当我第一此站在HUSA的讲台上的时候,自己对开源的了解,也只是狭隘的定位为:免费的,公开源代码的。也难怪会会被下面的高人嘲笑自己对开源的理解太肤浅了。

         好啦,下面先一一给出他们的定义然后在定义中找出他们之间的差别吧。

     

    开源软件是指在软件发行的时候,附上软件的源代码,并授权允许用户更改/自由再散布/衍生著作,开源并不抵制商业收费。 

     

    免费软件就是免费提供给用户使用的软件,但是其免费的时候,通常都会有其他的限制,比如其源码不一定会公开,而且使用者也并没有使用、复制、研究、修改和再散布的权利.

     

    自由软件是一项思想运动,强调用户拥有如何使用软件的自由。即

    (1)可以自由地运行;

    (2)可以自由地拷贝;

    (3)可以自由地修改;

    (4)可以自由地再发行。

    这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。(英语中FREE有自由和免费的意思,比如自由的话语权,免费的夜宵)

     

    (开源软件or自由软件)VS免费软件

         免费软件,只是免费提供给用户使用,并不包含公开其源码的内容。提供情况下,免费软件免费的目的无非出于以下三个:当用户多了,免费软件再采取一些其他的增值服务等等手段来收费。

          

    题外话:说道这个,大家想到了什么?没错,3Q大战的两位大哥都是这种类型。TX要是公开QQ的源码,我们知道其通信协议的话,恐怕早已玩完了。

      

         同样,开源软件,只是在软件发行的时候,附上软件的源代码,并且授权允许用户更改/自由再散布/衍生著作。商业软件并不抵制商业收费,所以,开源软件不一定就是免费的(当然,通常都是。)而且,开源的目的,并不是做慈善,而是通过更多人的参与,完善软件的缺陷。 

     

    自由软件VS开源软件

         “自由软件运动”是一项倡导软件这种知识产品应该免费共享的社会运动,它主要是从社会伦理学,道德的高度,强调我们每个人都有自由使用软件的权利。这种权利不应该被软件私有所破坏。

          反对软件私有,首先反对的就是软件的知识产权、版权,所以自由软件运动明确反对以申请专利的形式将软件产品据为私有。为了表达对Copyright(知识产权)的憎恶,斯托尔曼甚至生造了一个单词Copyleft。

          自由软件运动者还创造出GPL(通用公众许可协议)这一许可协议来保证和保护同道中人彼此共享软件产品。GPL的基本原则就是:你可以“自由”地运行、拷贝、修改和再发行使用GPL授权的软件,但你也必须允许别人也能“自由”地运行、拷贝、修改和再发行该软件以及你在该软件的基础上加以修改而形成的衍生软件产品。

          我们不难发行,自由软件运动有点太极端、太理想化了,生活在这么一个商品化社会,要完全如此的反商业,还是很有难度的。

         于是,发展到了后面,一中“自由软件”和“商业软件”之间的折中------“开源软件”就此诞生了,它既继承了“自由软件”所提倡的知识共享的理念,同时又允许人们以专利的形式从知识产品中谋取利益,从而保护了人们生产、创造知识产品的积极性。

         所以,我们可以认为:自由软件是开源软件的一个子集,自由软件的定义比开源软件的更加严格,自由软件是一种道德精神层面的维护用户使用的自由。

         开源软件和自由软件一样,具备一可以免费使用二是公布源代码的主要特征,所以在不刻意追究微小差异的情况下,我们可以认为开源软件和自由软件是两个等价的概念。

     

     

        那么,接下来我们主要讨论为什么要开源?这或许才是开源精神的精髓所在。首先,我们来了解不开放源代码(软件私有)都有哪些坏处

    二。好汉二问:软件私有有哪些弊端?

        软件私有一宗罪:浪费社会财富。我们假设一个软件已经完整的开发出来了,那么开发这个软件的所有投资都已经付出了,从社会的角度来看,任何限制软件使用的行为都是对其投资的浪费,对社会财富的浪费。

        软件私有二宗罪:不利于软件的使用。我们假设一个已有的软件不能满足我们的需求,而事实上,我们只需要在原有的代码上修改很少的一部分,就能满足我们的需要。 在这种情况下,我们用户要么重新写一个软件,用么忍受现有软件的不完善。

        软件私有三宗罪:不利于软件的开发。第二条是从用户的角度来看,软件私有不利于软件的使用。从软件本身发展的角度来看,软件私有,将使软件的开发集中在少数那么几个开发者之间进行,而不能使软件能够得到更多使用者和开发者的意见,集百家之长。

        软件私有四宗罪:不利于软件开发者学习。一个好的软件,其中有无数值得我们学习借鉴的经验。但是因为软件私有,我们无法获得属于商业机密的源代码,无法站在巨人的肩膀上学习。

     

    知道了软件私有的这些坏处,那么开源能帮我们解决什么呢?

    三。好汉三问:开源能解决哪些问题?

     使软件能得到最大范围的使用。从用户的角度,使用户能根据自己的需要来使用、定制软件。从软件本身的角度,开源,让更多的人参与,更有助于软件的完善,开发出更优秀的软件。从软件行业的角度,极大的提高软件开发的生产力,我们能够自由的复用别人的开发成果,而避免重复劳动。通过开发的源代码,让软件开发者更好的学习。

     

     

    开源的协议:介绍了这么多有关开源的概念后,我们很有必要弄明白另外一个概念-----开源的协议。

         接下来,我将为各位看官一一分下几种常见的开源协议。(至少是我觉得常见)

    四。好汉四问:有哪些开源协议,他们有什么异同?

    GPL(General public licence) :

          该协议就是GNU运动发布的协议,GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也是 GPL代表的自由软件和普通开源软件的最大区别所在。

          GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。我们熟知的linux就是在GPL下发布的。

     

    BSD协议: 

          BSD开源协议是一个给予用户自由度很高的协议,在该协议下,用户可以自由的使用、修改源代码,也可以将修改后的源代码作为开源软件或者私有软件发布。BSD是对商业集成很友好的协议,BSD协议鼓励代码的共享、重用,但是要求尊重作者的著作权。

     

    Apache Licence 2.0:

          Apache Licence 2.0 是著名的开源组织Apache所采用的协议,和BSD很类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。

          我们熟知的Tomcat、Apache、Hadoop等等都是在Apache协议下发布的。

     

     

          经过上面几个问题的折磨,坚持到现在的好汉,我想,回答下面几个问题,就如同砍瓜切菜一般容易了吧。

    五。好汉五问:开源都有那几种盈利模式?

         首先,开源不抵制软件授权收费。

         其次,可以提供开源免费的软件,但是针对软件的服务和维护可以进行收费。

         再次,诸如IBM,HP这样的硬件厂商会给开源社区提供资金支持----他们资金则可以卖出更多的基于开源软件的硬件。

     

    六。好汉六问:开源会暴露软件的缺陷,带来安全隐患?

          既然开源了,那么谁都可以看到源代码,这样会不会让黑客发现其中的漏洞,然后利用它,从而产生安全隐患呢?这是个很自然的问题,我曾经也困扰很久。

          但是,事实恰好相反,一个软件,即使你不开发源代码,一个黑客想找,也能找到其中的漏洞(想想我们在windows下泛滥的病毒吧)。

    但是,工程师们知道了它的漏洞,因为手头没有源代码,没有办法去改进它;骇客知道了它的漏洞,却可以利用它!

         所以,软件私有是锁不住安全的,软件私有只是更不利于安全而已!

    真正好的安全,需要完善的算法,周围的技术,同样重要的是完整的制度保障(扯远了?)

     

    七。好汉七问:软件私有可以为软件开发者提供必要的经济支持,而如果没有这种经济支持,那么将没有人会去开发软件?

        显然,这是个概念上的错误。具体答案,麻烦您看完上面全文就明白了。

    展开全文
  • 什么是自由软件?他们就是免费软件? 很多人经常把开源软件和自由软件混为一谈,也常常会有人把开源软件和免费软件这两个概念混淆在一起,其实当我第一此站在HUSA的讲台上的时候,自己对开源的了解,也只是狭隘的...

    一。好汉一问:什么是开源软件?什么是自由软件?他们就是免费软件?

         很多人经常把开源软件和自由软件混为一谈,也常常会有人把开源软件和免费软件这两个概念混淆在一起,其实当我第一此站在HUSA的讲台上的时候,自己对开源的了解,也只是狭隘的定位为:免费的,公开源代码的。也难怪会会被下面的高人嘲笑自己对开源的理解太肤浅了。

         好啦,下面先一一给出他们的定义然后在定义中找出他们之间的差别吧。

     

    开源软件是指在软件发行的时候,附上软件的源代码,并授权允许用户更改/自由再散布/衍生著作,开源并不抵制商业收费。 

     

    免费软件就是免费提供给用户使用的软件,但是其免费的时候,通常都会有其他的限制,比如其源码不一定会公开,而且使用者也并没有使用、复制、研究、修改和再散布的权利.

     

    自由软件是一项思想运动,强调用户拥有如何使用软件的自由。即

    (1)可以自由地运行;

    (2)可以自由地拷贝;

    (3)可以自由地修改;

    (4)可以自由地再发行。

    这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。(英语中FREE有自由和免费的意思,比如自由的话语权,免费的夜宵)

     

    (开源软件or自由软件)VS免费软件

         免费软件,只是免费提供给用户使用,并不包含公开其源码的内容。提供情况下,免费软件免费的目的无非出于以下三个:当用户多了,免费软件再采取一些其他的增值服务等等手段来收费。

          

    题外话:说道这个,大家想到了什么?没错,3Q大战的两位大哥都是这种类型。TX要是公开QQ的源码,我们知道其通信协议的话,恐怕早已玩完了。

      

         同样,开源软件,只是在软件发行的时候,附上软件的源代码,并且授权允许用户更改/自由再散布/衍生著作。商业软件并不抵制商业收费,所以,开源软件不一定就是免费的(当然,通常都是。)而且,开源的目的,并不是做慈善,而是通过更多人的参与,完善软件的缺陷。 

     

    自由软件VS开源软件

         “自由软件运动”是一项倡导软件这种知识产品应该免费共享的社会运动,它主要是从社会伦理学,道德的高度,强调我们每个人都有自由使用软件的权利。这种权利不应该被软件私有所破坏。

          反对软件私有,首先反对的就是软件的知识产权、版权,所以自由软件运动明确反对以申请专利的形式将软件产品据为私有。为了表达对Copyright(知识产权)的憎恶,斯托尔曼甚至生造了一个单词Copyleft。

          自由软件运动者还创造出GPL(通用公众许可协议)这一许可协议来保证和保护同道中人彼此共享软件产品。GPL的基本原则就是:你可以“自由”地运行、拷贝、修改和再发行使用GPL授权的软件,但你也必须允许别人也能“自由”地运行、拷贝、修改和再发行该软件以及你在该软件的基础上加以修改而形成的衍生软件产品。

          我们不难发行,自由软件运动有点太极端、太理想化了,生活在这么一个商品化社会,要完全如此的反商业,还是很有难度的。

         于是,发展到了后面,一中“自由软件”和“商业软件”之间的折中------“开源软件”就此诞生了,它既继承了“自由软件”所提倡的知识共享的理念,同时又允许人们以专利的形式从知识产品中谋取利益,从而保护了人们生产、创造知识产品的积极性。

         所以,我们可以认为:自由软件是开源软件的一个子集,自由软件的定义比开源软件的更加严格,自由软件是一种道德精神层面的维护用户使用的自由。

         开源软件和自由软件一样,具备一可以免费使用二是公布源代码的主要特征,所以在不刻意追究微小差异的情况下,我们可以认为开源软件和自由软件是两个等价的概念。

     

     

        那么,接下来我们主要讨论为什么要开源?这或许才是开源精神的精髓所在。首先,我们来了解不开放源代码(软件私有)都有哪些坏处

    二。好汉二问:软件私有有哪些弊端?

        软件私有一宗罪:浪费社会财富。我们假设一个软件已经完整的开发出来了,那么开发这个软件的所有投资都已经付出了,从社会的角度来看,任何限制软件使用的行为都是对其投资的浪费,对社会财富的浪费。

        软件私有二宗罪:不利于软件的使用。我们假设一个已有的软件不能满足我们的需求,而事实上,我们只需要在原有的代码上修改很少的一部分,就能满足我们的需要。 在这种情况下,我们用户要么重新写一个软件,用么忍受现有软件的不完善。

        软件私有三宗罪:不利于软件的开发。第二条是从用户的角度来看,软件私有不利于软件的使用。从软件本身发展的角度来看,软件私有,将使软件的开发集中在少数那么几个开发者之间进行,而不能使软件能够得到更多使用者和开发者的意见,集百家之长。

        软件私有四宗罪:不利于软件开发者学习。一个好的软件,其中有无数值得我们学习借鉴的经验。但是因为软件私有,我们无法获得属于商业机密的源代码,无法站在巨人的肩膀上学习。

     

    知道了软件私有的这些坏处,那么开源能帮我们解决什么呢?

    三。好汉三问:开源能解决哪些问题?

     使软件能得到最大范围的使用。从用户的角度,使用户能根据自己的需要来使用、定制软件。从软件本身的角度,开源,让更多的人参与,更有助于软件的完善,开发出更优秀的软件。从软件行业的角度,极大的提高软件开发的生产力,我们能够自由的复用别人的开发成果,而避免重复劳动。通过开发的源代码,让软件开发者更好的学习。

     

     

    开源的协议:介绍了这么多有关开源的概念后,我们很有必要弄明白另外一个概念-----开源的协议。

         接下来,我将为各位看官一一分下几种常见的开源协议。(至少是我觉得常见)

    四。好汉四问:有哪些开源协议,他们有什么异同?

    GPL(General public licence) :

          该协议就是GNU运动发布的协议,GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也是 GPL代表的自由软件和普通开源软件的最大区别所在。

          GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。我们熟知的linux就是在GPL下发布的。


    BSD协议: 

          BSD开源协议是一个给予用户自由度很高的协议,在该协议下,用户可以自由的使用、修改源代码,也可以将修改后的源代码作为开源软件或者私有软件发布。BSD是对商业集成很友好的协议,BSD协议鼓励代码的共享、重用,但是要求尊重作者的著作权。

     

    Apache Licence 2.0:

          Apache Licence 2.0 是著名的开源组织Apache所采用的协议,和BSD很类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。

          我们熟知的Tomcat、Apache、Hadoop等等都是在Apache协议下发布的。

     

     

          经过上面几个问题的折磨,坚持到现在的好汉,我想,回答下面几个问题,就如同砍瓜切菜一般容易了吧。

    五。好汉五问:开源都有那几种盈利模式?

         首先,开源不抵制软件授权收费。

         其次,可以提供开源免费的软件,但是针对软件的服务和维护可以进行收费。

         再次,诸如IBM,HP这样的硬件厂商会给开源社区提供资金支持----他们资金则可以卖出更多的基于开源软件的硬件。

     

    六。好汉六问:开源会暴露软件的缺陷,带来安全隐患?

          既然开源了,那么谁都可以看到源代码,这样会不会让黑客发现其中的漏洞,然后利用它,从而产生安全隐患呢?这是个很自然的问题,我曾经也困扰很久。

          但是,事实恰好相反,一个软件,即使你不开发源代码,一个黑客想找,也能找到其中的漏洞(想想我们在windows下泛滥的病毒吧)。

    但是,工程师们知道了它的漏洞,因为手头没有源代码,没有办法去改进它;骇客知道了它的漏洞,却可以利用它!

         所以,软件私有是锁不住安全的,软件私有只是更不利于安全而已!

    真正好的安全,需要完善的算法,周围的技术,同样重要的是完整的制度保障(扯远了?)

     

    七。好汉七问:软件私有可以为软件开发者提供必要的经济支持,而如果没有这种经济支持,那么将没有人会去开发软件?

        显然,这是个概念上的错误。具体答案,麻烦您看完上面全文就明白了。

    展开全文
  • 自由软件之父理查德·斯托曼传
  • 要说一个软件是 “自由” 的,这意味着它尊重 用户的基本自由:运行这个软件,学习和修改它,以及重新发布它的原版或修改版。这是个关于自由权利的问题,而非价格高低。我们讨论的自由是如同自由言论般的权利,不是...
  • 两本非扫描版PDF书,关于自由软件之父理查 德·斯托曼的,第一个是若为自由故——自由软件之父理查 德·斯托曼传,第二本是理查德·斯托曼与自由软件运动,请支持自由软件
  • awesome-free-software, 自由软件中免费的免费名单 免费自由软件 自由软件"意味着尊重用户的软件'自由和社区。 这意味着用户有自由运行。复制。分发。研究。改变和改进软件。 因此,"自由软件"是自由的,而不是价格...
  •  所以,我们可以认为:自由软件是开源软件的一个子集,自由软件的定义比开源软件的更加严格,自由软件是一种道德精神层面的维护用户使用的自由。  开源软件和自由软件一样,具备一可以免费使用二是公布源...
  • 什么是 GPL GNU,自由软件

    千次阅读 2019-04-10 14:00:42
    GPL全称为 General Public License,中文名为通用公共...GNU计划由Richard Stallman(理查德•马修•斯托曼)发起,主要目标是创建GNU操作系统,其内容软件完全以GPL方式发布。GNU名称来自GNU’s Not Unix!的缩写,汉...
  • 开源软件是指在软件发行的时候,附上软件的源代码,并授权允许用户更改/自由再散布/衍生著作,开源并不抵制商业收费。  ... 自由软件是一项思想运动,强调用户拥有如何使用软件的自由。即  (1
  • 自由软件之父Richard Stallman及其思想

    千次阅读 2016-05-13 20:19:52
    GNU计划,又称革奴计划,是由Richard ...为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU Genera
  • 社区或志愿者进行研究活动,发布研究成果——源代码,而商业公司根据公开的源代码继续开发,将源代码转变为软件产品、服务,从而获利。这样,既促进了知识的共享,同时又能确保知识转化为可靠的商品。 “开源软件...
  • 商业软件、共享软件和自由软件

    千次阅读 2013-03-24 19:26:15
    商业软件、共享软件和自由软件 转自:http://www.almond-lawyer.com/fanbuzhengdangjingzheng/250.htm  计算机软件根据发行方式分类的不同,可以分为商业软件、共享软件和自由软件。  所谓“商业软件”,是指...
  • 自由软件运动与GNU项目

    千次阅读 2016-12-10 04:38:52
    自由的追求 【内容摘要】  自由软件意味着自由的...” 理查德•马修•斯托曼(Richard Matthew Stallman,简称RMS)是自由软件之父,他是自由软件运动的精神领袖、GNU计划以及自由软件基金会的创立者。作为一个著名
  • 自由软件”已过时?

    千次阅读 2021-05-08 00:32:50
    【CSDN 编者按】在开源吞噬世界的趋势之后,更早发展起来的自由软件也再次进入大众视野,然而自由软件和开源软件究竟有什么区别?近日,软件架构师 Robert M. Lefkowitz 发...
  • 作为自由软件倡导者,拒绝倡导开源。
  • Gnu自由软件

    千次阅读 2013-07-12 12:06:19
    从1990年代中开始写自由软件的公司和个人太多了,因此自由软件基金会的雇员和自愿者主要在自由软件运动的法律和结构问题上工作。   OSI、FSG和OSDL   开放源代码促进会OSI(Open Source Initiative)...
  • 已经有许多开发者通过将自由软件上架应用商店,以获取经济报酬来支持他们的自由软件开发(在自由软件许可证之下,以合法形式),而微软却打算禁止这种行为。著名的Krita绘画软件和视频编辑软件ShotCut都在微软的应用...
  • 自由软件和开源软件都意味着将软件的可执行文件和源码免费提供给用户,而且用户可以使用、复制、修改和发行(分发)该软件。 但是自由软件走得更远一些,它的原则是:你可以“自由”地运行、拷贝、修改和在发行使用...
  • 开源软件与自由软件的区别

    千次阅读 2009-10-21 15:39:00
    开放原始码软体与自由软件形式上的差异开放原始码(open source)软 体与自由软体是两个不同的概念,只要符合开源软件定义的软件就能被称为开放源代码软件。自由软件是一个比开源软件更严格的概念,因此所有自由软件...
  • Linux在不同语境下的含义不同,一般指Linux内核(kernel),内核可以简单...GNU倡导所谓的“free software”,翻译过来就是自由软件自由软件的意思是说每个人都有使用、传播、修改软件的自由,它有自己的版权申明
  • 作者 | 苏宓 出品 | CSDN(ID:CSDNnews) “I‘m Back!” 近日,理查德·斯托曼(Richard M. Stallman)公开表示,想要回到 ...另一方表示,斯托曼在自由软件运动的发展中功不可没,他的重新加入,将对社区起到重大.
  • 开源许可可能是使用开源代码最重要的一环,他不仅赋予程序员使用代码的...此协议规定:当一个开源软件被声明为GPL时,作为使用者的我们有权对该源代码进行修改以及重新发布,也就是此软件完全开放,但是与此同时,...
  • 再谈自由软件在中国

    千次阅读 2014-08-18 02:37:28
    2007年9月10日,我写了短文“自由软件在中国”,至今,时间已经过去7个年头。现在,重温此文很有意义。  当今,要是说起“自由软件”,那就话长了。2007年6月29日,美国自由软件基金会(FSF)正式颁布GPLv3(此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 325,973
精华内容 130,389
关键字:

自由软件

友情链接: blinker-library-master.zip