# 5. 使用 Slack 替代微信、邮件和短信

Date: 31/03/2017

## Status

Accepted

## Context

1. 当前使用微信、邮件作为工作中的沟通工具，工作与生活混合；
2. 各种告警信息需分别查看邮件、短信或是监控平台；
3. 随着任务管理平台、Bug 管理平台、wiki、文档分享网站、聊天工具的流行，邮件的使用场景越来越小，并且邮件信息并不及时；
4. 通过微信进行沟通，新人无法了解历史信息，经常需要把发过的内容重复发送。

## Decision

### Slack 支持的功能

1. **公开与私有的频道，频道可随时加入或退出**；
	1. 按项目，project-crm, project-sms, 等；
	2. 按技术话题，tech-restful-api, tech-queue 等；
	3. 可以邀请相关人，任何人也可随意加入。
2. **消息支持表情快速回复**；
	1. 表情是附加在消息上的，上下文内聚很高。
3. 消息支持收藏；
	1. 一些不错的重要信息，可以收藏起来随时查看。
4. 支持各种文件的分享；
	1. pdf 等文件均可预览。
5. **分享的链接支持预览**；
	1. 分享的链接，不用点开也知道大体内容。
6. 搜索功能强大，可通过快捷方式，搜索同事，消息记录，文件等；
7. 多种程序代码支持高亮；
	1. 代码高亮预览，自动折叠，不影响整体效果。
8. **强大的第三方集成，将所有消息、通知汇聚在一处**，例如，Trello，Github，NewRelic, Sentry，Jenkins 等；
9. **新加入者可查看群组历史信息**。
	1. 信息再也不用重复发了。
10. 开放性非常好
	1. 任何人都可以方便申请开发者 KEY，建立自己的机器人。

### 研发部频道设计

1. CI/CD - 用于接收测试、部署结果，测试覆盖率，PR 等信息，也用于发起测试、部署等；
2. NewRelic - 用于接收应用性能报警等信息；
3. Sentry - 线上实时错误信息，可根据项目单独拆出来；
4. Team-X - 用于组内沟通，一个 Scrum 组，包括研发，产品及测试；
5. Knowledge - 用于所有研发人员进行沟通与分享； 
6. Product - 用于跨 Team 的产品进行沟通与分享；
7. Backend - 用于所有后端人员进行问题咨询及分享；
8. Leads(私密) - 用于所有 leader 进行沟通、安排周会等；
9. Frontend, UI, Mobile, Devops, QA etc

### 我们用了如下第三方软件

* Sentry
* NewRelic
* RedMine
* Teambition
* Confluence
* Github
* Bugly
* FIR.im
* Jenkins
* etc

### Slack vs BearyChat

* Slack 优缺点：
	* 鼻祖
	* 几乎所有常用软件(国外)都有集成
	* 功能完善健壮，公司可信
	* 网络不稳定
	* 国内应用集成很少
* BearChat 优缺点：
	* 基本有 Slack 的核心功能
	* 数据的隐私无法保证
	* 服务的可用性无法保证
	* 第三方集成太少（must-read, Simple Poll, etc 都没有），倒是集成了国内的 Teambiton, 监控宝等

最终，我们给国产软件(服务)一个机会。

经过两周的 BearyChat 试用，目前已准备转用 Slack - 2017-08-03

1. BearyChat 的 Teambition 集成失败，沟通后说是 TB 的接口调整；
2. 集成数的限制，都是 10 个，但同一个第三方多次集成，Slack 算一个，BearyChat 算多个，比如 Github, Sentry；
3. 经过对各个国内公司的了解，发现使用中 Slack 的国内稳定性还好。

## Consequences

* 大家已习惯使用 Wechat，引入一个新的沟通平台有学习成本。
