怎样维护成功的开源项目

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

写好指导性文字

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

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

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

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

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

态度

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

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

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

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

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

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

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

营销

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

51d37631a3398.jpg

找到你的项目,站在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请求必须在合并之前完全测试。

51d3764de5ec3.jpg

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

找到乐趣

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

原文:Medium

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

技术管理中的手段——奖励和惩罚

对于技术出身的同学来说,一旦晋升为管理岗,则意味着面临很多棘手的问题,例如:手下的人不听管教,无法按时完成任务等等。一般凭技术晋升的同学,自然是技术中的佼佼者,作为团队中的骨干&#xff0…

用科学实验玩“坏”二十四节气,中华传统还能这么学,科学、节气、民俗三重启蒙!...

▲数据汪特别推荐点击上图进入玩酷屋之前我们“迪比的冒险之旅”和“delightmom魔幻科学实验”做完团购活动之后,很多妈妈都跟小木说拿回去孩子特别喜欢,每个实验做了好几遍还不尽兴,经常追问小木有没有新的实验更新。看下图孩子玩的多么开心…

java 1.8 vm_HotSpot虚拟机在java 1.8中的新实现

HotSpotJava HotSpot 虚拟机是 Java SE 平台的一个核心组件。它实现 Java 虚拟机规范,并作为 Java 运行时环境中的一个共享库来提供。作为 Java 字节码执行引擎,它在多种操作系统和架构上提供 Java 运行时设施,如线程和对象同步。它包括自适应…

用BenchmarkDotNet看Method

在前面的文章中看了Property的几种不同访问方式《用BenchmarkDotNet看Property》,性能调用上的差别明显,那同样作为class里重要成员,Method性能如何呢?下面是被测试方法public class MyClass{public string MyMethod(){return Dat…

美国老师用的思维导图书,真正培养孩子的思维能力!

▲数据汪特别推荐点击上图进入玩酷屋小木读大学的时候,无意间在图书馆接触到了东尼博赞的《思维导图》。当时有好几个朋友和我推荐过这本书,我就借来看了。阅读之后,我发现对我来说,这真是不可多得一本好书——它改变了我20多年的…

filesystemwatch java_C#方法的委托和java中的回调

先看个效果20130415.C#监视文件夹,显示文件夹操作到listView上代码实现,以前在学校生活写的,就几句代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;us…

每日一笑 | 为什么男生追到一半就不追了?

全世界只有3.14 % 的人关注了数据与算法之美(图源网络,侵权删)

转:超越设计模

转:http://www.ibm.com/developerworks/cn/java/j-lo-beyondpattern/刘 旭进, 软件开发工程师, IBM 中国软件开发中心简介: 可复用面向对象软件的基础 -- 设计模式,以其可复用的设计初衷、精巧的逻辑思维被广大面向对象程序设计所追捧。但不少…

为什么中国天才都往美国跑,可美国人的数学那么槽糕

中国天才少年尹希,17岁时收到哈佛大学博士offer,31岁成为哈佛最年轻华人正教授。中国年轻科学家、未来科学大奖数学与计算机奖获得者许晨阳,于2018年加入美国麻省理工,选择去世界顶尖的地方看看。22岁中国“神童”曹原&#xff0c…

如何使用VIM的Help

很多时候在用到vim的命令的时候,都会去网上搜索,殊不知,如果熟练使用VIM的help,可以达到事半功倍的效果。 下面介绍如何使用VIM的help: 1. 在vim的一般模式中输入:help可以进入vim的help界面 这里面注…

可编程智能小车,100种玩法,从3岁玩到15岁,培养孩子“最强大脑”

▲数据汪特别推荐点击上图进入玩酷屋毫无疑问,数学、科学和计算机科学是解决21世纪现代问题的三大支柱。当现在各式各样的兴趣班和教育辅导班快要呈现饱和状态时,一种新兴的教育活动正如火如荼地进行着那就是少儿编程。少儿编程奇迹般的红火,…

php 数组什么情况下是空的?

转载于:https://www.cnblogs.com/persist/p/3183819.html

WPF实现时间轴(仿Gitee)

WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织“ 前言,接着上一篇圆形菜单。”欢迎转发、分享、点赞、在看,谢谢~。 01—效果预览效果预览(更多效果请下载源码体验):02—代码如下一、…

java如何用键盘输入_java中如何从键盘输入(附代码)

一、java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象。常用的类有BufferedReader,Scanner。相关java视频教程推荐:java实例程序:视频教程1、利用 Scanner 实现从键盘读入integer或float 型数据//import jav…

JS partial-application

为什么80%的码农都做不了架构师?>>> /* Title: Partial applicationDescription: the process of fixing a number of arguments to a function, producing another function of smaller arity */var partialAny (function(aps) {// This function wil…

每日一笑 | 我写了一段代码,为什么不能运行呢?

全世界只有3.14 % 的人关注了数据与算法之美(图源网络,侵权删)

使用IQueryable扩展方法实现复杂查询条件

问题在业务开发中&#xff0c;经常要处理比较复杂的查询条件&#xff0c;如下图&#xff1a;如果任一输入有值&#xff0c;则必须作为查询条件之一。示例代码如下&#xff1a;IQueryable<User> query repository.GetAll();if(name!null) {query query.Where(p>p.Name…

阿里日均纳税超1.4亿;AI换脸骗过美侦查;日本民众哄抢令和报纸;辟谣教学楼发现大量金矿;上海拨通首个5G通话;这就是今日大新闻...

今天是4月2日农历二月廿七今天星期二下面是今天的大新闻阿里巴巴日均纳税超1.4亿&#xff08;IT168&#xff09;4月1日&#xff0c;阿里巴巴在“2020财年首日”发布消息称&#xff1a;2018全年&#xff0c;阿里巴巴集团和蚂蚁金服集团总计向国家纳税516亿元&#xff0c;同比增长…

大家好!

在博客园申请帐号已经有好长时间了&#xff0c;可是一直也没有写点什么&#xff0c;可能是太忙了吧&#xff08;其实是懒&#xff09;&#xff01;以后我会多写些文字&#xff0c;毕竟这是一件好事。转载于:https://www.cnblogs.com/hubin/archive/2004/08/16/33928.html

腾讯大湘网某处csrf(city.hn.qq.com)可投诉刷留言

触发点&#xff1a; http://city.hn.qq.com http://city.hn.qq.com/auto/cshop&mbbs&id668 POST /msgboard/message.php HTTP/1.1 Host: c1.city.qq.com Connection: keep-alive Content-Length: 201 Cache-Control: max-age0 Accept: text/html,application/xhtmlxml,…