你好,生产力(番外篇1) - Linear, by the developer, for the developer

简介: 在生产力工具大类里,Project Management & Issue Tracking Tool(国内一般统称项管工具)可以说是其中历史最悠久也是最拥挤的品类。一方面项管工具是任何一家信息化管理的公司里最基本,最核心的工具,承担着安排计划,管理进度,追踪问题,串联其它各平台的任务。另一方面项管工具表面上的门槛比较低,Todo list其实也称得上是一个轻量化的项管工具。这两个因素叠加在

在生产力工具大类里,Project Management & Issue Tracking Tool(国内一般统称项管工具)可以说是其中历史最悠久也是最拥挤的品类。一方面项管工具是任何一家信息化管理的公司里最基本,最核心的工具,承担着安排计划,管理进度,追踪问题,串联其它各平台的任务。另一方面项管工具表面上的门槛比较低,Todo list其实也称得上是一个轻量化的项管工具。这两个因素叠加在一起,自然有人前仆后继地涌进这条赛道,而这其中的绝大多数产品也还是难以摆脱Jira+Trello的影子,形成低水平的重复。Linear(https://linear.app)是最近出现的又一款项管工具,倒是有些与众不同。

 

创始团队

Linear的创始团队背景确实很合适打造项管工具,设计师+全栈+工程管理+成功创业背景,又都是顶配。

 

Karri Saarinen - 之前担任Airbnb的首席设计师,Coinbase的第一位设计师以及之后的设计团队负责人。之前也在YC的其它公司创过业。

 

Tuomas Artman - 研发背景,主要经验在iOS移动端,早先创业的公司被Groupon收购,之后担任过Groupon和Uber的研发以及管理职位。在Uber帮助把移动工程团队从15人扩张到400人。

 

Jori Lallo - Coinbase早期的工程师,负责API和前端框架。

 

数据模型

数据建模很大程度上决定了产品的形态,体现了设计者的取舍,所以大量的篇幅会分析Linear的建模。

顶层模型 - Workspace

半顶层模型 - Account

Workspace的子模型 - Team, Project

Team的子模型 - Issue, Workflow, Label, Template, Cycle

顶层模型之Workspace

Screen Shot 2020-07-27 at 12.11.50 AM.pngWorkspace有两个重要属性,一个是URL name,一个是Workspace name,前者类似于邮箱的名字,全局唯一,作为Workspace在linear的地址,格式是linear.app/<<url name>>。后者类似于nickname,可以任意起名。后文cookie的截图中可以看到,Workspace对标的是Organization概念。

半顶层模型之Account

Screen Shot 2020-07-27 at 12.13.29 AM.png

Account代表一个用户。说它是半顶层模型,因为它的两面性。

作为Workspace子模型的一面

  • 管理Account设置的URL是linear.app/<<workspace url name>>/settings/account/profile。
  • 在某一个Workspace下访问这个account所有issue的URL是linear.app/<<workspace url name>>/profiles/<<username>。
  • 上一点URL里的<<username>>还有头像这些可以被更改,但是修改的作用范围仅限于这个Workspace。

作为顶层模型的一面

  • 看上去和Workspace是多对多的关联关系,一个Workspace可以关联多个Account,一个Account也可以关联多个Workspace。
  • 管理Account设置的URL,如前所述虽然是按照Workspace限定的,但其中的一些设置,比如界面Theme是否采用Light还是Dark mode又是跨Workspace的全局设置。

 

Screen Shot 2020-07-26 at 3.42.29 PM.png

虽然无法看到Linear具体的DB Schema,但是从cookie上还是可以看出不少端倪。如截图,其实之前说的Theme设置是作为cookie存的,为了确认Theme只是存于本地cookie而没有存于服务端,我还专门在隐身(incognito)窗口用同一个用户再次登陆一下,确实发现Theme的值没有同步过来。截图上还可以看到有3个user,它们都有相同的邮箱地址,各自属于不同的Workspace(cookie里是organization字段表示)。

这样看来,本质上Account还是一个Workspace的子模型,只是在设计上通过障眼法使得用上去感觉像个顶层模型。那为什么Linear不直接把Account设计为一个顶层模型呢,毕竟这样的做法是一个更符合直觉的设计。我的猜测是考虑到隔离性,按照Linear目前的设计,只有Workspace一个顶层模型,那么数据层可以按照Workspace进行切片,每一个Workspace其实都是独立的沙箱。这个对于运维,部署,数据迁移等都有巨大的好处。举个例子,不少企业通常考虑到数据隐私安全的原因,都会要求工具进行私有云部署,虽然Linear目前还仅提供SaaS公有云服务,但是将来要把它上面的某一个Workspace迁移到私有云就比较容易,因为一个Workspace就是一个沙箱,整体迁移很容易,不会牵扯到数据的裁剪或添加。当然Account隶属于Workspace,也会带来一定的开销,一个实体用户在每一个Workspace都会有一份用户数据,这个就产生了冗余,冗余会导致不一致,也会造成操作的繁琐,比如将来如果要给用户添加MFA,SSO等功能就需要每个Workspace都配置一遍。

Workspace的子模型

为了阐述方便,先放一张叫space2的Workspace截图

Screen Shot 2020-07-26 at 11.18.36 PM.png

Team

从之前Cookie截图中能看到,Workspace对标的是Organization组织概念,Team作为Workspace的一个子模型也就比较自然,一个Workspace可以包含多个Team,而一个Team只能属于一个Workspace。从Team设置的链接也能确认这点linear.app/<<workspace url name>>/settings/teams/<<team key>>,这里的team key类似于Jira里的project key,作为Team下Issue的前缀,如上图中展示的TEAM1。

Project

从视图上看,Project是挂在Team下面的,看上去是Team的子模型。事实上Project和Team一样是Workspace的子模型。和Team是多对多的关系。对应的URL是linear.app/<<workspace url name>>/project/<<project id>>。

Screen Shot 2020-07-26 at 11.24.21 PM.png

截图上可以看到project22关联了2个Team,这个对应到实际场景也很合理,许多项目(Project)是由多个团队(Team)参与的。

Team的子模型

Issue

Screen Shot 2020-07-26 at 11.57.52 PM.png

在所有的项管工具里, Issue或者有些系统里也叫Task都是最核心的模型,作为工作项的载体。在Linear里, Issue是属于Team的,并且只能属于一个Team。对应的URL是linear.app/<<workspace url name>>/issue/<<team key>> + <<issue sequential id>>/<<issue title>>。team key指定了team,issue sequential id是一个从1开始的自增序列。从链接可读性上考虑,url里也包括了issue title,但是issue的定位并不依赖这个信息。虽然URL整体是放在Workspace下面,但是因为用了team key的前缀,所以还是属于Team的。另外Issue中也可以关联子Issue。

Workflow

Screen Shot 2020-07-27 at 12.01.23 AM.png

Workflow以当前形态看更确切的叫法应该是Workflow state/status,因为只定义了State,没有定义Transition。对应的是Issue上的Status字段。Linear在这里限定了5大类状态Backlog, Unstarted, Started, Completed, Canceled,暂时还不允许新增。而在每一个大类状态里,用户则可以自定义小类状态,有一点特殊的是Started类下,进度环会根据状态的数量自动均分。

LabelScreen Shot 2020-07-27 at 12.06.56 AM.png

Label就是打在Issue上的标签,对应的URL是linear.app/<<workspace url name>>/team/<<team key>>/label/<<label name>>。URL下展示的是这个Team下打了这个label name的所有Issue。

Template

Screen Shot 2020-07-27 at 12.11.14 AM.png

Template用于新建Issue时的预填模版。对应的URL是linear.app/<<workspace url name>>/team/<<team key>>/templates/<<template id>>。

Cycle

相关文章
JM
|
前端开发 图形学 C++
一个 web 开发者眼中的技术美术(TA—Technical Artist)
Techical Artist 的中文翻译是技术美术,相比于直译为技术艺术家,技术美术这个称谓让我感觉更加亲切,当然艺术家这个称谓也很好,很高级 :p ;在游戏行业里我们常常能听到美术这个职位,而技术美术,从字面意思我们就能够大概了解这是一个既需要懂技术又需要懂美术的职业。那么技术美术具体工作是什么呢?我去搜索了一番,发现没有非常权威的定义,不过可以找到比较普遍的说法是:给美术团队提供技术支持,从
JM
576 0
一个 web 开发者眼中的技术美术(TA—Technical Artist)
|
定位技术 数据库
Win之Software Installation:谷歌地球(Google Earth) 的简介、安装、使用方法之详细攻略
Win之Software Installation:谷歌地球(Google Earth) 的简介、安装、使用方法之详细攻略
Win之Software Installation:谷歌地球(Google Earth) 的简介、安装、使用方法之详细攻略
|
敏捷开发 架构师 测试技术
2022年下半年 系统架构师,论文-软件开发模型(Software Development Model)
2022年下半年 系统架构师,论文-软件开发模型(Software Development Model)
233 0
|
Rust Ubuntu 编译器
Standard ML快餐教程(1) - 初识
如何搭建Standard ML开发环境,以及如何在sml中生存下来
2618 0
|
存储 数据挖掘 API
微软行星云计算Planetary Computer——使用 GitHub 代码来操作
微软行星云计算Planetary Computer——使用 GitHub 代码来操作
226 0
微软行星云计算Planetary Computer——使用 GitHub 代码来操作
Jerry制作的软件工程里Design for Change的培训材料
Jerry制作的软件工程里Design for Change的培训材料
86 0
Jerry制作的软件工程里Design for Change的培训材料
Jerry Wang的ABAP Development Tool培训材料 - SAP 引入ADT的初衷
Jerry Wang的ABAP Development Tool培训材料 - SAP 引入ADT的初衷
103 0
Jerry Wang的ABAP Development Tool培训材料 - SAP 引入ADT的初衷
|
Android开发 UED 开发者
Material Design 非官方中文指导手册
今年 6 月 26 日 I/O 2014 开发者大会,Google 发布了他们的全新设计语言「Material Design」,将会成为统一 Android Mobile、Android Table、Desktop 等平台的设计语言规范,对从业人员意义重大。由于原文为英文,对于广大的国内设计师阅读起来比较困难,于是有热心的童鞋整合了国内的翻译。
333 0
Material Design 非官方中文指导手册
|
机器学习/深度学习 人工智能 算法
[python作业AI毕业设计博客]Analytic Methods in Systems and Software Testing-2018 系统和软件测试分析方法
图片.png 下载地址 https://itbooks.pipipan.com/fs/18113597-335471247 使用最先进的方法和工具对系统和软件测试进行综合处理。本书提供了有关最新软件测试方法的宝贵见解,并通过示例解释了该领域中使用的统计和分析方法。
kex
|
机器学习/深度学习 Web App开发 TensorFlow

热门文章

最新文章