怎样维护成功的开源项目

开源可不仅仅是将代码扔到网上就万事大吉了,将开源项目变成能让自己引以为豪的东西才算成功。那么,你需要注意哪些方面呢?

写好指导性文字

每一个开源项目有三样东西是少不了的:项目目标和方法的简要说明、如何参与和授权许可。最好把它们预先放在一个README文件里。

我还喜欢加入一个名为“组织和理念”的部分,概括项目如何构成,各个东西都在哪儿,代码是怎样写的,需要哪些类型的测试,性能与简洁性怎么平衡。(详见案例unstdlib.py

接下来是“贡献”部分,要说清楚开发者怎样开始参与项目,以及将代码成功合并进项目的所有步骤。urllib3的贡献部分,已经被其他好几个项目采用了。

  1. 查看还没有解决的问题,或者新开一个问题来讨论某个功能设想或bug。
  2. urllib3库添加到Github上开始进行更改。
  3. 编写测试来显示这个bug是固定的或者它的功能是否正如预料的那样运行。
  4. 发送一个pull请求,干扰保持器,直到它被合并到一起并发布。

最后,每一个开源项目需要有一个授权许可,如果没有许可,那就意味着版权属于开发者,其他人需要明确的许可才能使用。

态度

对待用户和贡献者有好的态度是至关重要的,偶尔会有类库用户误闯到你的问题跟踪器里,并且很愚蠢的在文档编制里写了命令。那该怎么办?

1.你可能会斥责用户,因为他们的鲁莽行为浪费了你很多时间。

2.你也可以耐心的向用户解释他们所误解的,一旦他们进一步理解问题,那么邀请他们发送一个pull请求为其他用户改善文件编制。

有些团队可能因为某些原因选择第一种态度,也许是因为他们觉得维护人员做的是一件吃力不讨好的工作,还要承担丢失贡献者的责任。不过先来检查一下这两种态度所带来的效果。

当你责怪用户的时候,毫无疑问会丢失用户,还意味着丢失了他成为你的贡献者的可能性,说不定这种影响会传播到其他人那里,一传十十传百,别人可能真的认为你的文件编制里有问题。这无异于搬石头砸自己的脚。

但只要你有足够的耐性,礼貌待人,鼓励他们为项目出力,他们就会很有斗志。说不定他们就能在项目上做出重大影响,彻底改变现状。

在工作中保持良好的态度可能是比较难的一部分,因为每个维护人员的情况是不一样的,但是,礼貌、积极和进步是至关重要的。不仅仅是对于你和项目,还有整个团队。

营销

也许你能写出最有用最完美的代码并实现代码运行,但是你对技术社区的贡献会因为你允许人们重复使用你的代码而无限放大。

找到你的项目,站在SEO的位置思考整个项目,为项目选取一个带有重要关键词的相关名称。README里的项目描述和第一段应该是项目的简单总结,里面所有的重要关键词都是之前人们所搜索的。

urllib3——带有线程安全连接池的Python HTTP类库,支持文件公布,智能友好等等。

Python,HTTP类库,线程安全,连接池,文件公布,这些都是当人们遇到要使用Python的标准HTTP类库(urllib、urllib2、httplib)的时候所需要的。

一旦准备好了README,就要确保能够生成一些文档。发布在Read the Docs将是一个很好的选择。包括一些代码样本和便于采纳的详细菜单。

为你的受众提供技术支持,建立一些StackOverflow警报过滤器,甚至可以过滤掉谷歌的奇怪论坛警报。如果你推自己的软件,这个警报会帮助你添加一个你就是开发者的免责声明。

考虑合作关系,为框架编写一个可以使用你自己工具的插件,并观察这些工具能否将框架连接到README。两年前,我和Kenneth Reitz在不同的场合进行交谈之后,我们决定合作。虽然urllib3已经是非常流行的Requests类库的核心,但远远落后于当时的httplib2。当我和Kenneth Reitz合作之后,我们两个团队的成果远超出了我们的想象。此时,在我们的合作之间建立明确的规则和界线是非常重要的,这个规则后来也帮我们在合作当中建立了深厚的友谊和相互尊重打下了基础。

充足的时间,我的一个比较受欢迎的项目花了至少一年的时间。这在营销人员看来是懒散的表现,但如果你按照文章里说的那样去做,正确的完成每一件事,那么营销人员会不请自来。

技术社区

想要一个人做完所有的事是很难的,特别是很多人都期待着你能拿出好的作品。

抓住任何一个机会寻找pull请求。集思广益的力量是无穷大的,所以无论何时何地我都会向技术社区的成员寻求意见,他们常常说的RFC我从来没听过,甚至有的时候他们会主动研究前端主题。

大胆寻求帮助,我本打算花数小时致力于开源工作,但有时候日程安排忽略了或是我忘记了关于pull需求。我鼓励人们参与并在我需要更多的人参与的时候提醒我。在更复杂的分支,它有助于要求志愿者代替维护人员来处理这个问题,直到它准备好合并。

尽可能的自动化,去年,我们为urllib3设置了100%的测试覆盖规则,这使得我们的项目维护更加简单。任何功能都必须经过测试,否则它可以在没有通知的情况下被删除。这意味着每一个pull请求必须在合并之前完全测试。

维护贡献者列表,提醒并邀请贡献者把他们自己添加到列表里,即使他们做的事情微不足道。几个字节的存储库不花费你任何东西,这和他们因得到认可而产生的自豪感是无法比拟的。

找到乐趣

Andrey Petrov从事与HTTP和urllib3相关的的工作已经数年了,但仍然坚持维护开源项目,因为他喜欢技术社区,并在开源项目中感觉到自豪。他最后强调,工作中尽最大的努力,并为自己的工作而骄傲,有些人可能会欣赏你,有些人却不会。最后总会有人感激你为开源社区所做的积极有效的贡献。

原文:Medium

中文原文:怎样维护成功的开源项目

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技巅

系统架构和代码实现的高可控性

2304
来自专栏网站设计制作、数字营销

公司做电脑手机三合一网站需要了解的常识

随着HTML5网站制作前端技术的发展普及以及移动智能设备的流行,现代公司网站在原有只有PC网站的情景下越来越不能满足现代移动互联的趋势和营销需要。

2474
来自专栏云计算D1net

DevOps在云中如何演变

Puppet和Chef这样的工具帮助人们在云上使用DevOps成为可能,但是当涉及到管理和分析云应用时,仍然会有障碍。 软件开发从一个应用程序的架构开始。传统的...

3378
来自专栏CSDN技术头条

58同城沈剑:好的架构源于不停地衍变,而非设计

对很多创业公司而言,随着业务增长,网站的流量也会经历不同的阶段。从十万流量到一百万流量,再从一百万流量跨越到一千万甚至上亿的流量,网站的架构需要经历哪些变化?在...

2627
来自专栏直播系统源码

搭建直播平台过程中的全能“辅助”——流媒体服务器

直播在经历了爆发式增长后,在互联网领域中呈现出稳步增长的状态。前期观望许久的创业开发者们认为“火候到了”,纷纷开始将搭建直播平台项目提上日程。对于平台搭建来讲,...

3100
来自专栏JAVA技术zhai

架构的演进,阿里资深Java工程师表述架构的腐化之谜

新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品...

49112
来自专栏腾讯云数据库(TencentDB)

腾讯云数据库智能化海量运维的建设与实践

作者介绍:鲁越,腾讯云数据库架构师团队负责人,主要负责腾讯云数据库MySQL、Redis、Oracle等数据库售前架构、运维、调优等工作,曾就职于网易和尼比鲁。

1.1K37
来自专栏知晓程序

清单控必备!有了这款小程序,碎片时间也能轻松涨知识

今天,知晓程序(zxcx0101)就推荐一款碎片化阅读和知识分享平台「清单 plus」,让你在短时间内迅速收获经验和知识。

601
来自专栏ThoughtWorks

2015.1 技术雷达 | 技术篇

许多项目都存在外部代码依赖,这些依赖中很大一部分是由开源项目提供的。为了确保构建过程可被重现,我们总是与固定版本的外部依赖进行集成。但这就意味着我们与这些类库的...

3557
来自专栏云计算D1net

通过直接连接提高公共云的可靠性

企业可以采用直接连接,如来自AWS和Azure的直接连接,可以把数据放到公共云的快速轨道,但企业应该准备为此付出一些代价。 公共云服务需要访问网络,并且通常是通...

38610

扫码关注云+社区

领取腾讯云代金券