若是你有逛GitHub的习惯,应该就已经发现,许多知名的开源项目的README上都有着花花绿绿的各式徽章。好比说这个:node
五光十色的徽章一如游园会摊位上的饰件,吸引着人们驻足欣赏。本来平白单调的页面,装扮上这些徽章后,显得丰富多彩,给人留下了更为深入的印象。没有这些点缀,README可能就只是一张干涩的布告。git
固然,这些徽章的做用并不只仅是装饰。大部分徽章会是某个开源项目周边服务的入口。github
我第一次见到这些徽章的时候,仍是在几年前。web
那时候GitHub正高速发展,频频出如今各大IT媒体的报道中,围绕着它的生态圈也开始出现。正如GitHub它本身声称的,GitHub是一个同性交友social programming的平台,渐渐地各类开发者相关的业务开始在它这个平台上扎根生长。npm
TravisCI就是这么一家作GitHub平台生意的商家。为了推广它收费的私有仓库CI服务,TravisCI宣布,公有仓库上的CI,一概免费!酒香还怕巷子深,仅仅免费是不够的,还要宣传到众人皆知的程度。因此TravisCI想了一招,派发Travis认证徽章。凡有着下面的徽章:vim
就表示该项目的程序存在单元测试且所有经过了。api
这是一个共赢的决策,经过贴上徽章,开源项目能够证实本身是拥有测试的,并且可以经过全部的单元测试;同时TravisCI也借这些徽章,登上了各大开源项目的首页。如今你只要打开某个知名开源项目的GitHub页面,就能看到TravisCI的小广告徽章;再进一步点进去就到了TravisCI的网站了。到了这一步,你可能就会停下来看看TravisCI的服务,毕竟他家的服务,对于公有仓库但是免费哦!ruby
虽然TravisCI在公有仓库上持免费策略,不过这份在线CI的生意显然是有利可图的。由于咱们能够找到许多一样也是作CI的公司,如 codeship、CircleCI、shippable、appveyor 等等。能够这么说,这一块的生意已是个红海了。这些后来者也跟TravisCI采起了一样的策略,来自GitHub或BitBucket的开源项目免费,而且派发了如出一辙的徽章小广告。因此如今看到相似于的徽章,也有可能来自于其余公司的。鉴于本文仅侃侃开源项目上的那些徽章,因此就不讲述如何给开源项目作CI了。有这个需求的请点进相关公司的主页。强调下,这里只谈徽章,无意软广。对于本文中提到的任何公司或服务,本人既不对其服务质量作任何保证,亦不对其服务效果作任何评价。app
给开源项目贴徽章的热潮,就这么被TravisCI带起来了。后来除了各周边业务公司会派发徽章小广告,开发者们也会制做各类徽章,既起到吸引眼球的做用,也能给本身的项目贴贴金。svg
除了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直接定制一个徽章,好比下面这个就是:
或者更霸气一点的: