开源软件入门指南:概念评述

  开源项目如今可谓无处不在,从Web到个人计算机再到智能手机,我们似乎随处可见它的身影。在今天的文章中,我们将共同探讨以下三个话题:

  开源的定义

  流行开源项目范例

  如何参与到开源项目当中

  1. 开源软件到底是什么?

  开源软件是计算机软件下的一个子类,其中的源代码向公众开放并采取特定的许可机制,允许任何人对其进行代码修改并重新发布代码或者可执行文件。

  尽管开源软件通常由一群人负责开发与维护,但事实上只要有意愿、任何人都可以访问其代码并在其中表达自己的构想。

  我曾经为几个开源项目贡献过代码,而且为开源项目作贡献也确实是成为一位优秀开发人员以及回馈技术社区的最佳方式。大家可以从中接触到其他开发者编写的代码,并逐步学习如何对自己的代码加以完善。就我个人而言,看到自己与其他开发人员共同构建的开源项目能够顺利发展,实在是技术工作历程中最值得骄傲的经历。

  下面我们来看一些最具人气的开源软件方案。大家可能会对开源项目数量之庞大以及在背后支持这些项目的巨头企业表示惊讶,例如谷歌与Automattic。

  2. 常见开源项目

  目前世界上的开源项目数量以百万计,下面我们仅列出其中最为常见以及最具知名度的一小部分:

  WordPress,网络上最流行的内容管理系统之一,目前使用者群体已经达到数百万。

  PHP是目前网络上人气最高的Web编程语言,它支持着包括Facebook在内的八成以上网络内容。

  Audacity是一款免费且易于使用的多声道音频编辑器与录音工具。

  OpenOffice是一款免费的微软Office替代方案。

  Android开源项目是一套广为人知的移动操作系统,顾名思义属于开源项目。

  Firefox OS是一套移动操作系统,由Mozilla公司负责开发与维护。

  3. 开源机制如何运作

  开源项目的发展主要分为三个阶段。下面让我们简单对各个阶段进行一番评述。

  阶段一:贡献

  如果大家希望能够切实参与到开源项目当中,那么最好先与该软件背后的企业或者机构取得联系,询问对方自己能为项目作出哪些贡献。这种方式特别适合规模较小的项目或者新兴企业,不过大家需要明确一点——大部分开源项目不会为各位的工作成果支付任何报酬,我们的参与完全建立在自愿的基础上。

  遥想当年,我在参与开源项目的开发工作时,就曾经枯坐了数周之久以等待项目管理方给出的答复——事实上有一次等待周期甚至长达两个月。不过请大家稍安勿躁,这份确认邮件真的非常重要,值得我们为它付出一些耐心。收到对方的通知后,开发工作就可以正式开始了。

  另外,对于规模较大的项目,大家可以直接开始编码工作并构建起属于自己的衍生软件版本。大家还应当警惕这样的情况:如果同一个项目的参与者过多,那么我们辛苦劳作打造出的成果很可能根本不会被收录到该产品的最终版本当中。在这种情况下,请各位权衡利弊,如果不满意可以果断退出。

  如果大家正在为某个项目寻找能够指导起步工作的灵感,也千万别被自己的思路绑住了手脚。网络上可能提供大量有趣的项目供我们参考,特别是在GitHub、SourceForge以及Google Code等站点当中。

  在真正着手处理与项目有关的工作之前,大家应该首先学着熟悉项目的运作方式并了解如何对其结构进行管理,只有这样各位在需要援助之时才能清醒地意识到谁有能力帮自己渡过难关。再有,在开始工作之前明确自己要实现的目标也是个不错的主意,这样我们就不至于把项目弄得一团糟、或者把宝贵时间白白浪费在其他开发者早已实现了的现有功能身上。

  阶段二:提交

  当大家已经完成了自己预期的变更或者实现了构思已久的新功能,下面要做的就是将变更内容提交至主项目、并把成果发送给项目维护人员以供审查。

  这项工作可能需要利用GitHub或者SourceForge等平台来实现。我们对项目作出的变更一般会收到来自企业或者项目管理团队的“接受”或者“拒绝”反馈,大家由此就能了解到自己的开发成果是否被实际应用在了项目当中。如果答案是“接受”,那么是时候迈向发布阶段了。如果答案是“拒绝”,我们还需要重新回到贡献阶段、用心琢磨自己的想法是不是出了偏差。

  阶段三:发布

  在整个开源项目开发过程中,发布可能是其中最为复杂的一个阶段。在此期间,软件的最终版本将被提交到托管项目的代码库中,向非开发者提供的实时版本也会作出相应更新。到了这里,企业与开发人员就终于能够向繁重的工作挥手道别了,接下来软件成果将交给公众进行使用以及评判。

  内容总结

  我希望大家在阅读了本文之后能够对开源开发机制抱有更强的信心,更希望各位能够清楚了解要如何亲自参与到项目的发展进程当中。开源开发真的非常有趣,但有时候无法得到理想的结果也会使人感到沮丧。不过请大家始终记住一点:坚持下去,遇到障碍时不要轻言放弃——这是获得成功的必要前提。

  在本系列文章的下一部分中,我们将一同了解开源项目的许可机制以及开发人员在遇到问题时可以通过哪些途径找到答案。如果大家还有什么疑问,不妨评论栏中与其他朋友进行交流。

时间: 2024-10-25 10:57:44

开源软件入门指南:概念评述的相关文章

Linux-HA开源软件Heartbeat的概念

一. heartbeat的概念 Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reliability).可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案.其中Heartbeat就是Linux-HA项目中的一个组件,也是目前开源HA项目中最成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管.监测群

自由软件、开源软件、有源软件和商业软件

经常见社区里面就开源软件展开争执:到底什么样的软件算是开源软件?有的朋友认为必须要符合OSD(The Open Source Definition)标准的才是开源软件.有的朋友则认为只要源代码开放就可以.于是就出现了真开源和伪开源的说法,出现了各种各样的争执.开源社最近也展开了开放源代码是否就是开源软件的讨论. 其实这问题的核心不在于开源软件的定义,而在于我们少翻译了一个词,我们先来看国外的发展历史: 早期的软件在发行的时候都是有附带源代码的,比如早期的unix.Unix可以算得上比较早的Sou

你所不知道的21个云服务器应用实践———云计算综合入门指南

摘要:如今,基于互联网的服务和交互已经越来越深入我们的生活,"云计算"也成为了不折不扣的高频词汇.并以其快捷.按需调用网络资源的优势为我们的日常生活带来了诸多便利和改变.之前,我们基于云服务器的多种利用方法制作了"云计算的1024种玩法"的零基础入门专题,现在,我们对这一专题进行扩展和整合,制作出了这份云计算综合入门指南.   它分为两个部分,分别是云计算基础和云计算实践.在基础篇中,我们能学习到关于云服务器远程控制搭建,数据管理使用,以及建站环境扩展等工具性内容:

Mesosphere入门指南(二)

本文讲的是Mesosphere入门指南(二),[编者的话]本文为Mesosphere官方博客中发布的系列文章的第二部分,Mesosphere在本篇系列文章中分享了DC/OS的入门指南,并且做了演示. 在第一部分的指导中,我们已经学习了关于新的开源DC/OS-在Apache Mesos上用最简单的方法去开始部署容器和其他分布系统. 我们来快速回顾一下,DC/OS包含的Apache Mesos和它的所有核心功能,及以下特征: 一个简单的安装程序:在我们的config.yaml文件中列出你的所有节点的

我的碎碎念:Docker入门指南

本文讲的是我的碎碎念:Docker入门指南,[编者的话]之前曾经翻译过很多Docker入门介绍的文章,之所以再翻译这篇,是因为Anders的角度很独特,思路也很调理.你也可以看下作者的演讲稿<Docker, DevOps的未来>.本文介绍了Docker的一些基本概念.诱人的特性.Docker的工作原理.日常管理基本操作,以及一些Docker的问题的解决方案. 什么是Docker,你应该知道些什么? 相比很多人的解释,我相信说Docker是一个轻量级的虚拟机更容易理解.另外一种解释是:Docke

Mesosphere入门指南(一)

本文讲的是Mesosphere入门指南(一),[编者的话]本文为Mesosphere官方博客中发布的系列文章的第一部分,Mesosphere在本篇系列文章中分享了DC/OS的入门指南,并且做了演示. 在Mesosphere,大家都爱用Mesos.显而易见地,这是一个被数以百计的公司成功证明可以运行容器在生产环境中的技术.但是作为我们通常所说的"可扩展"技术,Mesos并不是用于部署的最简单的系统. 假设你想要使用Mesos去用于你的新的微服务架构的宿主系统.在之前老版本的Mesos里,

《WebGL入门指南》——第2章,第2.1节Three.js——一个JavaScript 3D引擎

2.1 Three.js--一个JavaScript 3D引擎 WebGL入门指南 需求是创新之母.每个开发者在项目之初都必须不厌其烦的使用WebGL原生API来编写代码,直到可以建立一个自己的代码库,以用于随后的通用3D编程.事实上,已经有很多人完成了这项工作.现在有很多不错的WebGL开源框架,例如GLGE(http://www.glge.org/).SceneJS(http://www.scenejs.org/).CubicVR(http://www.cubicvr.org/)等.每个框架

《WebGL入门指南》——第1章,第1.3节WebGL原生API

1.3 WebGL原生API WebGL入门指南 计算机图形学中的基本概念在过去的数年中从未发生过变化.但图形技术却不断进化,特别是最近几年,伴随着设备和操作系统的多样化.这些百花齐放的图形技术的根基则是诞生于20世纪80年代末期的OpenGL.OpenGL作为行业规范已经存在了非常长的时间,并且成功经受住了来自微软的DirectX的竞争考验,无可争辩的成为了3D图形编程的领衔者. 但是并非所有的OpenGL都是一样的.根据不同平台的不同特征,包括台式电脑.智能电视.手机和平板电脑等,人们开发了

Python的设计模式编程入门指南_python

有没有想过设计模式到底是什么?通过本文可以看到设计模式为什么这么重要,通过几个Python的示例展示为什么需要设计模式,以及如何使用.设计模式是什么? 设计模式是经过总结.优化的,对我们经常会碰到的一些编程问题的可重用解决方案.一个设计模式并不像一个类或一个库那样能够直接作用于我们的代码.反之,设计模式更为高级,它是一种必须在特定情形下实现的一种方法模板.设计模式不会绑定具体的编程语言.一个好的设计模式应该能够用大部分编程语言实现(如果做不到全部的话,具体取决于语言特性).最为重要的是,设计模式