<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Open Source Software on farmer3-c Blog</title><link>https://farmer3-c.github.io/tags/open-source-software/</link><description>Recent content in Open Source Software on farmer3-c Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 28 Jan 2026 21:03:52 +0800</lastBuildDate><atom:link href="https://farmer3-c.github.io/tags/open-source-software/index.xml" rel="self" type="application/rss+xml"/><item><title>开源软件导论</title><link>https://farmer3-c.github.io/posts/open-source-intro/</link><pubDate>Wed, 28 Jan 2026 21:03:52 +0800</pubDate><guid>https://farmer3-c.github.io/posts/open-source-intro/</guid><description>&lt;h2 id="第一章开源概述"&gt;第一章：开源概述&lt;/h2&gt;
&lt;h4 id="开源是什么"&gt;开源是什么&lt;/h4&gt;
&lt;p&gt;在 20 世纪 70 年代末，Richard Stallman 在 MIT 人工智能实验室安装了一台新的打印机，当时他在那里工作，这台打印机运行专有固件。打印机出现问题时，理查德·斯托曼很沮丧，因为他无法获得打印机软件的副本并编辑代码来解决。这种挫败感时自由与开源运动的起源。&lt;/p&gt;
&lt;p&gt;对于所有人而言，开源的好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;获取任何给定工作的源代码、配置文件和文档。&lt;/li&gt;
&lt;li&gt;自由地使用、修改和分发这些代码。&lt;/li&gt;
&lt;li&gt;摆脱厂商的恶意绑定&lt;/li&gt;
&lt;li&gt;更高的合作程度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于开源的使用者而言，他们想要达成目标不会受到制约，最大程度地发挥自己的意愿。
对于开源的贡献者而言，他们可以在不付出实际代价的情况下，为开源软件做出贡献，在自己的简历中展示自己的能力。&lt;/p&gt;
&lt;h4 id="开源历史上的-6-个关键时刻"&gt;开源历史上的 6 个关键时刻&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;RMS 和打印机
在 20 世纪 70 年代末，Richard·M·Stallman（RMS）是麻省理工学院的一名员工程序员。他的部门像当时许多大学一样，共享一台 PDP-10 计算机和一台打印机。他们遇到的一个问题是，纸经常在打印机中卡住，导致一连串的打印任务堆积在队列中，直到有人修理好卡纸问题。为了解决这个问题，麻省理工学院的员工想出了一个很棒的社会性解决方案：他们编写了打印机驱动程序的代码，以便当打印机卡住时，会向所有当前等待打印任务的人发送一条消息：&amp;ldquo;打印机卡纸了，请修理。&amp;ldquo;这样，它就不会长时间卡住。&lt;/p&gt;
&lt;p&gt;1980 年，实验室接受了一台全新的激光打印机的捐赠。然而，当斯托曼要求获取打印机驱动程序的源代码，以便重新实现社会黑客技术，让系统在纸张卡住时通知用户时，他被告知这是专有信息。他听说另一所大学的一位研究员拥有一个研究项目的源代码，当机会出现时，他请求这位同事分享——而对方拒绝时他感到震惊。他们签署了保密协议（NDA），斯托曼认为这是对黑客文化的背叛。&lt;/p&gt;
&lt;p&gt;20 世纪 70 年代末至 80 年代初，软件被视为有价值，这种软件传统上与硬件一起以源代码形式提供。越来越多的麻省理工学院研究人员开始创办软件公司，而销售软件许可证是他们商业模式的关键。保密协议和专有软件许可证成为常态，最好的程序员被从麻省理工学院等大学招聘来参与私人开发项目，在那里他们无法再分享或合作。&lt;/p&gt;
&lt;p&gt;作为对此的反应，斯托曼决定创建一个完整的操作系统，它不会剥夺用户理解其工作原理的自由，并且如果他们愿意，还可以进行修改。这就是自由软件运动的诞生。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;GNU 的创建和自由软件的兴起&lt;/p&gt;
&lt;p&gt;到 1983 年底，斯托曼准备好宣布他的项目并招募支持者和助手。1983 年 9 月，他宣布了 GNU 项目的创建（GNU 代表 Gnu&amp;rsquo;s Not Unix——一个递归缩写）。该项目的目标是克隆 Unix 操作系统，以创建一个赋予用户完全自由的系统。&lt;/p&gt;
&lt;p&gt;1984 年 1 月，他开始全职从事该项目，首先创建了一个编译器系统（GCC）和各种操作系统工具。1985 年初，他发布了《GNU 宣言》，号召程序员加入，并成立了自由软件基金会以接受捐赠来支持这项工作。这份文件是自由软件运动的创始章程。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;《GNU 通用公共许可证》的编写&lt;/p&gt;
&lt;p&gt;直到 1989 年，自由软件基金会和理查德·斯托曼（RMS）编写并发布的软件都没有统一的许可证。Emacs 在 Emacs 许可证下发布，GCC 在 GCC 许可证下发布，等等；然而，在一家名为 Unipress 的公司强迫斯托曼停止分发他们从詹姆斯·高斯林（Java 之父）那里获得的 Emacs 实现版本后，他意识到需要一种保护用户自由的许可证。&lt;/p&gt;</description><content:encoded><![CDATA[<h2 id="第一章开源概述">第一章：开源概述</h2>
<h4 id="开源是什么">开源是什么</h4>
<p>在 20 世纪 70 年代末，Richard Stallman 在 MIT 人工智能实验室安装了一台新的打印机，当时他在那里工作，这台打印机运行专有固件。打印机出现问题时，理查德·斯托曼很沮丧，因为他无法获得打印机软件的副本并编辑代码来解决。这种挫败感时自由与开源运动的起源。</p>
<p>对于所有人而言，开源的好处：</p>
<ul>
<li>获取任何给定工作的源代码、配置文件和文档。</li>
<li>自由地使用、修改和分发这些代码。</li>
<li>摆脱厂商的恶意绑定</li>
<li>更高的合作程度</li>
</ul>
<p>对于开源的使用者而言，他们想要达成目标不会受到制约，最大程度地发挥自己的意愿。
对于开源的贡献者而言，他们可以在不付出实际代价的情况下，为开源软件做出贡献，在自己的简历中展示自己的能力。</p>
<h4 id="开源历史上的-6-个关键时刻">开源历史上的 6 个关键时刻</h4>
<ul>
<li>
<p>RMS 和打印机
在 20 世纪 70 年代末，Richard·M·Stallman（RMS）是麻省理工学院的一名员工程序员。他的部门像当时许多大学一样，共享一台 PDP-10 计算机和一台打印机。他们遇到的一个问题是，纸经常在打印机中卡住，导致一连串的打印任务堆积在队列中，直到有人修理好卡纸问题。为了解决这个问题，麻省理工学院的员工想出了一个很棒的社会性解决方案：他们编写了打印机驱动程序的代码，以便当打印机卡住时，会向所有当前等待打印任务的人发送一条消息：&ldquo;打印机卡纸了，请修理。&ldquo;这样，它就不会长时间卡住。</p>
<p>1980 年，实验室接受了一台全新的激光打印机的捐赠。然而，当斯托曼要求获取打印机驱动程序的源代码，以便重新实现社会黑客技术，让系统在纸张卡住时通知用户时，他被告知这是专有信息。他听说另一所大学的一位研究员拥有一个研究项目的源代码，当机会出现时，他请求这位同事分享——而对方拒绝时他感到震惊。他们签署了保密协议（NDA），斯托曼认为这是对黑客文化的背叛。</p>
<p>20 世纪 70 年代末至 80 年代初，软件被视为有价值，这种软件传统上与硬件一起以源代码形式提供。越来越多的麻省理工学院研究人员开始创办软件公司，而销售软件许可证是他们商业模式的关键。保密协议和专有软件许可证成为常态，最好的程序员被从麻省理工学院等大学招聘来参与私人开发项目，在那里他们无法再分享或合作。</p>
<p>作为对此的反应，斯托曼决定创建一个完整的操作系统，它不会剥夺用户理解其工作原理的自由，并且如果他们愿意，还可以进行修改。这就是自由软件运动的诞生。</p>
</li>
<li>
<p>GNU 的创建和自由软件的兴起</p>
<p>到 1983 年底，斯托曼准备好宣布他的项目并招募支持者和助手。1983 年 9 月，他宣布了 GNU 项目的创建（GNU 代表 Gnu&rsquo;s Not Unix——一个递归缩写）。该项目的目标是克隆 Unix 操作系统，以创建一个赋予用户完全自由的系统。</p>
<p>1984 年 1 月，他开始全职从事该项目，首先创建了一个编译器系统（GCC）和各种操作系统工具。1985 年初，他发布了《GNU 宣言》，号召程序员加入，并成立了自由软件基金会以接受捐赠来支持这项工作。这份文件是自由软件运动的创始章程。</p>
</li>
<li>
<p>《GNU 通用公共许可证》的编写</p>
<p>直到 1989 年，自由软件基金会和理查德·斯托曼（RMS）编写并发布的软件都没有统一的许可证。Emacs 在 Emacs 许可证下发布，GCC 在 GCC 许可证下发布，等等；然而，在一家名为 Unipress 的公司强迫斯托曼停止分发他们从詹姆斯·高斯林（Java 之父）那里获得的 Emacs 实现版本后，他意识到需要一种保护用户自由的许可证。</p>
<p>GNU 通用公共许可证（General Public License ）的第一个版本于 1989 年发布，它包含了 Copyleft（一个双关语——版权的反面是什么？）的价值观：你可以使用、复制、分发和修改受许可证保护的软件，但如果你进行了修改，你必须与修改后的二进制文件一起分享修改后的源代码。分享修改后软件的简单要求，再加上 1990 年代互联网的出现，使得自由软件运动的去中心化协作开发模式得以蓬勃发展。</p>
</li>
<li>
<p>&ldquo;The Cathedral and the Bazaar&rdquo;</p>
<p>到 20 世纪 90 年代中期，Linux 开始兴起，自由软件逐渐成为主流——或者用&quot;不那么边缘化&quot;来形容可能更准确。Linux 内核的开发方式完全不同于以往所见，而且非常成功。在内核社区的混乱中，秩序和快速发展的项目应运而生。</p>
<p>1997 年，Eric·S·Raymond发表了具有里程碑意义的文章《大教堂与集市》，比较和对比了 GCC 和 Linux 内核的开发方法论及社会结构，并分享了他在 Fetchmail 项目上使用&quot;集市&quot;开发模型的个人经验。雷蒙德在这篇文章中描述的许多原则后来成为敏捷开发和 DevOps 运动的核心——&ldquo;尽早发布、频繁发布&rdquo;、代码重构以及将用户视为共同开发者，这些都是现代软件开发的基础。</p>
<p>这篇论文被认为将自由软件推广给了更广泛的受众，并说服了当时软件公司的领导层，让他们认为以自由软件许可证发布软件是正确的做法。雷蒙德后来在创造&quot;开源&quot;这一术语和创建开源研究所方面发挥了重要作用。</p>
<p>《大教堂与集市》被认为是 1998 年 Netscape 网络浏览器 Mozilla 源代码发布的关键文件。当时，这是首个将现有、广泛使用的桌面软件作为自由软件发布的大规模发布，使其进一步引起了公众的关注。</p>
</li>
<li>
<p>开源</p>
<p>早在 1985 年，RMS 本人就意识到用来描述软件自由的&quot;free&quot;一词具有模糊性。在《GNU 宣言》中，他将&quot;give away&quot;和&quot;for free&quot;视为容易混淆零价格和用户自由的概念。当自由软件在 1990 年代末进入主流受众时，&ldquo;Free as in freedom&rdquo;、&ldquo;Speech not beer&quot;等口号很常见，但许多知名社区人物认为需要一个更易于大众理解的概念术语。</p>
<p>1998 年， Netscape发布了 Mozilla 的源代码，包括 Eric Raymond、Bruce Perens、Michael Tiemann、Jon &ldquo;Maddog&rdquo; Hall 以及许多自由软件界的杰出人物在内的一群人聚集在帕洛阿尔托讨论一个替代术语。Christine Peterson 提出了&quot;开放源码&quot;这一术语来描述自由软件，后来 Bruce Perens 和 Eric Raymond 共同创立了开放源码研究所。他们认为，与专有软件的根本区别在于源代码的可用性，因此这是品牌推广中应该首先强调的重点。</p>
<p>同年，在 Tim O&rsquo;Reilly 组织的一次峰会上，当时自由软件领域一些最具影响力的人物聚集在一起，讨论各种新的自由软件品牌。最终，“开源”战胜了“源码”，开源开始被社区中的许多项目所采用。</p>
<p>然而，也存在一些分歧。理查德·斯托曼和自由软件基金会继续倡导“自由软件”这一术语，因为他们认为，与专有软件的根本区别在于用户自由，而源代码的可用性只是实现这一目标的手段。斯托曼认为，如果将重点从自由上移开，未来源代码可能会开放，但软件用户将无法享有修改软件的自由。随着网络部署的软件即服务以及嵌入设备的开源固件的出现，这场争论至今仍在继续。</p>
</li>
<li>
<p>企业对开源的投资—VA Linux、Red Hat、IBM</p>
<p>20 世纪 90 年代末，一系列备受瞩目的事件推动了自由和开源软件的专业化进程显著加速。其中，1999 年 VA Linux 和 Red Hat 的首次公开募股是最引人注目的事件。这两家公司作为上市公司在首日股价均大幅上涨，证明了开源软件如今已进入商业化并走向主流。</p>
<p>1999 年，IBM 宣布通过投资 10 亿美元支持 Linux 的开发，使传统企业用户使用它变得风险更低。次年，Sun Microsystems 发布了其跨平台办公套件 StarOffice 的源代码，并创建了 OpenOffice.org 项目。</p>
<p>硅谷对开源项目的巨额资金投入、华尔街对围绕开源软件建立的年轻公司的关注，以及像 IBM 和 Sun Microsystems 这样的科技巨头所带来的市场信誉，共同促成了开源的大规模采用，以及接纳了有助于其繁荣的开发模式，这些因素导致了 Linux 和开源在当今科技行业的统治地位。</p>
</li>
</ul>
<h4 id="为什么开源">为什么开源</h4>
<ul>
<li>
<p>微观经济动机</p>
<p>无论你是个人、公司、小企业、非营利组织还是政府机构，开源都符合你的最佳利益：</p>
<ul>
<li>
<p><strong>将开发者从低价值工作转移到高价值工作</strong>- 我们在开源中常说，所有简单的问题都已经被解决了。博客、内容管理和操作系统都是具有既定（且主流）开源解决方案的问题，仅举几例。虽然你的开发者可以花时间重新发明开源社区已经完善了的轮子，但使用世界上最好的轮子要远远好得多，尤其是当这个轮子对你来说没有成本时。这使开发者能够专注于尚未解决的问题，这些问题的类型是独特的，并且能为你的组织使命增加价值。为什么不站在科技巨人的肩膀上呢？</p>
</li>
<li>
<p><strong>降低 总拥有成本</strong>（TCO）- 与封闭源和专有软件相比，使用开源软件能带来更低的总拥有成本。采用开源软件通常具有更低的初始成本（因为软件通常免费或成本较低），并将成本中心从许可证（运营支出）转移到定制和实施（资本支出）。培训、维护和支持等额外成本是沉没成本。无论软件是开源还是封闭源，你都需要支付这些费用。对于商业现成软件（COTS），这些成本通常已经包含在许可证中。开源的独特之处在于，你不需要为使用底层知识产权支付费用。</p>
</li>
<li>
<p><strong>只要有足够多的人看，所有的错误都会变得浅显</strong>（林纳斯定律）—— 实践证明，开源软件通常比其专有或替代品产生更好的质量。当你编写闭源软件时，只有那些恰好受雇于发布该软件公司的开发者（或者更有可能的是，他们雇佣来构建软件的独立承包商）才能潜在地检测、诊断、分派处理和解决软件错误。开源提供了三个优势：首先，你有机会利用全世界最佳开发者的知识，而不仅仅是某个组织雇佣的开发者。其次，潜在贡献者的数量以及潜在的知识库要大得多。最后，开源软件会适应各种使用场景，而不仅仅是发布者最初打算的用途，这使得它比传统的、预测性的质量保证过程能更快地暴露错误和边缘情况。</p>
</li>
<li>
<p><strong>现代软件开发实践</strong> - 开源软件并不仅仅是“发布”的代码。你很难找到遵循过时、瀑布式或僵化的命令控制式开发理念的开源项目，这些理念在许多大型官僚机构中仍然普遍存在。由于开源项目具有分布式和不受政策或技术债务束缚的特点，它们几乎必然采用现代软件开发工作流程。这些工作流程是电子化的（意味着流程自然被捕获和展示）、异步的（意味着决策不受时间和地点的限制），并且无锁的（意味着贡献者可以快速实验而无需事先批准）。这三个工作流程特征意味着更快的开发周期和更频繁的发布，而不会牺牲质量。</p>
</li>
<li>
<p><strong>开源是未来</strong>——现在但凡能拿到风投、有投资价值的初创公司，几乎没有不做开源的，至少部分业务靠开源，很多甚至主要靠开源。开源不是一种潮流，也不是加州一群嬉皮士在传递扎染笔记本电脑，就像他们传递违禁品一样。开源是现代组织，以及越来越多的传统组织构建软件的方式。未来五年或十年，技术格局将更协作、更开放而非封闭的观点，将越来越难以成立。就连传统上最坚决反对开源的微软，也开源了其主要的开发框架（苹果和 Swift 也是如此）。如今，从 IBM、SAP 到 Adobe 等所有技术巨头都积极参与开源社区。说“开源是未来”略有失实。开源已经赢得了胜利。</p>
</li>
<li>
<p><strong>按自己的时间修复</strong> - 只要软件是由人类编写的，错误和安全漏洞就是不可避免的。当专有软件项目中发现漏洞时，你必须等待公司所在时区的工 作日开始，等待会议召开、任务分配和代码编写，所有这些完成之前，法律、销售和市场营销等支持团队还需要协调如何将修复程序纳入下一个定期计划发布。对于专有软件，错误和安全漏洞会影响公司底线，因此没有动力将漏洞细节广泛公开。对于开源软件，不仅更精简、更敏捷、非盈利导向的组织可以更快地行动，由于你可以访问源代码，你通常可以在自己方便的时候应用修复程序，无论是大是小，而不是在发布组织的发布周期方便的时候。</p>
</li>
</ul>
</li>
<li>
<p>宏观经济动机</p>
<p>通过结合和增强平行或相关的工作，开源使社会在产生更高质量的软件方面变得更加高效：</p>
<ul>
<li>
<p><strong>效率</strong> - 上述许多微观经济论点，在总体上具有宏观经济影响。当企业工作效率更高时，经济将生产更多（且更好）的软件，这些软件反过来又能改善人们的生活。如果你认为所有容易解决的问题都已经被解决了，那么在宏观经济层面，开源允许企业从较低层次的工作转向更高层次、尚未解决的问题。这种更高层次工作的成果往往是颠覆性的，而非迭代性的，从而创造了使经济充满活力的更替。如果每家科技公司都必须投入几年研发时间来解决同样的 5-10 个问题，这将延迟（或至少是将资本从）公司能够富有成效地生产对社会有价值的技术的能力，更不用说，它还提高了新市场进入者向成熟企业提供替代方案的成本。</p>
</li>
<li>
<p><strong>站在巨人的肩膀上</strong>——如今，创新技术，那些提升生活品质的技术，并非凭空创造。即使是闭源技术，从你口袋里的手机到你所驾驶的汽车，再到生产它们的《财富》500 强公司，都严重依赖开源（不信？看看你手机的“设置→关于”页面）。正如代数和三角学不受私营部门版权的束缚，从而催生了从微积分到量子物理的一切，开源让开发者能够将已解决的问题视为既定，依赖自己领域之外的专家知识，并释放他们创造新发明的潜力，否则这些发明将不可能实现。</p>
</li>
<li>
<p><strong>激发思想市场</strong>——软件不过是技术知识。曾有一段时期，炼金术士会隐瞒他们的研究成果，声称这些发现是专有的。每个人都不得不通过亲身体验来学习饮用铅对人体的影响。当这些炼金术士开始分享他们的工作时，我们开始称他们为科学家，科学革命也随之诞生。数学、文学和计算机软件也是如此。两个独立工作的开发者可能会针对同一个问题提出两种解决方案，但通过对话和协作，每个人贡献自己的知识和经验，可能会发现三个、五个甚至十个解决方案，而社会因此变得更好。</p>
</li>
</ul>
</li>
<li>
<p>道德动机
开源的正式名称是自由/免费开源软件（free/libre open source software）。因此，开源的动机具有强烈的道德成分：</p>
<ul>
<li><strong>自由如言论，而非如啤酒</strong>—开源软件并非没有成本。当开源软件被称为“免费”时，它指的是软件消费者所获得的权利，而非他们必须支付的成本。例如，Adobe 的 Flash 播放器在经济意义上是免费的，但仍然是专有（非自由）软件（和格式）的核心。具体来说，自由软件指的是四个核心自由：运行软件的自由、研究和修改软件的自由、分发软件的自由，以及分发你的修改的自由。
</br></li>
</ul>
<p>正如自由软件运动所主张的，非自由软件存在控制用户（由出版商控制软件）的风险。这可能导致软件成为不公正权力的工具。如今，专有软件监视用户（例如，向家中报告）、限制用户（例如，数字版权管理）、审查用户（例如，企业防火墙）或利用用户（例如，不可跳过的广告）的情况并不少见。随着物联网的兴起，这一风险变得更加重要，可能会将世界变成“营销人员的互联网”或“窥探者的互联网”。自由软件将权力交还给用户，确保用户控制他们使用的软件，而不是相反。
</br></p>
<ul>
<li>
<p><strong>回馈的义务</strong> - 开源就像一个“投币取款”的软件罐子。如果你使用开源软件，无论是服务器、桌面出版应用还是软件库，你都有义务回馈社区。毕竟，如果没有他人的贡献，微宏观经济动机将不再成立，我们所熟知的开源也将不复存在。这是黄金法则，用传统哲学术语来说，是一种绝对命令。</p>
</li>
<li>
<p><strong>政府应该将其开发成果交给为开发付费的人民</strong>——如果开发成本由政府支付，那么就有额外的理由将其回馈。政府通过税收来为民众提供服务。例如，美国联邦政府是根据其宪法由我们这些人民建立起来，以执行多项重要任务的。如果民众（我们这些人民）正在为软件的开发付费，那么我们理应获得我们所付费开发的成果，包括我们付费开发的软件。</p>
</li>
<li>
<p><strong>培养下一代</strong> - 如今行业内许多杰出的工程师都是通过学习开源项目成长起来的。当软件的底层代码可供审查时，消费者可以了解自己喜爱的软件是如何运作的，计算机科学课程也能分析行业尖端技术的构建方式。这为培养下一代软件工程师（如果没有开源，他们将只能猜测前代产品的内部机制）提供了极大的帮助。</p>
</li>
</ul>
</li>
<li>
<p>透明度动机</p>
<p>开源使得流程更加透明，无论是检查政府行为所需的透明度，还是私营公司软件的准政府职能。</p>
<ul>
<li>
<p><strong>展示你的工作</strong> - 随着政府越来越依赖技术来监管行业和提供公民服务，能够看到底层算法和流程对于检查政府的工作至关重要。如果使用闭源软件包来计算我的税款或分配广播频率，我如何知道这个过程，我们的过程，是公平和准确的？虽然人类流程不能被版权保护，但当是闭源时，这些流程就变成了一个黑箱，最大限度地减少了公民制衡的可能性。</p>
</li>
<li>
<p><strong>公共信任的职位</strong> - 随着私营公司生产的软件越来越多地被置于公共信任的职位，透明度义务也扩展到了私营部门。我的选票是否被投票机准确计数？当面临两难选择时，自动驾驶汽车是否遵循社区规范？例如，如果在一个犯罪现场使用闭源软件包来比较 DNA，与可以接受交叉询问的医学专家不同，那个专有算法受到版权（或专利）法的保护而不受审查。随着私营公司自动化准政府职能，至少部分特定组件的开放源代码将成为必不可少的。</p>
</li>
</ul>
</li>
<li>
<p>参与动机</p>
<p>开放源代码为软件利益相关者，包括技术和非技术方面，提供了塑造任何软件开发项目的机会：</p>
<ul>
<li>
<p><strong>直接民主</strong> - 真正的直接民主（即每位公民都对每个议题进行投票）在大多数民主国家因规模过大而不可行。同时，由于技术限制，公民也无法直接参与大多数议题。开源则改变了这一现状，它允许软件利益相关者直接参与软件开发过程（因为软件越来越多地被用来制定监管和服务提供偏好及规范）。想想购买医疗保健的过程是否令人困惑？那就提出一个议题。认为政府应该更多地使用开源软件，就提交一个拉取请求。白宫已经为许多以 IT 为中心的政策，如《数字服务手册》、HTTPS 和开放数据政策，采用了这种方式。</p>
</li>
<li>
<p><strong>用户反馈</strong> - 开源让消费者在私营部门发展过程中拥有一个结合的、强大的声音。把它想象成软件界的 Yelp。没有 Yelp，一家餐厅可以随意得罪一个顾客。最多，那些不满意的顾客可能会劝退 5-10 个潜在顾客。在一个 Yelp 时代，顾客会在选择去哪里之前阅读陌生人的评论。开源放大了软件消费者在消费者-发布者关系中的声音。更不用说，私营公司收到的反馈可以更好地为产品决策提供信息并改进整体产品。开源让公司可以直接接触到他们最狂热的顾客。</p>
</li>
</ul>
</li>
<li>
<p>个人动机</p>
<p>如果你是一名开发者（或渴望成为开发者），开源可以为你提供一条轻松（且免费）的途径，加入软件开发社区并实现个人成长：</p>
<ul>
<li>
<p><strong>学习编程</strong> - 开源是学习编程的绝佳方式。想知道你喜欢的网站是如何运作的吗？在网页浏览器中点击“查看源代码”就能为你指明方向。你可以阅读该软件的文档，甚至可能搭建一个自己的克隆版本。想了解更多？加入该框架或语言的本地交流会。更棒的是，向项目提交一个 pull 请求，修复一个小错误或添加一个新功能。虽然这其中必然涉及时间和机会成本，但所有这些都不需要准开发者直接付费，至少在软件方面是这样，而且与在专有社区中做同样的事情相比，这种方式包容性要强得多，尤其是对于外部人士而言。几乎所有非传统学术背景的当今编程学校都教授开源，这绝非偶然。</p>
</li>
<li>
<p><strong>很有趣</strong>——根据维基百科，开源是一种爱好。事实上，开源传统上被认为是业余爱好者的产物（尽管我(Ben Balter)认为现在这种情况不那么普遍了）。开源很有趣。如果你是个黑客，它就为你提供了无数不断变化的魔方，让你在周末去解决。就像谜题（无论是填字谜还是拼图）能提供小型的智力逃避一样，开源的秩序和对称性往往能成为一个代码的岩石园（尤其是对于那些对足球感到尴尬的人来说）。</p>
</li>
</ul>
</li>
</ul>
<h4 id="开源与闭源软件">开源与闭源软件</h4>
<style>
.center 
{
  width: auto;
  display: table;
  margin-left: auto;
  margin-right: auto;
}
</style>
<div class="center">
<table>
	<thead>
			<tr>
					<th>对比维度</th>
					<th>开源软件（Open Source）</th>
					<th>闭源软件（Closed Source）</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>源代码是否公开</strong></td>
					<td>完全公开，任何人可获取、阅读</td>
					<td>不公开，源码是厂商核心资产，严格保密</td>
			</tr>
			<tr>
					<td><strong>修改与定制</strong></td>
					<td>允许自由修改、二次开发、定制功能</td>
					<td>禁止修改源码，只能使用厂商提供的功能与接口</td>
			</tr>
			<tr>
					<td><strong>分发权限</strong></td>
					<td>通常允许自由复制、分发、再发布（依协议而定）</td>
					<td>禁止私自分发、逆向工程、反编译，受版权法保护</td>
			</tr>
			<tr>
					<td><strong>所有权与控制</strong></td>
					<td>版权归社区/作者，使用权归用户（依许可证）</td>
					<td>版权与控制权完全归开发公司/厂商所有</td>
			</tr>
			<tr>
					<td><strong>商业模式</strong></td>
					<td>靠服务、支持、定制、云服务、增值模块盈利</td>
					<td>靠售卖许可证、订阅、升级、技术支持收费</td>
			</tr>
			<tr>
					<td><strong>安全透明度</strong></td>
					<td>漏洞公开可见，社区共同审计、快速修复</td>
					<td>漏洞由厂商内部发现修复，公开前存在“静默期”风险</td>
			</tr>
			<tr>
					<td><strong>技术支持</strong></td>
					<td>社区支持为主，部分有商业公司提供付费支持</td>
					<td>官方技术支持、SLA、售后保障，响应更可控</td>
			</tr>
			<tr>
					<td><strong>更新与迭代</strong></td>
					<td>社区驱动，更新节奏灵活，功能迭代快</td>
					<td>厂商主导，更新节奏固定，功能发布受商业计划控制</td>
			</tr>
			<tr>
					<td><strong>厂商锁定风险</strong></td>
					<td>低，可自由迁移、fork、换服务商</td>
					<td>高，易形成 vendor lock-in，切换成本极高</td>
			</tr>
			<tr>
					<td><strong>使用成本</strong></td>
					<td>软件本身通常免费，成本主要在部署、维护、定制</td>
					<td>前期授权成本高，后期订阅/维护费持续产生</td>
			</tr>
	</tbody>
</table>
</div>
<h2 id="第二章开源许可证">第二章：开源许可证</h2>
<p>开源许可证是指符合开源定义的许可证——简而言之，它们允许软件自由使用、修改和共享。要获得开放源代码倡议组织（Open Source Initiative 简称 OSI）的批准，一个许可证必须经过开放源代码倡议组织的许可证审查流程。</p>
<p>基本上，许可协议是许可方和被许可人商定双方权利和义务的一种方式。与许可协议相关的权利和义务可以是任何事物——在法律允许的范围内。例如，许可方可能要求被许可人在使用其作品时注明其姓名。或者可以授权复制其作品，但不得以任何方式修改。甚至可以要求衍生作品在相同条款下发布，与原始作品相同。</p>
<p>另一方面，许可协议也是保护被许可人的一种方式。通过明确说明他如何使用你的作品，他不会面临意外要求因使用你的作品而支付版税或其他形式的补偿的风险。这对于你的作品采用至关重要。</p>
<h4 id="开源许可证的分类">开源许可证的分类</h4>
<p><code>International</code> : 国际</p>
<p><code>Non-Reusable</code> : 不可再使用</p>
<p><code>Other/Miscellaneous</code> : 其他</p>
<p><code>Popular / Strong</code> : 流行</p>
<p><code>Community</code> : 社区</p>
<p><code>Redundant with more popular</code> : 与流行许可证重复</p>
<p><code>Special Purpose</code> : 专用</p>
<p><code>Superseded</code> : 已被取代</p>
<p><code>Uncategorized</code> : 未分类</p>
<p><code>Voluntarily retired</code>: 自愿放弃</p>
<h4 id="开源许可证的选择">开源许可证的选择</h4>
<p>根据需要进行选择，下面可以参考的一些开源许可证的选择：</p>
<ul>
<li><a href="http://oss.ly/licdif">http://oss.ly/licdif</a></li>
<li><a href="https://choosealicense.com/">https://choosealicense.com/</a> / <a href="https://choosealicense.com/appendix/">https://choosealicense.com/appendix/</a></li>
<li><a href="https://opensource.org/licenses">https://opensource.org/licenses</a></li>
<li><a href="https://tldrlegal.com/">https://tldrlegal.com/</a></li>
<li><a href="https://opensource.guide/legal/">https://opensource.guide/legal/</a></li>
</ul>
<p>许可证将保护你的作品。将保护许可方。但也会保护你。我是指你个人。例如，通过限制许可方对其作品可能造成的损害的责任。</p>
<h2 id="第三章开源组织">第三章：开源组织</h2>
<h4 id="应该了解的开源组织">应该了解的开源组织</h4>
<p><a href="https://www.apache.org/foundation/">Apache 软件基金会</a></p>
<p>Apache 软件基金会为广泛的开源软件项目提供组织、法律和财务支持。该基金会为知识产权和财务捐赠提供了既定框架，同时限制捐助者的潜在法律风险。</p>
<p><a href="https://www.cncf.io/">云原生计算基金会</a></p>
<p>云原生计算基金会（CNCF）的使命是推动分布式计算和“云原生”系统的采用，其定义为容器封装、动态管理和微服务导向的系统。作为Linux基金会的一个项目，CNCF托管了Kubernetes云编排系统及其他云原生开源项目。</p>
<p><a href="https://digitalfreedomfund.org/">数字自由基金会</a></p>
<p>数字自由基金会每年举办活动，推广免费软件、硬件和内容。其活动包括软件自由日、文档自由日、硬件自由日和教育自由日。</p>
<p><a href="https://www.documentfoundation.org/">文档基金会</a></p>
<p>文档基金会是LibreOffice免费开源办公套件的所在地。它是一个独立、自治、精英主义的实体，由 OpenOffice.org 共同体的前领导人以德国法律（gemeinnützige rechtsfähige Stiftung des bürgerlichen Rechts）形式设立的慈善机构。</p>
<p><a href="https://www.drupal.org/association">Drupal协会</a></p>
<p>Drupal协会支持和支持Drupal内容管理软件项目。它为Drupal社区提供资金、基础设施、教育、推广、发行和在线协作。</p>
<p><a href="https://www.eclipse.org/">日蚀基金会</a></p>
<p>Eclipse基金会为我们的全球开发者和会员组织社区提供了一个友好的开源软件协作与创新环境。基金会是Eclipse IDE、Jakarta EE及开源项目的所在地，包括云和边缘应用、物联网、人工智能、汽车等的运行时、工具、规范和框架。</p>
<p><a href="https://www.fsf.org/about/">自由软件基金会</a></p>
<p>自由软件基金会（FSF）的使命是捍卫计算机用户的自由和权利。它推动“自由（即自由）软件和文档的开发与使用”，并反对数字权利管理、软件专利及其他对计算机用户自由的威胁。</p>
<p><a href="https://fsfe.org/about">欧洲自由软件基金会</a></p>
<p>欧洲自由软件基金会（FSFE）是FSF的姊妹组织。其目标是帮助人们理解自由软件如何促进自由、透明和自决。它促进自由软件的采用，鼓励人们使用和开发自由软件，并为所有人提供资源，帮助大家在欧洲进一步推广自由软件。</p>
<p><a href="https://www.gnome.org/foundation/">GNOME基金会</a></p>
<p>GNOME基金会是一个非营利组织，支持GNOME项目及其贡献者。基金会提供资源和基础设施，指导发布，决定项目中包含哪些软件，并作为项目的公众形象和声音。</p>
<p><a href="https://ev.kde.org/whatiskdeev.php">KDE电子台</a></p>
<p>KDE eingetragener Verein（德语意为“注册协会”）是一家非营利组织，代表开源KDE项目在法律和财务事务上运作。它拥有KDE商标及其他KDE社区资产，同时组织活动和获得赞助以支持KDE的发展。</p>
<p><a href="https://www.linuxfoundation.org/about">Linux 基金会</a></p>
<p>Linux 基金会成立于2000年，赞助了 Linux 创始人 Linus Torvalds 的工作，并得到了全球领先的科技公司和开发者的支持。Linux基金会是一个致力于促进Linux发展的非营利联盟。</p>
<p><a href="https://www.lpi.org/">Linux 专业学院</a></p>
<p>Linux 专业协会（LPI）成立于1999年，是一家加拿大非营利组织，致力于倡导并协助专业人士使用Linux、开源及自由软件。其宗旨是“通过使开源知识和技能认证普遍可及，为每个人创造经济和创造性的机会。”</p>
<p><a href="https://www.mozilla.org/en-US/foundation/">Mozilla基金会</a></p>
<p>Mozilla基金会致力于互联网必须始终保持为开放且可访问的全球公共资源，供所有人使用。作为一家社会企业，该基金会是Mozilla公司的唯一股东，该公司开发Firefox浏览器软件及其他开源工具。</p>
<p><a href="https://www.netbsd.org/foundation/">NetBSD</a></p>
<p>NetBSD 是一个免费且高度可移植的类 Unix 开源作系统。它适用于多种平台，从大型服务器和强大的桌面系统到手持和嵌入式设备，非常适合拯救老旧的“生命终结”硬件。</p>
<p><a href="https://www.oasis-open.org/">绿洲公开赛</a></p>
<p>OASIS Open是个人、组织和政府聚集在一起，通过开发开放代码和开放标准解决世界上一些最大的技术挑战的地方。</p>
<p><a href="https://www.open-bio.org/wiki/Main_Page">开放生物信息学基金会</a></p>
<p>开放生物信息学基金会在生物研究社区倡导开源软件。其活动包括支持会议、举办黑客马拉松，并参与谷歌代码夏季活动。</p>
<p><a href="https://www.oeconsortium.org/">开放教育联盟</a></p>
<p>开放教育联盟是一个由数百所大学及相关组织组成的全球社区，致力于推动高质量大学教育材料的免费开放数字发布，以提升教育的可及性和有效性。</p>
<p><a href="https://www.osadl.org/">开源自动化开发实验室</a></p>
<p>开源自动化开发实验室（OSADL）是一家总部位于德国的全球组织，致力于支持机械、机床和自动化行业的开源软件。OSADL代表其成员组织协调开源工业项目的开发和融资。</p>
<p><a href="https://www.osgeo.org/content/foundation/about.html">开源地理空间基金会</a></p>
<p>开源地理空间基金会（OSGeo）支持开源地理空间软件的协作开发。组织参与了与GIS相关的主要软件项目;此外，它还为开源GIS社区提供资金、组织和法律支持。</p>
<p><a href="https://opensourceforamerica.org/about-osfa/our-mission/">美国开源</a></p>
<p>美国开源组织（OSFA）致力于教育美国联邦政府的决策者了解自由和开源软件的益处。OSFA鼓励政府使用开源软件，并作为开源社区向联邦政府发声的声音。</p>
<p><a href="https://www.opensourcematters.org/">开源的重要性</a></p>
<p>开源事务（Open Source Matters，简称OSM）是一家在美国注册成立的非营利组织，旨在服务于Joomla项目的财务和法律利益。OSM定期进行自我评估，以确保对Joomla负责并以Joomla的利益为目标。</p>
<p><a href="https://www.opensource.org/">开源倡议</a></p>
<p>开源倡议（OSI）是一家非营利机构，旨在倡导开源的益处，并在开源社区中搭建桥梁。它维护开源定义并批准符合OCD的许可证。</p>
<p><a href="https://www.openstack.org/foundation">OpenStack 基金会</a>
OpenStack 基金会推动 OpenStack 云作系统的全球开发、分发和采用。作为OpenStack的全球独立基地，该基金会服务于来自全球180多个国家的6万多名个人会员。</p>
<p><a href="https://osuosl.org/about">俄勒冈州立大学（OSU）开源实验室</a></p>
<p>俄勒冈州立大学开源实验室是不断壮大、影响力高的开源社区的所在地。它托管了160多个开源项目，包括开源领导者如Apache软件基金会、Linux基金会和Drupal内容管理系统。</p>
<p><a href="https://sfconservancy.org/">软件自由保护协会</a></p>
<p>软件自由保护协会是一个非营利组织，致力于推广、改进、开发和捍卫自由、自由和开源软件（FLOSS）项目。通过提供基础设施和非开发支持服务，该组织使FLOSS开发者能够专注于他们的项目。</p>
<p><a href="https://www.softwarefreedom.org/">软件自由法律中心</a></p>
<p>软件自由法律中心为自由和开源项目提供免费法律服务，包括许可、版权、专利、商标和非营利治理，以及教育、咨询和培训。</p>
<p><a href="https://www.spi-inc.org/">公共利益下的软件</a></p>
<p>公共利益软件（SPI）是一个非营利组织，负责处理部分开源项目的非技术性行政任务，以便开发者专注于开发和分发开放硬件和软件。</p>
<h4 id="开源项目中的基础作用"><a href="https://livablesoftware.com/study-open-source-foundations/">开源项目中的基础作用</a></h4>
<hr>
<p><strong>参考</strong></p>
<p><a href="https://github.com/pingcap/talent-plan/blob/master/courses/tp101-intro-to-oss.md">Introduction to Open Source Software</a></p>
]]></content:encoded></item></channel></rss>