设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

做一个优秀的开源项目需要注意哪些方面?

2014-1-26 11:12| 发布者: joejoe0332| 查看: 6911| 评论: 0|原作者: archychu|来自: 伯乐在线

摘要: 如果你想发布一个开源库,请确保它有以下特点:清晰的依赖性和安装说明;至少有一个简要的文档指南;修改日志和仓库中的标签;关于支持的语言、运行时、工具版本的信息和项目的成熟度;一个可以让用户提问和交流的邮 ...


  怎么把它搞糟

  如果你想坑你的用户,可以试试:

  • 在你项目的根目录放一个空的README

  • 在末尾写上“欢迎加补丁”

  • 发明你自己的许可证或者使用一个完全不熟悉的,比如WTFPL

  那么你的项目就永远不会有用户了。我保证。


  为你的项目写文档

  写文档不容易同时也是需要花费一些时间的。然而,文档是你能为你的用户做的最好的事了。不仅能够节省他们大量的时间,也可以让他们确信你的库不是被遗弃的软件。

  文档能够让你的用户完成他们起初使用你的库的任务。像Rob Pike说的,它“让这些任务成为可能”。这让你的用户知道你重视这一点,让他们知道你是个有血有肉的人,不是一个产生代码的机器。

  在ClojureWerkz上工作将近两年后,我可以自信地说,我们的用户最感谢我们的就是我们写的项目文档:

写出优秀的文档需要花些时间。幸运的是,现代工具可以帮到你并且大大减少你必须解决的一些烦人的事。


  我们为ClojureWerkz项目开源了我们的基于Jekyll的文档模板。我们在CSS和设计中视觉效果方面不是很擅长,所以我们使用了Twitter的BootStrap库。我们的文档站点可以更好看,但是相比大多数开源项目来说已经很不错了。你可以使用我们的模板或者为你的项目开发类似的工具。


  更好的是,如果你开源了你的文档站点(这似乎没有理由不那么做),你会看到人们会比贡献代码的修改更早的贡献出小的改进。


  如果你仍然不确定是否值得为你的项目写文档,看一下 Jacob Kaplan-Moss的这个报告


  怎么把它搞糟


  如果你想坑你的用户,可以试试:

  • 不要写一个文档说明,甚至连例子也不写

  • 确保你的API说明已经有三个月没有更新了

  • 声明那些不愿意读代码去理解即使是最基本的东西的用户是愚蠢的,并且应该去卖汉堡!


  更容易升级

  某些时候,你想要发行项目的另一个版本。这可能是让你的用户很开心,因为他们已经使用了你的库,或者很生气,浪费了他们时间。


  不关心向后兼容

  关于软件开发的一件很令人生气的事就是当你升级一个库但是数百个测试失败了。更让我生气的就是我还要重写我一半的基础代码,因为有人在没有任何警告的前提下决定打破公共的API。

  因此,致力于维护向后兼容性。当然你没有必要像OpenJDK那样支持15年以前的项目。但是在移除之前建议不使用一些东西能够更容易发现哪些地方改动了。

  你怎么做到这点呢?维护一个修改日志。


  拥有一个修改日志

  有时,你的用户会升级(关于这一点在下文会更多的介绍)。他们会问自己一个问题:

这次发布改动了什么地方呢?

然后

我的代码会不能用吗?我是不是一定要重写?

最后

Joe,那个运维的家伙会因为我升级讨厌我吗?


  所有这些问题都能通过一个修改日志得到解答。它像推特一样只不过它真的很实用,它是这样用的:

  • 每次你解决一个bug,在日志里加一个简单的记录

  • 每次你加入一个新特性,在日志里简单地提一下,并且用几个代码例子解释它。

  • 每次你做了重大的API改动,在日志中用粗体清楚的说明


  就是这些了。没有第三步!

  修改日志一般把最新的记录放在最前面。改动是按版本分类的。如果你有多个分支(比如master1.0.x),每一个都应该有一个独立的修改日志。

  就是这些了。可以看看, Welle的修改日志


  给版本加上标签

  又是那个时候了,你已经升级版本并且马上就要发布构件了。停一停,先做一件事:给这次提交加上标签。没有标签的话,找两个版本之间的不同会很痛苦的。

  一些依赖性(比如Bundler, Rebar)和配置管理工具可以使用标签,开发者系统这些标签是可用的。

  使用统一的版本信息,比如v1.0.0-alpha1v1.0.0v1.1.2等。标签不一致绝对会导致运维的人整天讨厌你的项目。



酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部