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

写好指导性文字

每一个开源项目有三样东西是少不了的:项目目标和方法的简要说明、如何参与和授权许可。最好把它们预先放在一个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

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

转载于:https://www.cnblogs.com/shanyou/p/3172949.html

怎样维护成功的开源项目相关推荐

  1. 如何规划创建并长期维护一个Github开源项目?

    title: 如何规划创建并长期维护一个Github开源项目? tags: 开源 程序 Github zhaoolee categories: 极客 2021年, 国内各路论坛已经铺满屠龙宝刀点击就送 ...

  2. xmpp 开源项目选择_如何选择和维护安全的开源项目

    xmpp 开源项目选择 评估开源项目安全性的一些技巧. (A few tricks for assessing the security of an open source project.) The ...

  3. 维护一个大型开源项目,例如vscode是怎样的体验?

    作者:rebornix 链接:https://www.zhihu.com/question/36292298/answer/160028010 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权 ...

  4. 成功开源项目证明Web是开源最大成功

    开源运动广受欢迎,并且在软件开发史上写下了浓重一笔.但是它影响最深远的地方在哪呢?有史以来,最成功的开源"项目"又是什么呢?事实上,总体来看,Web不就是开源运动最大的成功么?可能 ...

  5. 你用的那些开源项目可能已经被放弃维护!

    在国内开源之路上,BAT 这些大型互联网科技公司走在前列. 有数据为证:截至 2019 年 3 月 22 日,阿里开源的总项目数为 1243 个,百度开源的总项目数为 746 个,腾讯开源的总项目数为 ...

  6. 维护开源项目太难,Redis之父:只做自己想做的

    本文转载自 InfoQ 最近,开源项目 Docz 作者 Pedro 发表短文称繁重的开源维护工作不可持续,自己曾处于"崩溃"状态. Pedro 表示最初为了开发 Docz,他可以提 ...

  7. 开源项目贡献者_如何吸引新的贡献者加入您的开源项目

    开源项目贡献者 by Shubheksha 通过Shubheksha 如何吸引新的贡献者加入您的开源项目 (How to attract new contributors to your open s ...

  8. 太难了!开源项目如何商业化?

    整理 | 王晓曼.伍杏玲 出品 | CSDN(ID:CSDNnews) 对于我们互联网开发者来说,开源就像空气和水一样运用在众多项目里,甚至有说法是"开源正在吞噬软件".优秀的开源 ...

  9. 如何在Github打造你的爆款开源项目

    目前为止我已经有五个流行项目(登上 Github 的 Trending 页),所以想分享我的一些经验和方法. 如果你开源过代码,就会知道让别人对你的感兴趣是多么困难.这很奇怪,不是吗? 我们花了至少数 ...

最新文章

  1. lsof 查看一个进程打开哪些fd及对应的文件或套接字操作
  2. PHP不能精确表达小数 PHP除法结果不准确 php 为什么数字除法不准确 PHP浮点数运算不准确的问题...
  3. 3d 仪表盘_新一代标致2008官图发布 配备3D全息仪表盘
  4. 聊聊redo log是什么?
  5. 文件字符输入流 FileReader java
  6. redis学习基本命令
  7. 推荐系统-Task05推荐系统流程构建
  8. Nginx @ Https
  9. win10 系统和office2016及visio2016专业版下载地址
  10. 人人商城小程序 用户登录授权接口 wx.getUserProfile后,个别用户出现无法登录的问题
  11. BZOJ 3717: [PA2014]Pakowanie
  12. java servlet mysql_servlet+mysql实现简易的登录功能
  13. 深度学习方法在糖尿病视网膜病变诊断中的应用
  14. python生成vcf通讯录文件
  15. 【后端架构完善与接口开发】003-新增ebook表,生成持久层代码
  16. 安卓zip解压软件_手机压缩软件ZArchiver下载、使用教程丨免费、中文,支持7z、zip、rar等所有格式...
  17. 近千首流行音乐MP3直接下载
  18. 【深度学习】经典神经网络 VGG 论文解读
  19. ASP NET - ArrayList 对象 方法描述
  20. 系统资源查看与进程管理

热门文章

  1. ie,火狐下滚动条的问题
  2. 医院管理制度【第一辑】2010年11月12日
  3. maxthon在浏览的页面上右键按住不动再按滚轮可以对打开的选项卡进行选择!
  4. why different people have different digital response?
  5. 如何获得春季周? for investment banking
  6. where is lingang city in shanghai?
  7. a partial surjection的题库
  8. SHADER效果收集
  9. Qwt(一): 编译 · 安装
  10. 初学者应该看看的6个free命令例子