古话说得好:“万事开头难”。
开头在本质上是解决 “ Bootstrapping ”,人们一直使用这个比喻来描述解决启动问题的方法,即一个人试图用自己的鞋带将自己拉起来。比如按下电脑开机按钮后初始化系统被广泛称作自举引导(简称 booting )。
想做好一个开源项目,就先得规划一个好的启动方式。
10 多年前做开源项目托管的话基本只有一个选择,那就是 SourceForge。 期间也有过一些其他大厂的项目托管服务,比如 Google Code,Sun/Oracle 的 Project Kenai,现在都停服了。目前 GitHub 已然是全球最大的开源项目托管服务商了,促成这样现状的最大原因有这几个方面吧:
目前 GitHub 是开源项目托管的不二之选。国内也有类 GitHub 的项目托管服务,比如码云和 Coding,希望它们越做越好 :+1:
建库是第一步,首先需要确定的是开个人项目还是组织项目,这两者有些许不同:
第二步就是需要一个好的名字:
-
,最后遵循开发语言、框架的约定初始提交尽量是核心功能可用的,这样能给别人一个好印象。并且必须写好 README,内容至少覆盖如下几个方面:
除了 README,GitHub 还建议加入编码规范、贡献指南说明,这个可以后期慢慢加入。
文本的介绍是一方面,另一方面是多媒体格式,如果能有使用视频是最好的,但至少项目的 logo 是要有的,一开始稍微丑一点没关系 :blush:,可以鼓励其他人参与贡献。
项目托管服务商一般都提供了 wiki 服务,主要用于项目相关文档。直接使用 wiki 的最大好处是可以让其他人参与进来维护文档,比如有错别字时其他人可以很方便地帮忙修改。
但直接使用 wiki 服务也有个致命的缺点,就是当项目要迁移托管商时就很麻烦,不同服务商支持的文档语法不尽相同,排版也比较麻烦。推荐的做法是项目的文档自己搭建一个站点来管理,虽然运维麻烦一些,但这样不存在迁移问题,并且自由度也更大一些。
建议通过论坛系统来维护文档,这样方便用户进行提问,也促进了项目社区的发展。
Issue 最好先建立模板,让用户提问的时候有章可循。不过即使有模板,issue 描述不清晰还是很常见的,用户的系统环境千奇百怪,遇到奇葩的系统不工作其实也正常。
关于 issue 你未来可能会面临如下情况:
良好的 issue 交互情况:
总之通过 issue 来追踪管理变更是很好的做法,发布版本时还可以根据 issues 生成 changelogs。
不过对于 issue 也有我觉得比较难处理的情况:
总之,做开源很重要一点就是和参与者、用户保持交流,等项目用的人多了以后责任也会变大,所以不能太随意,尽量做到变更可追溯。
总之,开始一个开源项目时最重要的一点就是要问自己:_为什么要做这个开源项目?_ 这个问题的答案将解释该项目的动机并且为项目设定了目标。
开源项目成千上万,并且同质化严重,但总有一些开源项目能够脱颖而出,因为这些项目抓住了本质:
以上都是我的经验之谈,如果你想更全面了解开源,请访问 GitHub 出品的 Open Source Guide。
https://github.com/88250,欢迎关注。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.