TranslateProject/translated/talk/20170109 How to get started as an open source programmer .md
2017-01-27 00:13:32 +08:00

15 KiB
Raw Blame History

How to get started as an open source programmer

如何成为一名开源程序员

How to get started as an open source programmer

图片来源 :

Zagrev Flickr 网站 CC BY-SA 2.0

当我们探索科技世界的时候,总是让人兴奋不已。很多科技的发展日新月异,你探索得越远越深,你看到的世界就越广阔无穷,这就像是一只只驼下去的海龟一样。因此,科技世界也像宇宙一样无穷无尽。如果你也渴望加入到推动技术世界发展的社区中,你应该如何开始呢?你要做的第一步是什么?以后应该怎么做?

首先你得明白开源指的是开放软件源代码的意思。这个很好理解,但是“开源”这个词最近一段时间经常出现在我们身边,所以估计有时候大家都忘记了开源只是用来形容一种文化现象,而不是一家世界 500 强公司的名字。跟其它工作或组织不同的是你不用去参加面试或填个申请表或注册表的方式来成为一名开源程序员。你需要做的就是_编程_然后把代码共享出来并且完全保证在任何情况下该代码都保持开放状态。

仅此而已,你已经成为一名开源程序员了!

现在你已经明确自己的目标了,那么应该如何

技能树

你玩过 RPG 游戏吗?在那些游戏中就有线性“技能树”的相关概念。当你玩游戏时,你掌握了基本技能后,游戏便会自动“升级”,并且你也会获得新的技能,然后你再使用这些新的技能将游戏“升级”到一个更高的等级,你又会得到更多新的技能。通过这样不断的升级,获取新技能,以让你的游戏角色变得更强大。

成为一个程序员有点像提升你的技能树等级。你掌握了一些基础的技术,在参与开源项目开发的过程中,你不断实践,直至自己的技术等级上升到一个新的层次,之后你又懂了一些新的技术,并在项目开发过程中不断实践,不断提升技术等级,然后你再根据这个技能树不断成长,不断进步。

你会发现自己面临的不只一棵技能树。开源软件涉及到的技术比较多,包括很多参与者自身的优势、能力及兴趣爱好等。然而,有一些非常重要的技能有助于你成为一名伟大的程序员,不断的提高这些技能是成功参与到开源项目中的重要组成部分。

脚本编程

Scroll--How to program

对于 POSIX 系统,比如 Linux 或 BSD 系统最大的优势之一就是在你每次使用电脑的过程中,你都有机会练习编程。如果你不知道如何开始编程,你可以从解决工作中的一些基本问题做起。想想你日常工作中有哪些重复性的工作,你可以通过编写脚本的方式来让它们自动执行。这一步非常简单,比如说批量转换文件格式或重置图片的大小、检查邮件,甚至是通过单击运行你最常用的五个应用程序。无论是什么任务,你可以花一些时间去编写脚本以让它们自动完成。

如果有些工作需要在控制终端下操作,那么你就可以编写脚本来完成。学习 'bash' 或 'tsch 编程,把编写系统脚本作为你写代码和理解系统的工作原理的第一步。

系统管理

Caesar head

从这一点来讲,你也可以同时作为一个程序员,或者你还可以学习到多个技能树中的技能:那就是系统管理工作。跟程序员比起来,这两个职业在技能上有一些相似(一个优秀的系统管理员应该有一些编程经验,并能够熟练使用 Python , Perl 或者其它类似的编程言语来解决一些独特的问题而_程序员_指的是那些一直编写代码的人。

程序员

Wizard hat--How to program

开源是学习编程技巧最好的方式:你可以查看其他人写的代码,从中借鉴他们的想法和技术,从他们的错误中学习,并跟自己写的代码进行对比以发现两者的优缺点,如果你是使用 Linux 或 BSD 操作系统,整个堆栈对你来说都是开放的,你可以随便操作。

这就像旅游指南里所说的,随心所欲。事实上你不太可能会去深入研究一个项目的源代码,然后你就很快学会编程了。编程是一份很难的技术活,否则大家都可以从事编程工作了。

幸运的是,编程是有逻辑和数据结构的,这些特性跟编程语言相关。你也许不会深入的去研究编程,但是你研究得越深,你懂的越多。

懂得如何控制和让电脑自动执行任务是一回事,但是知道如何编写其它人想自动实现任务的代码,才能说明你已经真正进入到编程领域了。

精通多种编程语言

Parrot--How to Program

所有的编程语言都旨在处理相同的任务:让计算机能够完成计算工作。选择一种编程语言时你得考虑以下几个因素,你学编程的目的是什么,你所做的工作最常用的编程语言是什么,你最容易理解哪一种编程语言以及你的学习方式。

随便查下相关资料,你就可以了解编程语言的复杂性了,然后再根据自己的能力水平来决定先学习哪种编程语言。

选择编程语言的另一个方式是根据你的使用目的来决定,看看你身边的同事使用哪种编程语言。如果大家都是为了开发桌面环境的工具,你应该学习 C 语言和 Vala 语言,或者 C++ 语言。

总之,不要在各种编程语言之间不知所措。编程语言之间都是相通的。当你学好一种编程语言并能用它来解决工作中的一些实际问题的时候,你会发现学习另外一种编程语言更容易。毕竟,编程语言只是一些语法和相关规则的集合;学会一种编程语言后,再使用同样的方法去搞懂另外一种语言完全不是个事。

主要目的还是学会一种编程语言。选择一个比较适合自己或者你感兴趣的编程语言,或者是你的朋友在用的编程语言,或者是选择文档比较丰富,并且你理解起来也容易的编程语言,但是,最好是只关注并先学会其中的一种编程语言。

这是一个开源项目吗?

无论你是编程新手还是一个老司机,在你进入到开源世界之前,你需要搞明白组成开源软件的重要一点就是“开放源代码”。

最近一些厂商惯用的市场营销策略就是宣称他们的软件是开源的。然而,有些厂商只是发布了一个公共的 API 或者表示他们愿意接受其它开源用户提交的代码而已。“开源”这个词不是一个商标,并且也没有任何组织来决定怎么使用这个词。但是, Debian Linux 创造人 Ian Murdock 联合成立的开放源代码促进会对开源这个词进行了定义(授权“允许软件被用户免费使用,随意修改及分享”),并且被正式批准和授予许可证的软件才属于真正的开源软件。

把这些许可证条例应用到你的软件代码中,你就成为一名开源程序员了。 恭喜你!

开源社区

Community--How to program

咨询任何开源软件爱好者,他们会告诉你开源软件最关键的是人。没有积极的开源贡献者,软件开发就会中止。计算机需要用户,提交缺陷的人、设计师及程序员。

如果你想加入全球开源社区为开源软件做贡献,即使你是个人用户,你同样需要成为该社区的一个成员。这通常包括预定邮件列表,加入 IRC 频道,或者在论坛里表现活跃,并从最低级别开始。任何成熟的开源社区都有很多积极的参与者,因此你得理解在这个社区同意你加入之前,你必须证明自己不会轻易地离开这个社区。并且准备好为那些你非常感兴趣的项目提供长期的支持。

如果你只是想给他们提供一些小的帮助,这也是可以接受的。我自己也提交一些小的更新包到一些项目中,有时候项目管理者会觉得这个更新比较好,有时候他们也会拒绝我提交的代码更新包。但是,如果这个被拒绝的更新包对我很重要,我同样会维护并应用到客户的系统中,之后,我同样会继续努力。

这只是参与到开源项目中的一部分。

但是这些社区在哪里呢?这个跟开源项目有关。有些项目有专职的社区管理员,他们会把所有的社区参与者招集到一起,让彼此之间更了解。有些项目则来自你身边的一些论坛,他们使用邮件列表,或者使用问题追踪器与参与者联系。找到这些开源社区对你来说也不是个事儿。

还有个重要的事情就是研究他们的源代码!有些开发商由于某些原因宣称他们的软件是开源的,因此你还得了解下他们的源代码。尽管要全面了解他们的项目绝非易事,但是你也知道了这个项目是如何管理的,他们最可能需要帮助的是什么。关于代码是如何组织的?这些代码有注释吗?它们使用统一的程序风格吗?这些问题你可以查阅相关文档,尤其是 README LICENSE ,或者是 COPYING 这几个文件。

不要低估遵守开放式源代码承诺的重要性。这是你被允许参与进来到开源项目来的原因,因此,你得深入地考虑下你能从中学习到什么,以及你将如何为该项目提供帮助。

找到最佳的开源社区更像是约会,尤其更像是在圣烛节上的聚会。这需要时间,并且刚开始那几次有可能会失败。你参与这样的聚会越多,你就越了解这些开源项目。最后,你会更了解自己,当你找到了与其它参与者融为一体的方式时,你就已经成功了。总之,你得要有耐心,一切顺其自然。

行动比语言更重要

Wingfoot--How to Program

作为一名开源程序员最重要的是写代码,任何想法都没多少意义。关键是把你的想法变成实际的东西。你要让大家都知道你很了解自己的工作,你不怕苦不怕累,也愿意在开源项目上花时间,并且能够通过编程的方式来实现自己的各种想法。

为了更高效地完成那些工作,当然,除了完成开源项目上的工作,你还要懂得如何授受其它参与者提交的更新,以及哪一个更新更有助于系统的稳定及发展。

从下面几点开始:

  • 熟悉一个项目及其它协作开发模式,并且也要支持这种开发模式。
  • 编写软件升级包,缺陷修复包,或者一些小功能,并且提交它们。
  • 如果你提交的更新补丁被拒绝了,也不要难过。他们拒绝的不是你个人,而是开发小组在针对你提交的代码进行评估后作出的一个反馈。
  • 如果你提交的代码被改得面目全非后才被接受也不要泄气。
  • 重头再来,不断努力,再接受更大的挑战。

Leaderboard--How to program

在开源项目中不应该开设排行榜。然而,有些开源社区却弄了个贡献排名,其实这没必要。大家只需要积极参与、贡献、提交自己的更新,然后把自己所做的提交都隐藏,这样就可以了。

开发软件

Treasure Map--How to Program

编程在任何情况下都是为了自身的发展。无论你是否为了寻找解决问题的新方法,寻找优化代码的方式,学习新的编程语言,或者是学习如何更好的与其它人员合作,你都不要停止学习。你自己成长得越多,对开源项目越有帮助。

个人成长和职业技能的提升是你参与开源项目的终极目标,但是实际上这是一个贯穿整个项目的持续过程。开源程序员跟工务员不一样;这是一个持之以恒的过程。你需要持续不断的学习技术,分享知识,这个过程就像游戏人生中一样,但是你也学到了很多的东西。

这就是开源程序的过程:自由开发每一行代码。因此,找到你的技能树,激发出自己的潜能,不断提高自己的技能,并且积极参与到开源项目中。

作者简介:

Seth Kenlon —— Seth Kenlon 是一位独立多媒体艺术家,开源文化倡导者, Unix 极客。他还是 Slackware 多媒体产品项目的维护人员之一,官网:http://slackermedia.ml


via: https://opensource.com/article/17/1/how-get-started-open-source-programmer

作者:Seth Kenlon 译者:rusking 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出