开源项目徽章集锦
如果你有逛GitHub的习惯,应该就已经发现,许多知名的开源项目的README上都有着花花绿绿的各式徽章。比如说这个:
五颜六色的徽章一如游园会摊位上的饰件,吸引着人们驻足欣赏。原本平白单调的页面,装扮上这些徽章后,显得丰富多彩,给人留下了更为深刻的印象。没有这些点缀,README可能就只是一张干涩的布告。
当然,这些徽章的作用并不仅仅是装饰。大部分徽章会是某个开源项目周边服务的入口。
我第一次见到这些徽章的时候,还是在几年前。
那时候GitHub正高速发展,频频出现在各大IT媒体的报道中,围绕着它的生态圈也开始出现。正如GitHub它自己声称的,GitHub是一个同性交友social programming的平台,渐渐地各种开发者相关的业务开始在它这个平台上扎根生长。
TravisCI就是这么一家做GitHub平台生意的商家。为了推广它收费的私有仓库CI服务,TravisCI宣布,公有仓库上的CI,一律免费!酒香还怕巷子深,仅仅免费是不够的,还要宣传到众人皆知的程度。所以TravisCI想了一招,派发Travis认证徽章。凡是有着下面的徽章:
就表示该项目的程序存在单元测试且全部通过了。
这是一个双赢的决策,通过贴上徽章,开源项目可以证明自己是拥有测试的,而且能够通过所有的单元测试;同时TravisCI也借这些徽章,登上了各大开源项目的首页。现在你只要打开某个知名开源项目的GitHub页面,就能看到TravisCI的小广告徽章;再进一步点进去就到了TravisCI的网站了。到了这一步,你可能就会停下来看看TravisCI的服务,毕竟他家的服务,对于公有仓库可是免费哦!
虽然TravisCI在公有仓库上持免费策略,不过这份在线CI的生意显然是有利可图的。因为我们可以找到许多同样也是做CI的公司,如 codeship、CircleCI、shippable、appveyor 等等。可以这么说,这一块的生意已经是个红海了。这些后来者也跟TravisCI采取了同样的策略,来自GitHub或BitBucket的开源项目免费,并且派发了一模一样的徽章小广告。所以现在看到类似于的徽章,也有可能来自于其他公司的。鉴于本文仅侃侃开源项目上的那些徽章,所以就不讲述如何给开源项目做CI了。有这个需求的请点进相关公司的主页。强调下,这里只谈徽章,无心软广。对于本文中提到的任何公司或服务,本人既不对其服务质量做任何保证,亦不对其服务效果做任何评价。
给开源项目贴徽章的热潮,就这么被TravisCI带起来了。后来除了各周边业务公司会派发徽章小广告,开发者们也会制作各种徽章,既起到吸引眼球的作用,也能给自己的项目贴贴金。
除了CI徽章,出现得最多的徽章莫过于release/version类的徽章了。
这些徽章是由开发者自己定制的。shields.io提供了自定义徽章的服务,你可以自制各种release/version徽章,在填数据的时候填上项目当前的版本号,然后就能生成一个svg图像。接下来你所要做的,就是把这个图像的链接加到README上。这样别人访问你的项目主页时,就能看到一个漂亮的徽章了,感觉上了个档次呢。反正README开头那么大一块空白,除了给别人打小广告,也应该给自己留多几个位置。
还有一部分徽章上写明了该项目在pypi/npm/rubygems上的下载量。这些徽章的定制服务同样也由shields.io所提供。你所需的,只是在填写项目链接时,把自己写的库的名字填上去,shields.io自然就能够获取你的库的下载量,生成对应的徽章:
对于npm包,除了可以使用shields.io的服务,也可以通过nodei.co来生成对应的下载量徽章:
看上了GitHub开发者这块蛋糕的,不止做CI的公司。各家做团队协作的公司也接踵而来。GitHub自身就提供了issue和pull request的管理面板,不过有些时候这些面板是不够的,你可能觉得还需要更加丰富的项目管理工具。waffle.io就打算做这方面的生意。其实它提供的服务相对比较简单。它会提供个项目面板给你,这个面板会以可视化的形式显示issue和pr列表上打了不同标签的事项的情况,还有对issue/pr的处理进度,等等。这样一来,整个项目的大体情况可以更加一目了然。它同样提供了徽章,命名规律是https://badge.waffle.io/$REPO/$REPO.svg
。
跟waffle.io相似的还有一个叫issuestats的网站。你可以在这个网站上查到某个GitHub上的项目对issue和pr的平均处理时间和处理用时的分布。当你想知道某个项目的开发是否活跃,可以在这个网站上查一下;当你想声明自己的项目很活跃,也可以贴上这个网站提供的徽章,用数据说话。
项目管理所不能或缺的,除了任务列表,另一个恐怕是即时沟通工具了。虽然比起商业公司中的项目,开源项目对即时沟通协作的需求并不很大,但还是有的。一些传统的开源项目,可能会使用IRC;不过一些新潮的开源项目,可能会使用 gitter.im。gitter.im的用法就像是个QQ群,你可以给自己的项目创建一个聊天室,并在项目页面上添加这个徽章: 和对应的gitter.im聊天室链接。别人一点进去,就可以加入到你的聊天室,问你各种问题了。所以要想做个勤劳的开源项目维护者真不容易啊,除了要解决随时而来的issue和pr,如果开了gitter.im,还要挂在那里蹲守,解决各种问题。不过据我亲身体会,实际上到gitter.im问问题的人并不多。也许需要即时沟通工具更多的是使用私有仓库的开发者。
如果你更喜欢用irc,kiwiirc 提供了个web页面的irc客户端,你同样也可以找到关于它的徽章。
如果有在公司项目中做CI的经验,你应该会理解CI可不仅仅是运行单元测试那么简单。一个完整的CI,还包括对代码复杂度的分析,对常见缺陷的扫描等等。有些复杂的CI系统还会定期进行性能回归测试。对比之下,TravisCI提供的仅能运行单元测试的CI真是弱爆了。不过“市场厌恶真空”,凡是出现了真空而又有利可图的地方,自然会出现其他商家。codeclimate就是这么一家公司,它会分析项目代码的三个指标(复杂度、冗余和规范),并计算出一个最终的GPA:。你可以把这个GPA做成徽章,贴到项目主页,就跟三好学生奖状一样。当然,如果分析出来的结果很难看,就不用贴出来丢人现眼了。另外一家公司coveralls则主打覆盖率统计。它能够统计项目代码的行覆盖率,然后你可以在shields.io上制作对应的徽章。一般来说,覆盖率在70%以上就已经算是可以拿出来晒了。在shields.io上也可以看到,同样提供代码扫描/覆盖率统计服务的公司还有不少。
假如你还有什么特别的需求,完全可以在shields.io直接定制一个徽章,比如下面这个就是:
或者更霸气一点的:
make building blocks that people can understand and use easily, and people will work together to solve the very largest problems.
make building blocks that people can understand and use easily, and people will work together to solve the very largest problems.