开源(open source)这个术语是指人们可以修改和共享的东西,因为它的设计是可以公开访问的。
该术语起源于软件开发的上下文,用于指定创建计算机程序的特定方法。但是,今天,“开源”指的是更广泛的价值集,我们称之为“开源方式”。开源项目,产品或计划包含并赞扬开放交流,协作参与,快速原型制作,透明度,精英管理和面向社区的发展的原则。
什么是开源软件?
开放源码软件是带有源代码的软件,任何人都可以对其进行检查、修改和增强。
“源代码”是大多数计算机用户从未见过的软件的一部分;这是计算机程序员可以用来更改软件(即“程序”或“应用程序”)工作方式的代码。有权访问计算机程序源代码的程序员可以通过向计算机程序添加功能或修复无法始终正常运行的部件来改进该程序。
开源软件和其他类型的软件有什么区别?
有些软件的源代码只有创建它的个人、团队或组织才能修改,并且保持对它的独占控制。人们称这种软件为“专有的”或“闭源的”软件。
只有专有软件的原始作者才能合法地复制,检查和更改该软件。并且,为了使用专有软件,计算机用户必须同意(通常通过签署他们首次运行此软件时显示的许可),他们不会对软件作者未明确允许的软件做任何事情。Microsoft Office和Adobe Photoshop是专有软件的示例。
开源软件则不同。它的作者将它的源代码提供给其他想要查看、复制、学习、修改或共享代码的人。LibreOffice和GNU图像处理程序就是开源软件的例子。
就像使用专有软件一样,用户在使用开放源代码软件时必须接受许可条款,但是开放源代码许可的法律条款与专有许可的法律条款有很大不同。
开源许可证影响人们使用、研究、修改和分发软件的方式。一般来说,开放源码许可证允许计算机用户将开放源码软件用于他们希望的任何目的。一些开源许可,有些人称之为“copyleft”许可,规定任何发布修改过的开源程序的人必须同时发布该程序的源代码。此外,一些开放源码许可证规定,任何修改和与他人共享程序的人也必须共享该程序的源代码,而不收取任何许可证费用。
通过设计,开源软件许可证促进了协作和共享,因为它们允许其他人对源代码进行修改,并将这些修改合并到他们自己的项目中。他们鼓励计算机程序员随时访问、查看和修改开放源码软件,只要他们在共享工作时允许其他人也这样做。
开源软件仅对计算机程序员重要吗?
开源技术和开源思想对程序员和非程序员都有好处。
因为早期的发明者将互联网本身建立在开源技术之上,比如Linux操作系统和Apache Web服务器应用程序,今天任何使用互联网的人都能从开源软件中受益。
每当计算机用户浏览网页、查看电子邮件、与朋友聊天、在线播放音乐或玩多人视频游戏时,他们的计算机、移动电话或游戏机都会连接到计算机的全球网络,使用开源软件将数据路由并传输到他们面前的“本地”设备。完成所有这些重要工作的计算机通常位于用户看不到或无法实际访问的遥远地方,这就是为什么有些人称这些计算机为“远程计算机” 。
越来越多的人依赖远程计算机来执行他们本可以在本地设备上执行的任务。例如,他们可能使用在线文字处理、电子邮件管理和图像编辑软件,而这些软件并不是安装在他们的个人电脑上运行的。相反,他们只是通过Web浏览器或移动电话应用程序访问远程计算机上的这些程序。当他们这样做时,他们从事的是“远程计算”。
有些人把远程计算称为“云计算”,因为它涉及的活动(如存储文件、共享照片或观看视频)不仅包括本地设备,还包括形成周围“氛围”的远程计算机全球网络。
云计算是日常生活中越来越重要的一个方面,有了互联网连接的设备。一些云计算应用,比如谷歌应用,是专有的。其他的,比如ownCloud和Nextcloud,都是开源的。
云计算应用程序运行在帮助它们平稳高效运行的附加软件之上,因此人们经常会说运行在云计算应用程序之下的软件充当了这些应用程序的“平台”。云计算平台可以是开源的,也可以是封闭的。OpenStack是开源云计算平台的一个例子。
人们为什么喜欢使用开源软件?
人们出于多种原因,更喜欢开源软件而不是专有软件,其中包括:
控制。许多人喜欢开源软件,因为他们对这种软件有更多的控制权。他们可以检查代码以确保它没有做任何他们不希望做的事,并且可以更改不喜欢的部分。非程序员的用户也将从开源软件中受益,因为他们可以将其用于任何期望的目的,而不仅仅是他人认为的方式。
训练。有些人喜欢开源软件,因为它可以帮助他们成为更好的程序员。由于开放源代码是可公开访问的,因此学生在学习制作更好的软件时可以轻松地学习它。 学生还可以在发展技能时与他人分享他们的作品,邀请他们发表评论和批评。当人们发现程序源代码中的错误时,他们可以与他人共享这些错误,以帮助他们避免自己犯同样的错误。
安全。有些人喜欢开源软件,因为他们认为它比专有软件更安全和稳定。因为任何人都可以查看和修改开源软件,所以有人可能会发现并纠正程序原始作者可能错过的错误或遗漏。而且由于有如此多的程序员可以在不要求原始作者许可的情况下开发一款开源软件,因此与专有软件相比,他们可以更快地修复,更新和升级开源软件。
稳定性。对于重要的长期项目,许多用户更喜欢开源软件而不是专有软件。由于程序员公开分发开源软件的源代码,因此依靠该软件执行关键任务的用户可以确保,如果他们的原始创建者停止开发它们的工具,他们的工具也不会消失或停用。 另外,开源软件倾向于结合并根据开放标准进行操作。
社区。开源软件常常会激发用户和开发人员围绕它形成一个社区。这并不是开源所独有的;许多流行的应用程序都是聚会和用户组的主题。但是在开源的情况下,社区不仅仅是一个购买(情感上或经济上)精英用户群的粉丝基础;是那些开发、测试、使用、推广并最终影响他们所喜爱的软件的人。
“开源”不就是免费的吗?
这是对“开源”含义的普遍误解,这个概念的含义不仅是经济上的。
开源软件程序员可以为他们创建的或贡献的开源软件收费。但是在某些情况下,因为开放源码许可可能要求他们在向其他人出售软件时发布源代码,所以一些程序员发现向用户收取软件服务和支持费用(而不是软件本身)更有利可图。通过这种方式,他们的软件仍然是免费的,他们通过帮助他人安装、使用和故障排除来赚钱。
虽然有些开源软件可能是免费的,但是掌握编程和排除开源软件故障的技能是很有价值的。许多雇主特别希望雇佣有开发开源软件经验的程序员。
什么是“软件之外”的开源?
开源不仅是开发和许可计算机软件的一种方式,也是一种态度。接触生活的方方面面“开源方式”意味着表达一种分享的意愿,以一种透明的方式与他人合作(这样其他人也能看到并加入),接受失败作为一种改进的方式,并期待,甚至鼓励其他人也这样做。
这也意味着致力于在改善世界中发挥积极作用,只有当每个人都可以使用设计世界的方式时,这才有可能实现。
这个世界充满了“源代码”,包括蓝图,食谱,规则,它们指导并塑造了我们在其中思考和采取行动的方式。我们认为此基础代码(无论其形式如何)都应该是开放的,可访问的和共享的,因此许多人可以将其改进。