六个开源软件开发的“潜规则”

你想成为开源项目中得意满满、功成名就的那个人吗,那就要遵守下面的“潜规则”。

正如体育界不成文的规定一样,这些规则基本上不会出现在官方文档和正式记录上。比如说,在棒球运动中,从比分领先时不要盗垒,到跑垒员跑了第一时也不要放弃四坏球保送。对于圈外人来讲,这些东西很难懂,甚至觉得没什么意义。但是对于那些想成为 MVP 的队员来说,这些都是理所当然的。

软件开发,特别是开源软件开发中,也有一套不成文的规定。和其它的团队运动一样,这些规定很大程度上决定了开源社区如何看待一名开发者,特别是新加入社区的开发者。

按部就班,循序渐进

在参与社区之前,比如开放源代码或者其它什么的,你需要做一些基本工作。对于有眼界的开源贡献者,这意味这你需要理解社区的目标,并学习应该从哪里起步。人人都想贡献源代码,但是只有少量的人做过准备,并且乐意、同时也有能力完成这项艰苦卓绝的工作:测试补丁、复审代码、撰写文档、修正错误。所有的这些不受待见的任务在一个健康的社区中都是必要的。

为什么要在优雅地写代码前做这些呢?这是一种信任,更重要的是,不要只关注自己开发的功能,而是要关注整个社区的动向。

博闻强识,敦善不怠

当你在某个社区中建立起自己的声望,那么很有必要全面了解该项目和代码。不要停留于任务状态上,而是要去钻研项目本身,理解那些超出你擅长范围之外的知识。不要只把自己的理解局限于开发者,这样会让你着眼于让你的代码有更大的影响,而不只是你那一亩三分地。

打个比方,你已经完成了一个网络模块的测试版本。你测试了一下,觉得不错。然后你把它开放到社区,想要更多的人测试。结果发现,当它以特定的方式部署时,有可能会破坏安全设置,还可能导致主存储泄露。如果你将代码视为一个整体时问题就可以迎刃而解,而不是孤立地看待问题。这表明,你要对项目各个部分如何与其他人协作交互有比较深入的理解。让你的补丁填坑而不是挖坑。这样你朝成为社区精英的目标上又前进了一大步。

粗枝大叶,自寻烦恼

代码提交完毕后你的工作还没结束。如果代码被接受,还会有一些关于这些更改的讨论和常见的问答,还要做测试。你要确保你可以准时提交,努力去理解如何在不影响社区其他成员的情况下,改进代码和补丁。

和谐相处,助人助己

开源社区不是自相残杀的丛林世界,我们更看重项目的价值而非个体的贡献和成功。如果你想给自己加分,让自己成为更重要的社区成员、让社区接纳你的代码,那就努力帮助别人。如果你熟悉网络部分,那就去复审网络部分,用你的专业技能让整个代码更加优雅。道理很简单,顶级的审查者经常和顶级的贡献者打交道。你帮助的人越多,你就越有价值。

八面玲珑,面面俱到

作为一个开发者,你很可能希望为开源项目解决一个特定的痛点。或许你想要运行在一个目前还不支持的系统上,抑或你很希望改革社区目前使用的安全技术。想要引进新技术,特别是比较有争议的技术,最好的办法就是让人无法拒绝它。你需要透彻地了解底层代码,考虑每个极端情况。在不影响已实现功能的前提下增加新功能。不仅仅是完成就行,还要在特性的完善上下功夫。

糜不有初,鲜克有终

开源社区也有许多玩玩就算的人,但是承诺了就不要轻易失信。不要就因为提交被拒就离开社区。找出原因,修正错误,然后再试一试。当你开发时候,要和整个代码库保持一致,确保即使项目发生变化而你的补丁仍然可用。不要把你的代码留给别人修复,要自己修复。这样可以在社区形成良好的风气,每个人都自己改。

这些“潜规则”看上去很简单,但是还是有许多开源项目的贡献者并没有遵守。这样做的开发者不仅可以为成功地推动他们自己的项目,而且也有助于开源社区。

作者简介:

Matt Hicks 是 Red Hat 软件工程的副主席,也是 Red Hat 开源合作团队的奠基成员之一。他历时十五年,在软件工程中担任多种职务:开发,运行,架构,管理。

本文作者:佚名

来源:51CTO

时间: 2024-07-28 16:52:08

六个开源软件开发的“潜规则”的相关文章

开源软件开发与软件安全问题(1)

关于微软Windows与基于Linux的操作系统哪个更安全的讨论席卷了互联网.讨论涉及许 多人的既得利益和偏袒的利益.由于了解不够以及逻辑错误引发的误解导致了讨论的混乱,使得讨论趋于白热化.出于广告宣传策略的需求希望能使赞助方获得更多的关注,派性论文使用整理过的统计数据泡制过于明显的权威及客观,实际上等于用偏见和可疑的事实来支持讨论.这场缺乏确切结论的大讨论看似永无休止的部分原因就在于对安全的评估过多的集中 于一个附带现象上:他们只研究安全性能的表面现象,而没有 深入的分析安全特性的原因.部分原

IBM推出开源软件开发工具Quarks,助力企业开发物联网应用

IBM新推出一款全新的开源软件开发工具Quarks,帮助制造商和程序员充分利用物联网传感器数据,进而开发高效应用. Quarks建立在IBM Streams系列产品(IBM Streams是处理移动数据的企业工具)的基础上,现在专为程序员和制造商提供开源工具,方便他们开发应用.目的很纯粹,就是为了让程序员们不费吹灰之力就直接使用设备中的移动数据. 比如,你可以通过可穿戴式设备来观测一个糖尿病患者的身体状况,或者让矿工和石油工人戴上传感器头盔,来检测他上工时的健康情况. 以上类似情景都需要通过传感

红帽更新开源软件开发工具

红帽(RHT)更新了其开源编程语言和开发工具,即熟知的红帽软件集合,目前可用的是1.1测试版本.这套开发套件(独立发布的)是其旗舰产品红帽企业版Linux(RHEL)的补充. 红帽软件集合发布于2013年秋季,其http://www.aliyun.com/zixun/aggregation/8437.html">目标群体是那些想要借助单一来源来部署最新的稳定版本的主导开源编程语言.数据库和工具集的开源软件开发者.红帽以订阅服务方式提供这组套件,承诺会比RHEL提供更多的软件更新.而通常情况

使用Eclipse和其他开源软件开发一个词汇波应用程序

本文可视化是一个http://www.aliyun.com/zixun/aggregation/17547.html">功能强大到令人膛目结舌的方法,它可以快速确定特定文本所指的内容.作为一个副产品,可视化也提供了一种方法进行文本实时分析.本文将介绍如何使用开源工具和库开发文本可视化和分析软件.本文的应用程序比较和分析了两个具有相同或类似内容的文本,支持用户获取关于这些文本及其内容的新见解. 您构建的应用程序是基于词汇云 可视化的.词汇云可视化可分析特定文本,并将其单词按出现频率进行排序.

码农需要知道的“潜规则”

前言: 吴思先生在<潜规则>(中国历史中的真实游戏)一书中讲述了很多生动.有趣的官场故事,透过历史表象,揭示出隐藏在正式规则之下.实际上支配着社会运行的不成文的规矩, 非常值得阅读. 这篇文章准确来讲并不是计算机/软件开发的潜规则, 实际上是那些你可能在使用,却没有注意到的一些原理和规律,这些东西很重要,掌握了能够指导你以后的开发和设计. 和码农翻身公众号之前的文章不同, 这是一篇没有故事,读起来不那么好玩的超级干货, 我建议你静下心来,阅读一遍, 仔细的思考一下, 绝对物超所值. 上帝的规矩

用友致远陷佣金门软件商自曝潜规则

每经记者 黄清燕 实习生 徐冰玉 发自上海 近日,网上流传的一份"用友致远行贿"清单的帖子牵动着一向低调的协同软件厂商--用友致远的神经,而作为用友致远的第二大股东用友软件(600588,SH)也被卷入其中. 政府机构.名企被曝收佣金 在<每日经济新闻>获得的"行贿清单"中,显示了从2009年2月至12月间,用友致远四川区.北京直销.行业部等多个销售区域及部门支付客户佣金的情况. 这张清单上包括政府机构和企业的详细名单.每笔业务单的返还金额.收款人等众多

开源软件集散地Github的前世今生

有时候处理规模问题最好的办法就是让事情变得简单并尽你可能去避免出现这种情况.这是 GitHub 所采用的方法,林纳斯·托瓦兹(Linus Torvalds)在十年前开发了Git源代码控制工具,GitHub 为该工具提供资料库服务(repository service),目前已经有了爆炸性的发展,并成为开源软件开发工作的重心之一. 可以理解为什么程序员们会精挑细选他们创作代码用的工具并与他人分享,反过来,他们也会去调整和改进这些工具.一种非常现实的感觉就是,软件开发者们"住进"这些系统中

运营商如何利用开源软件发展云计算

云计算降低了用户和企业使用信息化应用的门槛,使IT资源成为像水电一样的社会公共基础设施,运营商作为通信基础设施提供商,从IDC租赁服务提供商升级到云服务提供商是必然选择.目前国内三大运营商已通过各种形式进入云计算市场,大部分采用商业软件集成后对外提供云计算服务的建设模式,相较于国内外其他云计算公司采用自研系统的模式,面临着成本高.维护难等问题.在运营商初期不具有核心研发能力的情况下,如何快速构建自研系统成为运营商发展云计算不可回避的问题. 开源软件的出现给了运营商站在巨人肩膀上的机会,在商业模式

IT观察 开源软件正改变软件产业格局

业界曾经有个预言,开源软件将改变未来软件产业结构,而这一预言正在一步步成为现实. 20年间,开源软件对传统商业软件构成了最大挑战与威胁,并逐渐改变着传统软件的商业模式.发展路径.尤其是在近几年经济环境紧张的背景下,IT投资趋紧,而开源软件的免费模式或较低成本的获取方式使它更加容易得到企业的青睐,成为产业界热门讨论的话题. 国外大型软件厂商加大对开源软件的投入.随着全球开源软件产业规模不断壮大,传统的大型商业软件企业也开始加大对开源软件领域的投入.其投入模式主要表现为三类:一是并购成熟的中小型开源