阅读更多

0顶
0踩

开源软件

转载新闻 如何成功运作一个开源项目?

2012-03-05 18:14 by 正式编辑 sherry617 评论(0) 有4791人浏览
本文作者Lorna Jane是开源项目joind.in(会议信息聚合及反馈网站)的负责人,在本文中,她给出了自己在运营该项目过程中的一些经验。

一、社区(Community)

你开发一个项目,公布它的代码,这就算是开源项目吗?如果仅仅是为了兴趣,你可以这么做,但是你想要其他人也参与这个项目,事情就大不同了。在我看来,开源项目必须有一个社区。

为了让别人参与进来,你必须建立一些基础设施,以便其他人能够顺利地进行沟通,了解项目的进展,而作为项目的负责人,你要管理这些基础设置。joind.in 使用Google Groups的邮件列表、问题跟踪系统(atlassian为开源项目提供免费的授权)以及IRC频道来完成这些工作,同时也用博客和Twitter账户来发表公开的声明。我们有不同的邮件列表——针对会议的、针对产品的、针对开发者的,这样就可以让不同的人选择自己感兴趣的信息。

如果你的项目还不是很有名,就需要通过博客、Twitter、Stack Overflow等各种渠道来进行宣传。

二、说明文件(README)

在项目获得别人的贡献代码之前,首先要保证他人能顺利地配置你的项目。最好在网页、Wiki、博客,以及项目中都有README信息。

三、项目规划(Roadmap)

一个清晰的项目规划是非常必要的。当用户给你提出一些新功能建议的时候,你可以说“It's on the roadmap”,或者让他们去邮件列表讨论,这样人们也知道你们正在干什么。

四、贡献代码(Code Contributions)

这一点有点复杂。大部分的开源贡献者只关注他们感兴趣的东西,其他的功能或是系统的其他部分很难引起他们的关注,但有时候其他部分恰恰是系统的关键部分。作为项目负责人,你需要及时审核、测试、合并、部署这些贡献的代码,当某些代码不被采纳的时候,你需要告诉别人为什么,以及如何改进。

其实把真正有用的贡献和一般、没用的贡献区分开来是比较困难的。有可能某个开发者提交代码后就消失了,只有你来维护这个代码。这个问题似乎只能靠直觉去解决,你能做的就是诚恳的对待代码贡献者,说出心里真实的想法。

五、透明化(Transparency)

我认为这是运营开源项目最重要的一点!透明化使人们能看到代码、问题列表、邮件列表,甚至持续集成服务器。我可以向他人寻求帮助,请他们指出哪段代码有问题。甚至有时候,在我还没有意识到的时候,就会有人帮我指出错误了。

对于和我一起工作的人来说,他们可以看到哪些“Pull request”是开放的,谁评论了什么,哪些代码在什么时候被采纳了。我会提交我所参与部分的代码到Githut,所以当有人问我某个功能的进度的时候,我往往直接告诉他们最新的版本号。

把项目的所有东西都拿出来给人看有点像是在熨烫一件脏衣服,让人有点不适,但是这样做的好处是你可以听到各种各样的建议。好几次我在Twitter上贴出Bug链接寻求帮助,都有不少人去留言给建议,也有人直接去测试代码。

Via LornaJane
0
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 离散数学中的村人指路和说谎者

    离散数学中的村人指路和说谎者 最近开始学离散数学,遇到了这一类"脑筋急血栓"问题。。。。 自己对这类问题思考和总结了一番,发现了一些有意思的规律 大佬轻喷,俺是蒟蒻 这种问题大概可以分成两类: 二对一 一对二 啥是“二对一”呢? emmmm就是俩人(一个骗子一个老实人)对于一个问题作答的题目 啥是“一对二”呢? emmmm就是一个人 对于俩选项(你是骗子 or not) 下面分别对两类问题举一个例子 二对一问题:村人指路 题目: ​ 边远村庄的每个人要么总说真话,要么总说谎话。对旅游者的问题

  • 数据结构实验之图论六:村村通公路

    数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory limit: 65536K 题目描述 当前农村公路建设正如火如荼的展开,某乡镇政府决定实现村村通公路,工程师现有各个村落之间的原始道路统计数据表,表中列出了各村之间可以建设公路的若干条道路的成本,你的任务是根据给出的数据表,求使得每个村都有公路连通所需要的最低成本。 输入 连续多组数

  • 数据结构实践项目——最短路径和拓扑序列

    本文是针对[数据结构基础系列(7):图]的第2组实践例程。 (程序中graph.h是图存储结构的“算法库”中的头文件,详情请单击链接…) 0710 生成树的概念 0711 最小生成树的普里姆算法 0712 最小生成树的克鲁斯卡尔算法 0713 从一个顶点到其余各顶点的最短路径 0714 每对顶点之间的最短路径 0715 拓...

  • [codevs2596]售货员的难题

    售货员的难题(salesman.cpp)【问题描述】 某乡有n个村庄(1<n<15),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村的路大多不同。为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为1,他不知道选择什么样的路线才能使所走的路程最短。请你帮他选择一条最短的路。 【输入】 村庄数n和各村之间的路

  • Java-共饮同井水

    Land 类 public class Land { public static void main(String args[]){ Village.setWaterAmount(200); int leftWater=Village.waterAmount; System.out.println("水井中有"+leftWater+"升水"); Village zha

  • 乡村卫生所选址

    二叉树相关知识 #include &lt;iostream&gt; #define N 100 using namespace std; void main() { char v[N] = { 0 };//存放顶点字母 int n; int e[N][N] = { 0 };//存放两地之间的距离 cout &lt;&lt; "输入顶点个数" &lt;&lt; endl; cin &...

  • 数据结构期末复习(二)

    1.选择题 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:( A ) A. 访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n) B. 在第i个结点后插入一个新结点(1≤i≤n) C. 删除第i个结点(1≤i≤n) D. 将n个结点从小到大排序 链接存储的存储结构所占存储空间:( A ) A 分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B 只有一部分,存放结点值 C 只有一部分,存储表示结点间关系的指针 D 分两部分,一部分存放结点值,另一部分存

  • 数据挖掘150道试题 测测你的专业能力过关吗?

    单选题 1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 2. 以下两种描述分别对应哪两种对分类算法的评价标准? (A) (a)警察抓小偷,描述警察抓的人中有多少个是小偷的标准。 (b)描述有多少比例的小偷给警察抓了的标准。 A. Prec

  • 以前有一个村庄

    以前有一个村庄,这个村庄实质上就是村长开的赌场,只流通村长自家制造的筹码。 外村进来的人如果参赌,也需要换成本村的筹码,这些人带来的钱必须交给村长,村长设定了一个大约的比例。外村人如果想出去的时候,需要村长家的账房先生、大小马仔等进行一系列的审批,加上这些人都想捞一把,所以,审批的时间很不一定。这些规则,本村、外村的人也懂得。 既然有这么多的有利条件,村长家就开始走向了发家致富的道路,加速制造...

  • 数据结构习题——第一章 绪论

    第一章  绪论 一.选择题 1.数据结构被形式地定义为(K,R),其中K是①的有限集合,R是K上的②的有限集合。   ①A.算法      B.数据元素    C.数据操作     D.逻辑结构   ②A.操作      B.映象        C.存储         D.关系 2.算法分析的目的是①,算法分析的两个主要方面是②。     ①A.找出数据结构的合理性      B

  • [基础题] 7.第二种(*)按如下要求编写Java程序:

    7.(*)按如下要求编写Java程序: (1)编写接口InterfaceA,接口中含有方法void printCapitalLetter()。 (2)编写接口InterfaceB,接口中含有方法void printLowercaseLetter()。 (3)编写非抽象类Print,该类实现了接口InterfaceA和InterfaceB。要求printCapitalLetter()方法实现输

  • 动态规划——openjudge7624山区建小学

    题目: 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i < m。为了提高山区的文化素质,政府又决定从m个村中选择n个村建小学(设 0 < n < = m < 500 )。请根据给定的m、n以及所有相邻村庄的距离,选择在哪些村庄建小学,才使得所有村到最近小学的

  • 社区医院选址问题

    问题描述 n个社区之间的交通图用有向加权图表示,先要从这n个社区中选择一个社区建立一所医院,问这所医院应建在那个社区,能使所有的社区都离这家医院比较近(能使离医院最远的社区到医院最近)或能使所有的社区达到医院的距离之和达到最小。 问题分析 关键就是要使所有的社区到达医院的距离之和最小。有两种办法,一种是直接运用弗罗伊得算法,求出任意两点之间的最短路径在求和。还有一种就是对每个点用dijk...

  • 不同进制的计时

    题目描述: 24小时计时制是一个广为使用的计时体系。在一个古老的村庄使用二进制下的24小时制,这时“11:11”表示的就是3点03分。 给一个未知的时刻,形如"A:B"的形式来表示,A,B分别是一个字符串,字符串可以由0-9和A-Z组成,分别代表0-9和10-35.求出这个时刻所处的所有可能的进制。 输入: 一行字符串,即“A:B”的形式,A,B的含义及组成如题面 输出: 输出可以包含...

  • 狄克斯特拉算法求解村庄问题

    采用控制台下应用程序的形式实现狄克斯特拉算法,求解村庄间最短路径的问题。 给定n个村庄之间的交通图。若村庄i和j之间有路可通,则i和j用边连接,边上的权值Wij表示这条道路的长度。现打算在这n个村庄中选定一个村庄建一所医院。编写如下算法: (1) 求出该医院应建在哪个村庄,才能使距离医院最远的村庄到医院的路程最短。 (2) 求出该医院应建在哪个村庄,能使其它所有村庄到医院的路径总和最短。

  • 共饮同井水

    编写程序模拟两个村庄共用同一口井水。编写一个Village类,该类有一个静态的int型成员变量waterAmount,用于模拟井水的水量。在主类Land的main()方法中创建两个村庄,一个村庄改变了waterAmount的值,另个一个村庄查看waterAmount的值。 public class Village { static int waterAmount; int peopleNum

Global site tag (gtag.js) - Google Analytics