├── .github
├── FUNDING.yml
└── workflows
│ └── build.yaml
├── .gitignore
├── README.md
├── content
├── issue-1
│ ├── 1-retool.md
│ ├── 10-why.md
│ ├── 2-cncf.md
│ ├── 3-hashicorp.md
│ ├── 4-kong-vs-apisix.md
│ ├── 5-coreos.md
│ ├── 6-docker.md
│ ├── 7-rancher.md
│ ├── 8-mesos.md
│ ├── 9-mirantis.md
│ ├── intro.md
│ └── zine.toml
└── issue-2
│ ├── 1-deislabs.md
│ ├── 2-yc-w22.md
│ ├── 3-warp.md
│ └── zine.toml
├── pages
├── about.md
├── blog.md
├── faq.md
├── review.md
└── sponsor.md
├── static
├── 2d2d.png
├── avatar
│ ├── folyd.jpg
│ └── tianzhou.jpg
├── footer.css
├── pattern.svg
├── s1
│ ├── 1
│ │ └── retool.png
│ ├── 2
│ │ ├── landscape.png
│ │ └── specs.png
│ ├── 3
│ │ ├── ipo.png
│ │ ├── product.png
│ │ ├── stack.png
│ │ └── thrending.png
│ ├── 4
│ │ ├── api-gateway.png
│ │ ├── insomnia.png
│ │ ├── vs-lite.png
│ │ └── vs.png
│ ├── 5
│ │ ├── acquire.png
│ │ ├── garage.png
│ │ ├── martix.png
│ │ └── product.png
│ ├── 6
│ │ ├── au-revoir.png
│ │ ├── docker-desktop.png
│ │ ├── docker-logo.png
│ │ ├── docker-pricing.png
│ │ ├── docker.jpeg
│ │ ├── later1.jpg
│ │ └── later2.png
│ ├── 7
│ │ ├── cloudstack.png
│ │ ├── cncf-toc.png
│ │ ├── jni.png
│ │ ├── liangsheng.png
│ │ ├── rancer-ui.png
│ │ ├── rancher.png
│ │ ├── suse-rancher.png
│ │ ├── tg-epinio.png
│ │ ├── tg-harvester.png
│ │ ├── tg-rio.png
│ │ ├── timeline.png
│ │ └── twitter-shepherd.png
│ ├── 8
│ │ ├── d2iq.png
│ │ ├── day2.png
│ │ ├── dkp.png
│ │ ├── fall-whale.png
│ │ ├── mesos.png
│ │ └── mesosphere.png
│ ├── 9
│ │ ├── docker-enterprise.png
│ │ ├── kharkiv.png
│ │ ├── lens.png
│ │ ├── mcp.png
│ │ ├── mirantis-light.png
│ │ ├── mirantis.png
│ │ ├── openstack-maillist.png
│ │ └── openstack-rank.png
│ └── 10
│ │ ├── praise.png
│ │ ├── praise2.png
│ │ ├── whiteboard.jpg
│ │ └── why.png
└── s2
│ ├── 1
│ ├── akri.png
│ ├── brigade.png
│ ├── deis-legacy.png
│ ├── deis-zhihu.png
│ ├── deislabs.png
│ ├── fermyon.png
│ ├── gabe-monroy.png
│ ├── helm-book.png
│ ├── helm.png
│ ├── krator.png
│ ├── krustlet.png
│ ├── list.png
│ ├── matt-butcher.png
│ ├── mystikos.png
│ ├── oras.png
│ ├── porter.png
│ └── projects.png
│ ├── 2
│ ├── botcity.png
│ ├── brainboard.png
│ ├── cogram.png
│ ├── convoy.png
│ ├── growthbook.png
│ ├── hydra.png
│ ├── nimbus.png
│ ├── realitydefender.png
│ ├── requestly-comment.png
│ ├── requestly.png
│ ├── shaped.png
│ ├── vessel.png
│ └── yc-w22.png
│ └── 3
│ ├── fig-video.mp4
│ ├── terminals.png
│ ├── warp-block.png
│ ├── warp-collaboration.png
│ ├── warp-cover.jpg
│ ├── warp-terminal.png
│ ├── warp-workflow.png
│ └── warp.png
├── tailwind.config.js
├── templates
├── article-extend.html
├── footer.html
└── head.html
├── zine-data.json
└── zine.toml
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [Folyd]
4 |
--------------------------------------------------------------------------------
/.github/workflows/build.yaml:
--------------------------------------------------------------------------------
1 | name: Build magazine
2 |
3 | on:
4 | # Triggers the workflow on push or pull request events but only for the "main" branch
5 | push:
6 | branches: [ "main" ]
7 | pull_request:
8 | branches: [ "main" ]
9 |
10 | # Allows you to run this workflow manually from the Actions tab
11 | workflow_dispatch:
12 |
13 | env:
14 | ZINE_VERSION: v0.13.0
15 |
16 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
17 | permissions:
18 | contents: read
19 | pages: write
20 | id-token: write
21 |
22 | jobs:
23 | build:
24 | runs-on: ubuntu-latest
25 |
26 | # Steps represent a sequence of tasks that will be executed as part of the job
27 | steps:
28 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
29 | - uses: actions/checkout@v3
30 | - name: Build magazine
31 | run: |
32 | wget https://github.com/zineland/zine/releases/download/$ZINE_VERSION/zine-x86_64-unknown-linux-gnu.tar.gz -O zine.tar.gz
33 | tar xvf zine.tar.gz
34 | ./zine build
35 | - name: Upload artifact
36 | uses: actions/upload-pages-artifact@v1
37 | with:
38 | path: ./build
39 |
40 | deploy:
41 | environment:
42 | name: github-pages
43 | url: ${{ steps.deployment.outputs.page_url }}
44 | runs-on: ubuntu-latest
45 | needs: build
46 | steps:
47 | - name: Deploy to GitHub Pages
48 | id: deployment
49 | uses: actions/deploy-pages@v1
50 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | build
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 2d2d
2 |
3 | https://2d2d.io
4 |
5 | **《TO-D 杂志》** 是一个**专注于探讨全球 To-D 领域相关产品、创业公司、融资等资讯的开源独立杂志**。
6 |
7 | To-D 即 To Developers,主要指面向开发者市场的创业活动。但 To-D 并非一个独立的领域划分,它通常和 To-C, To-B 可能存在重叠。不管最终产生付费行为的是开发者个人,还是企业,只要其主要目标使用人群为 Developers 都算 To-D 产品。大家熟知的 Jetbrains, Postman, GitLab 等都属于 To-D 产品。
8 |
9 | ## 开源独立
10 |
11 | 开源独立的意思**这份杂志所有内容全部开源在 Github,每个人都可以基于 Github 的 PR 流程在上面给《TO-D 杂志》提交自己的文章和评论**。这里没有需要扫码关注的公众号,没有搜索引擎不能检索的页面,这里的内容不属于任何一家中心化的大公司,只属于开放的互联网(但是`内容版权依然属于原作者,未经授权请勿转载`)。
12 |
13 | ## 由来
14 |
15 | 《TO-D 杂志》最早为诞生在字节跳动内部的一份名为《To-D 观察室》的飞书文档,我从 2021 年 12 月 23 号开始编写第一篇文章,每周在内网更新。目标读者主要为字节跳动内部的工程师、产品经理和对开发者领域感兴趣的同学,并且受到大家的众多好评。后来于 2022 年 3 月 22 号开始在这里正式对外发表。
16 |
17 | 更多关于本杂志的由来,初衷,可以阅读第一季的最后一篇文章:[为什么要写《TO-D 杂志》?](https://2d2d.io/s1/why)
18 |
19 |
20 | ## 责任编辑
21 |
22 | 目前责任编辑主要只有一个人,后面如有变动会及时更新:
23 |
24 | - [@Folyd](https://folyd.com)
25 |
26 |
27 | ## 常见问题
28 |
29 | 更多关于本杂志的常见问题,欢迎浏览 [常见问题页面](https://2d2d.io/faq)。
30 |
31 |
--------------------------------------------------------------------------------
/content/issue-1/1-retool.md:
--------------------------------------------------------------------------------
1 |
2 | 
3 |
4 | [Retool](https://retool.com/) 是一家 YC 于 2017 年孵化的硅谷创业公司,专注于企业内部系统的低代码平台。昨天 Retool 官宣 C 轮 2000 万美金融资,估值超过 18亿美金。值得一提的是这篇官宣文非常有意思。
5 |
6 | ```urlpreview
7 | https://retool.com/blog/series-c/
8 | ```
9 |
10 | 大家都知道每个创业公司都希望自己新一轮融资中估值越高越好,融到的钱越多越好。但 Retool CEO 却不这么认为,**他认为创业公司的这种高估值融资行为虽然非常利于吸引媒体的报道,但最终损害的是公司普通员工的切实利益。往往越早以越高估值进行融资,公司员工的期权会稀释的越快,最终受益的往往是投资人。** 因为投资人入场时都有重新按比例分配的权利(pro-rata rights)来保证自己的利益,但普通员工没有。为了满足投资人的利益,只有稀释普通员工的那部分期权。文章中举了 Uber 和 Coinbase 的例子做对比,同样是上市五年前相同价值的期权,两者上市后,Coinbase 的那份带来的回报有 57 倍,而 Uber 只有 2 倍。文中也举了 Snowflake 的例子,Snowflake 各轮融资到最后上市,普通员工的期权被稀释了接近 60%,Retool 希望能把这个数控制在 9%。
11 |
12 | 另外 Retool CEO 还提到,这种瞬间高估值的融资行为给后来加入的员工损害更大。明明只晚了几天加入公司,公司这段时间其实并没有发生什么实质性的改变,不管是客户数、营业额和团队水平在融资前后基本上差不多。但是只要是融资后加入的员工,行权价格比早几天加入的人要高很多了。
13 |
14 | 所以 Retool CEO 的决定是:
15 |
16 | 1. **Raise at the right valuation, not the highest valuation possible.** 只按合适的估值来融资,而不是越高越好。
17 | 2. **Raise the least amount possible to achieve our goals.** 在能满足公司发展需求的前提下融资越少越好。
18 | 3. **Align with investors who put the team first.** 只找那些把公司团队放在第一位的投资人。
19 |
20 | 非常耐人寻味,对员工如此充满关怀,处处为员工考虑的 CEO 还是非常少见的。毕竟人才才是一家公司持续发展的核心动力,Retool 的这一策略不仅能深得员工的心,相信也能吸引更多优秀的人加入他们。
21 |
--------------------------------------------------------------------------------
/content/issue-1/10-why.md:
--------------------------------------------------------------------------------
1 |
2 | 2021 年 11 月底开始,我在字节跳动内部跟一位同事经常沟通探讨全球开发者领域的事情,这位同事发现我对这一领域比较有研究,建议我开一个 To-D 专栏分享一下这方面的内容。之前从未有过专栏经验的我,抱着试一下的态度欣然接受了这个提议。2021 年 12 月 23 号,一份名为 **《To-D 观察室》** 的飞书文档诞生,并以每周一篇的频率更新。两个多月后,这份文档累计达到了 **14000** 多字,获得了超过 **1200** 人数的阅读(不包括匿名访问),接近 **100** 个点赞和部分同学的直接肯定。
3 |
4 | 
5 |
6 | 
7 | > 有机会我会再写一篇`我是怎样调研的`的文章来详细说明
8 |
9 | 看到这些数据和大家的肯定,我内心确实也充满喜悦,所以经过一番思考后,我决定把这些内容对外发布出来,同时考虑长期更新下去。主要有几个原因:
10 |
11 | ## 兴趣使然
12 |
13 | **首先是兴趣使然**。我好几年前(可能大学时代)就开始关注这方面的信息,不管是新的技术,还是新的产品,或者是 HackerNews 上突然火起来的新闻,只要我发现了,我都会及时去了解。比如,我应该 15 年左右就发现了 [Vagrant](https://github.com/hashicorp/vagrant) 这样的一款产品,并且也亲自使用过一段时间,当时深挖这款产品了解到了背后的作者,也就是 HashiCorp 的创始人 [Mitchell Hashimoto](https://github.com/mitchellh),于是我很早就在 Github 上 follow 他了,完全让我没有想到的是,HashiCorp 后来竟然取得了如此成就!
14 |
15 | 不过以前往往是自己主动去发现,并未想过要总结分享,也没想过这些信息对其他人是否会有帮助。《TO-D 观察室》的这次尝试让我意识到,这是一件很有意义的事情。**一方面,把自己所掌握的信息很好的总结沉淀下来,是一个对个人很有裨益的提升手段,另一方面,这些内容也能帮助到同样感兴趣的朋友,两全其美,何乐不为?**
16 |
17 | ## 分享故事
18 |
19 | 另一个主要原因是**关于故事**。
20 |
21 | **人与生俱来就是一种喜欢聆听故事的生物。** 从小时候父母或老师讲的童话故事,到长大后学习阅读过程中领会的历史典故、名人励志故事,到某个普通人平凡真实的感人故事,每一种故事或多或少都能触动不同人的内心,让人记忆尤深,甚至受此影响。就我个人而言,可能和很多 80、90 后一样,从小就听过微软比尔盖茨的故事,所以初中开始我对计算机的兴趣就开始萌芽,到最后义无反顾选择了计算机这个行业。**在我个人看来,故事的力量是不容小觑的。**
22 |
23 | 纵观人类社会,各个行业有着各个行业的故事。就计算机和互联网行业来说,上个世纪八九十年代以来的故事大部分都被大家所熟知,这要感谢很多科普人和作家的努力,比如深受大家喜欢的 **《浪潮之巅》**。而**开发者领域其实是上层互联网行业的基石,没有开发者这样一群通过双手编写代码创造世界的人,就不会有如今的互联网。** 但是开发者领域又是一个很专业的行业,不仅充满着技术术语、而且这些技术更新迭代异常之快,所以这一领域的故事没有太多人讲述,往往也不太被人熟知。**如果没有人去记录和分享这些故事,这些故事就可能会以很快的速度被人遗忘。**
24 |
25 | 以 Mesos 来举例:**Mesos 没落了,与之伴随的是过去它的辉煌,那段与 Kubernetes 较量的战争,随着时间的推移,越来越不被新一代工程师所熟知**。试着去问一下今年刚毕业的学生,有多少人听过它的故事?而它刚好是我毕业工作那几年如日中天的技术,**它的故事和最后的反思其实非常值得我们去了解学习。**
26 |
27 | 《TO-D 杂志》的第一季里面大部分文章都充满故事性,我想这可能也是这些文章深受大家喜欢的原因之一。就像我上面截图里面解答那位同学的问题一样,**我希望这个杂志的文章能做到保持干货的同时不丧失趣味性**。
28 |
29 |
30 | ## 激发创造
31 |
32 | 最后一个原因是**关于创造力**。
33 |
34 | 我非常喜欢看魔术表演,虽然明明知道它是一门视觉 + 骗人的艺术,但是**我却非常痴迷这些魔术师富有创造力的脑洞,就像痴迷国外最新的技术和产品一样**。我常常惊叹为什么他们这么具有创造力,能做出这么让人眼前一亮的产品?而为什么我在国内很少看到?我怎样才能像他们那样做出一些具有创造力的产品?
35 |
36 | 出于这个原因,我一直都很有动力去了解、调研这些技术和产品,我想的是**只有多学习,多了解,才能激发自己的创造力。希望在这个学习了解过程中总结下来的内容,或多或少也能过激发到 《TO-D 杂志》的每一位读者。**
37 |
38 | 以上就是我的初衷。至于对外发布的方式为什么不选择微信公众号、知乎专栏,主要在于我想来一次乌托邦的尝试。
39 |
40 | ## 一场乌托邦实验
41 |
42 | 纵观全球,中国互联网内容是非常封闭的,不管是阅读全文需要下载 App,还是微信公众号文章禁止其他搜索引擎检索,网页链接不能在各大 App 之间正常分享,**这些都是非常畸形的行为,不仅完全违背开创 WWW 互联网那代科学家的初衷,而且也极度缺乏那代科学家的胸怀**。笔者个人不想把这些内容封闭在这些孤岛中,不想被这些中心化的大平台束缚捆绑,所以我选择与之抗争,**来一场乌托邦式的实验**。
43 |
44 | 为了发布《TO-D 杂志》,笔者**专门使用 Rust 开发了一个帮助每个人构建一份属于自己的杂志的开源软件 [Zine](https://github.com/zineland/zine)**。《TO-D 杂志》就是这样的一份完全基于 `Zine` 编写的开源独立杂志。
45 |
46 | ```urlpreview
47 | https://github.com/zineland/zine
48 | ```
49 |
50 | 开源独立的意思**这份杂志所有内容全部开源在 Github,每个人都可以基于 Github 的 PR 流程在上面给《TO-D 杂志》提交自己的文章和评论**。这里没有需要扫码关注的公众号,没有搜索引擎不能检索的页面,这里的内容不属于任何一家中心化的大公司,只属于开放的互联网(但是`内容版权依然属于原作者,未经授权请勿转载`)。
51 |
52 | > **征稿**:
53 | >
54 | > 事实上,开发者细分领域非常之多,包括容器、DevOps、AI、数据库、大数据、安全等等,笔者也只是对其中一两个方面有比较多的研究,所以欢迎各个领域的工程师、专家、公司 CEO、CTO、创投圈的朋友投稿贡献。
55 |
56 | 所以**这是一个乌托邦的实验,在中文互联网世界能否成功我也不敢确定,但是我愿意做一番这样的尝试**。没有中心化平台的订阅推送,没有 AI 算法的投喂,这份杂志其实很难被大家发现,只有靠每一位朋友的随手转发分享,让更多的人了解发现世界上还有一份这样的专栏杂志。如果大家喜欢这份杂志,也欢迎使用页面尾部提到的 RSS 或 Telegram 方式订阅。
57 |
58 | > 目前不支持邮件订阅,希望能得到大家的赞助。
59 |
60 | ## 总结
61 |
62 | **《TO-D 杂志》是一份开源独立的杂志**,虽然目前只有我一个人在写文章,但一个人的能力是非常有限的,欢迎每个感兴趣的朋友投稿贡献。只需要遵循一个最重要的原则就行:`保持干货的同时不丧失趣味性`!如果大家有发现好的新公司,新产品,欢迎推荐给我。
63 |
64 |
65 |
66 | > 笔者家里过去几个月的白板上留下的痕迹。
67 |
68 | **最后,《TO-D 杂志》第一季圆满完结,下一季敬请期待!** 🎉🎉
69 |
--------------------------------------------------------------------------------
/content/issue-1/2-cncf.md:
--------------------------------------------------------------------------------
1 | 有一张让每个人都眼花缭乱的图,它包含上千张卡片,总市值 16.7 万亿美金,总融资超过规模 273 亿美金;它是人类软件领域的智慧结晶,它代表未来软件技术的新一代潮流,它承担着对抗技术熵增的艰难重任。它就是 **CNCF 全景图** (Landscape):[https://landscape.cncf.io/](https://landscape.cncf.io/)
2 |
3 | 
4 |
5 | CNCF (Cloud Native Computing Foundation) 这个词大家都有所耳闻,Cloud Native (云原生) 的概念在国内外也如火如荼。这家成立于 2015 年的非盈利基金会的愿景是什么?这一期我们来简单探讨一下。
6 |
7 | CNCF 的官方章程 (charter) 写的是:**The Foundation’s mission is to make cloud native computing ubiquitous...** 那云原生 (Cloud Native) 具体是指什么?官方给了一个[定义](https://www.cncf.io/about/who-we-are/):
8 |
9 | > Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.
10 |
11 | 为了让日益复杂的现代化软件能够更加流畅的在云上构建、云上部署、云上运行的一系列技术都算云原生技术。而这里所指的云不特指公有云、私有云或混合云,也不特指公有云中哪朵云。因为云原生的另一大理念就是避免厂商锁定:**Vendor-neutral** (厂商中立) 。你部署在 AWS 上的应用应该能无缝或者花很小代价能够迁移至其他使用云原生技术的平台。
12 |
13 | 目前 CNCF 旗下的众多项目中,有 16 个已毕业 (Graduated),26 个孵化中 (Incubating),69 个处在沙盒阶段 (Sandbox),在对大部分项目有个基本了解之后,我觉得可以把 CNCF 的愿景概括为两个词:**技术变革**与**对抗熵增**。
14 |
15 | ## 技术变革
16 |
17 | 过去 20 多年,Apache 基金会的项目在 Java、大数据等领域影响深远,推动着当时的技术变革。从 CNCF 的第一个项目 Kubernetes 开始,CNCF 似乎就在引领着新的技术领域的革新之路。
18 |
19 | - [Kubernetes](https://kubernetes.io/) - 在与 Docker Swarm,Apache Mesos 的竞争中脱颖而出,成为容器编排调度的事实标准
20 | - [Envoy](https://www.envoyproxy.io/) - Service Mesh 的标配代理;
21 | - [Jeager](http://jaegertracing.io/) - 分布式追踪的后端存储标准;
22 | - [Prometheus](https://prometheus.io/) - 时序数据监控报警必备组件;
23 |
24 | CNCF 的很多项目几乎都是各大云厂商纷纷采用的技术,同时也有源源不断的厂商给 CNCF 捐赠新的项目。CNCF 这一套成熟的孵化机制让他能够推动技术革新,在新技术领域 (WebAssembly,eBPF) 也不会落后,或许关于 CNCF 的下一轮的技术变革也在悄悄的发生着。
25 |
26 | ## 对抗熵增
27 |
28 | 事物无序程度的度量被称为熵,而熵增(事物无序程度的增加)是宇宙客观存在的规律。软件技术在不断进化变革的同时,不可避免的也会发生熵增。**这种熵增会体现在很多方面,比如技术复杂度变高、技术规范程度变低、软件间可交互性变难。** CNCF 不仅有引领新的技术变革的产品(Kubernetes, Prometeus),同样也在孵化一批对抗熵增的项目,那就是这一系列的 **Specification(技术规范)**。
29 |
30 | 
31 |
32 | - [OpenTelemetry](https://opentelemetry.io/) 制定了软件可观测性 (Observability) 的规范;
33 | - [CloudEvent](https://cloudevents.io/) 制定了跨云、跨系统、跨平台之间的事件定义与通信的规范;
34 | - [Service Mesh Interface (SMI)](https://smi-spec.io/) 制定了 Kubernetes 上的 Service Mesh 的规范;
35 | - [The Update Framework (TUF)](https://theupdateframework.com/) 制定了软件安全高效更新的规范;
36 | - [Open Policy Agent (OPA)](https://www.openpolicyagent.org/) 制定了通用的策略引擎规范;
37 | - [OpenGitOps](https://opengitops.dev/) 制定了开放式的 GitOps 规范;
38 | - [Container Network Interface (CNI)](https://www.cni.dev/) 制定了通用的容器网络规范;
39 |
40 | 当然除了上面的一些规范之外,CNCF 下面还有其他的规范类项目(比如 [SPIFFE](https://spiffe.io/),[SMP](https://smp-spec.io/) 等等),这里不再一一例举。
41 |
42 | 想象一下如果没有这些规范,各大云厂商各行其道,只要你使用他们的云产品,你就会被牢牢的锁定在他的平台,厂商中立这个概念只会是一句空话。熵增是一种无法避免的客观事实,我们只能力所能及减缓这种熵增,而规范的确立是人类对抗熵增的必经之路,CNCF 这一系列项目在不遗余力地往这个方向努力践行着。
43 |
44 | 本期主要探讨 CNCF 的全景图和他的愿景,它是否代表未来 To-D 创业的风向标?这里面还能挖掘多少 To-D 的创业机会? 观察室后期分享的 To-D 创业公司或多或少都会与这张全景图有关系。
45 |
46 | 敬请期待!👏👏
--------------------------------------------------------------------------------
/content/issue-1/3-hashicorp.md:
--------------------------------------------------------------------------------
1 | 2013、2014 年开始,国内外开始流行一个 Ruby 编写的开源产品 [Vagrant](https://www.vagrantup.com/),它是一个主要用来解决本地(特别是多人协作)开发环境配置繁琐、不一致等痛点的项目,深受很多工程师喜欢。难以预测的是, 2016 年 Docker 的大范围普及,让这个产品逐渐没落。更难预测的是,这个 2010 年开发 Vagrant 的作者,多年后成为了一家市值 150 亿美金的 To B SaaS 公司的创始人。这家公司就是我们这一期的主角 —— HashiCorp。上期我们介绍了 CNCF 全景图,而 HashiCorp 有五款产品就在全景图中。
2 |
3 | 
4 |
5 | > 上图为 Vagrant 关键字的 Google Trends 图,纵轴代表相对顶峰搜索频次的百分比,而非绝对数字;
6 | >
7 | > Trends 链接:[https://trends.google.com/trends/explore?date=2010-12-04%202022-01-04&q=vagrant](https://trends.google.com/trends/explore?date=2010-12-04%202022-01-04&q=vagrant)
8 |
9 | ## 多云时代
10 |
11 | 先来看一条充满戏剧性的时间线:
12 |
13 | - 2021 年 12 月 7 日,AWS 发生了它当月第一次重大线上宕机事故;
14 | - 第三天(2021 年 12 月 9 日),一家多云软件提供商和倡导者 HashiCorp 在 Nasdaq [上市](https://www.sec.gov/Archives/edgar/data/0001720671/000119312521352796/d205906d424b4.htm),市值 150 亿美金;
15 |
16 | ```urlpreview
17 | https://www.hashicorp.com/blog/a-new-chapter-for-hashicorp
18 | ```
19 |
20 | - 2021 年 12 月 15 日、2021 年 12 月 23 日,AWS 再次发生当月第二、三次线上宕机事故;
21 |
22 | 当月国外[众多媒体](https://www.cnbc.com/2021/12/12/aws-outage-and-hashicorp-ipo-point-to-a-multicloud-future.html)趁此机会都在利用这条时间线来大肆宣传多云 (Multi-Cloud) 时代,似乎意味着多云是未来不可避免的趋势?确实如此,2021 年 HashiCorp 发布了一份详细的关于云现状的问卷调查报告。
23 |
24 | ```urlpreview
25 | https://www.hashicorp.com/state-of-the-cloud
26 | ```
27 |
28 | 这篇报告里面有几个重点值得关注:
29 |
30 | - **76% 的受访者所在公司已经在使用多云,未来两年这个数字将会扩大到 86%;**
31 | - **Digital transformation (数字化转型), avoid single cloud vendor lock-in (避免云厂商锁定), cost reduction (节省成本) 是企业使用多云的 Top 3 驱动力;**
32 | - **Skills shortage (技能缺乏) 和 security (安全) 分别是企业拥抱多云的最大挑战和阻力;**
33 |
34 | HashiCorp 这家公司以及他的产品,毫无疑问是在这场多云趋势中最大的受益者之一。
35 |
36 | ## 产品
37 |
38 | HashiCorp 目前总共有八款主打产品,囊括了从开发 (Packer, Vagrant)、部署 (Terraform)、安全 (Boundary, Vault)、网络 (Consul)、应用 (Nomad, Waypoint)等各个环节。
39 |
40 | - [Terraform](https://www.terraform.io/) - AWS CloudFormation 的多云版开源实现,遵循 Infrastrusture as Code 的理念,编写 Terraform 特定语法的 DSL 配置文件即可轻松部署上百家云厂商的服务;
41 | - [Vault](https://www.vaultproject.io/) - 密钥管理、敏感数据管理、Encrypt as a Service (加密即服务)的企业级安全类产品;
42 |
43 | **Terraform 和 Vault 是 HashiCorp 最杀手锏的产品,市面上几乎没有同类产品能很好地替代它们。**
44 |
45 | - [Consul](https://www.consul.io/) - 一个服务发现和 Service Mesh 产品,市面上其实有不少替代者。不过这个产品可能是字节跳动工程师最熟悉的 HashiCorp 产品,字节跳动也可能是 HashiCorp Consul 最大的使用者(虽然我们是二次开发)。
46 | - [Packer](https://www.packer.io/) - 遵循 Infrastructure as code 理念的多云自动化镜像构建工具;
47 | - [Nomad](https://www.nomadproject.io/) - 简单灵活的 (容器化和传统非容器化) 应用部署、调度、管理的解决方案,它可以无缝的和 Terraform, Vault, Consul 结合,是一个轻量级的 Kubernetes 替代产品;
48 |
49 | ```urlpreview
50 | https://developer.hashicorp.com/nomad/docs/nomad-vs-kubernetes
51 | ```
52 |
53 | - [Boundary](https://www.boundaryproject.io/) - 2020 年 10 月份推出的多云远程访问解决方案,很有创新性,目前也没有很好的竞争产品;
54 | - [Waypoint](https://www.waypointproject.io/) - HashiCorp 最新的产品(同2020 年 10 月份)。遵循 Intrasturecture as code 的应用构建、部署、上线一站式工具。这个产品感觉潜力也很大。
55 |
56 | 
57 |
58 | HashiCorp 早些年发布了它的 HashiCorp 之道 ([The Tao of HashiCorp](https://www.hashicorp.com/tao-of-hashicorp)),这些产品无一不践行着这一哲学。HashiCorp 同样是 Go 语言的深度使用者,几乎所有产品都是 Go 语言编写,他们甚至把 Go 语言推崇的 [CSP 并发](https://en.wikipedia.org/wiki/Communicating_sequential_processes)理念也写进了他们的道中。
59 |
60 | ## 商业模式
61 |
62 | HashiCorp 的商业模式也很有代表性,算是开源软件商业化的经典范例。
63 |
64 | 
65 |
66 | - **产品全部开源。** 开源是非常好的获客方式,同时也能得到社区检验和快速获取反馈、快速迭代的好途径。
67 | - **Enterprise 版本收费。** 原则是 technical challenges 都在免费的开源层面解决,针对企业或大团队需要的功能才收费。
68 |
69 | > 比如,一般大家会把安全放在 enterprise 版本里面,但是因为 Vault 是一个安全产品,所以“you should not have to pay us to be secure as Vault”。开源版本里面也可以满足非常高的安全要求。但是,是否满足 GDPR,以及各种数据管理法规等等,都不是技术问题,所以放在付费版本里。
70 | >
71 | > 对于 Team,原则就是:个人或者小的 team 应该可以永远免费使用。但是,涉及跨团队协作的功能就要收费,因为这也是典型的 organizational challenges.
72 |
73 | - **构建社区。** HashiCorp 从创立之初就非常注重开源社区的运营,也收获了非常多的社区粉丝。利用开源形成事实标准,是企业最牢固的隐形护城河。
74 |
75 | > 商业模式这部分内容有参考 **M小姐研习录** 的这篇公众号文章,写的非常详细,强烈推荐阅读:
76 |
77 | ```urlpreview, image:false
78 | https://mp.weixin.qq.com/s/Y2A7-Ui2nzUgodkEbgR6lQ
79 | ```
80 |
81 | HashiCorp 是 2012 年创立,CNCF 的云原生在 2015 年才提出来,目前 HashiCorp 有五款产品在 CNCF 的全景图中,分别是 Terraform, Vault, Nomad, Consul, Packer,而这五款产品都是 2015 年之前发布的。从创立到上市的九年时间,HashiCorp 顺应了时代的潮流,而时代也成就了 HashiCorp!
82 |
83 | 
--------------------------------------------------------------------------------
/content/issue-1/4-kong-vs-apisix.md:
--------------------------------------------------------------------------------
1 |
2 | API 网关是企业应用的关键基础组件和流量入口,**目前绝大部分 API 网关市场份额都被几大公有云厂商占据**(AWS API Gateway, Google Apigee, 阿里云 API 网关等)。但是公有云厂商的 API 网关不符合 CNCF 的云原生理念,如果你用了阿里云的 API 网关,你就会被被它锁定了,因为网关是流量的入口,你没有办法分发到其它云厂商上。CNCF 全景图的 API Gateway 分类下有数十款产品,但并不包含公有云厂商的那些。
3 |
4 | 
5 |
6 | 上图中有一半是大厂的产品,比如 3Scale 是 RedHat 的,Akana 是 Perforce 的闭源商业化产品,MuleSoft 是老牌软件厂商,2018 年被 Salesforce 收购。值得注意的是,来自中国的有四款产品,分别是(按字母序):
7 |
8 | - [Apioak](http://apioak.com/) - 国内的开源项目,背后似乎并没有商业化公司。
9 | - [Apache APISIX](https://apisix.apache.org/) - 国内初创公司支流科技捐赠给 Apache 的产品。
10 | - [Easegress](https://megaease.com/zh/easegress/) - 国内知名技术 KOL 左耳朵耗子陈皓的创业公司主打产品。
11 | - [Sentinel](https://github.com/alibaba/Sentinel) - 阿里云开源的云原生 API Gateway 组件。
12 |
13 | 近几年来,国内在开源社区的影响力越来越显著,其中 Apache APISIX 其背后的公司支流科技便是其中之一。上图中的 **Kong 则是海外另一家独角兽公司,支流科技和 Kong 两者有很多相似之处,他们在云原生网关赛道彼此博弈,算得上是一场国内与海外的较量。**
14 |
15 | 首先简单介绍一下这两家公司:
16 | ## Kong
17 |
18 | [Kong](https://konghq.com/) 的前身是 2010 年成立于意大利的 Mashape,2015 年发布了 Kong 网关这款产品,后来 2017 年转型成现在的 Kong Inc,地点美国加州。算是一家以开源 API 网关产品起家,后续扩展到 Service Mesh,API 工具等产品的 To B SaaS 软件公司。最新一轮融资是 2021 年 2 月份,1 亿美金 D 轮,估值 14 亿美金,投资方包括高盛、A16Z 等知名机构。其主要产品有:
19 |
20 | - [Kong Gateway](https://konghq.com/kong/) - Kong 的 API 网关产品,既是发家之作,也是主打产品;
21 | - [Kuma](https://kuma.io/) - Kong 捐赠给 CNCF 的 Service Mesh 项目;
22 | - [Kong Mesh](https://konghq.com/kong-mesh/) - Kong 基于 Kuma 的商业版 Service Mesh 产品;
23 | - [Kong Konnect](https://konghq.com/kong-konnect/) - 连接 Kong 旗下 Gateway,Mesh 和 Insomnia 的聚合性产品;
24 | - [Insomnia](https://insomnia.rest/) - Kong 于 2019 年从一位独立开发者那里[收购](https://konghq.com/blog/kong-acquires-insomnia/)的开源 API 调式、测试产品,类似于 Postman。
25 |
26 | > 笔者于 2017 年在 IndieHackers 上和 Insomnia 的作者有过关于他的产品名字的交流。作者回复 Insomnia 的产品名是一个双关语。Insomnia 是失眠的意思,而失眠需要休息 (rest),而 Insomnia 就是一款 REST API 调试工具,域名也是 [https://insomnia.rest](https://insomnia.rest).
27 | >
28 | > 
29 |
30 | ## 支流科技
31 |
32 | [支流科技](https://www.apiseven.com/)是一家于 2019 年 4 月在深圳成立的开源商业化公司,他们的开源产品名叫 APISIX。支流科技获得真格基金、顺为资本、经纬中国等知名机构的投资,最新一轮为 2021 年 6 月经纬中国的数百万美元 A+ 轮融资。目前他们的主要产品有:
33 |
34 | - [Apache APISIX](https://apisix.apache.org/) - 支流科技捐赠给 Apache 的开源 API 网关项目。APISIX 于 2019 年 6 月份开源,7 月份加入到 CNCF 全景图,10 月份进入 Apache 孵化器。2020 年 Apache APISIX 毕业,成为中国最快毕业的 Apache 顶级项目。
35 | - [apisix-ingress-controller](https://github.com/apache/apisix-ingress-controller) - 基于 Apache APISIX 的 Kubernetes Ingress 控制面组件,也捐赠给了 Apache。
36 | - [apisix-mesh-agent](https://github.com/api7/apisix-mesh-agent) - 基于 Apache APISIX 的 Service Mesh 产品,目前是支流科技自己的产品,并未捐给 Apache。
37 |
38 | > 很有意思的是支流科技的产品叫 APISIX,而他们公司英文名叫 Apiseven,域名是 [apiseven.com](http://apiseven.com)。
39 |
40 | ## 对比
41 |
42 | 
43 |
44 | **Kong 和支流科技有很多相似的地方,在这场市场较量中也体现着中美两种开源商业化公司的差异。**
45 |
46 | **相似点:**
47 |
48 | - Kong Gateway 和 Apache APISIX 同样是基于 Nginx/OpenResty + Lua 的方案。支流科技创始人说是看到 Kong 的方案性能不够好,于是自己重新基于 OpenResty 自研的 APISIX;
49 | - 两家公司都从 API Gateway 扩展到 Service Mesh 等产品;
50 | - 两家公司都给知名开源孵化器捐赠了自己的项目;
51 | - 两家公司都采用类似的开源版免费,企业版付费的商业化策略;
52 |
53 | **差异点:**
54 |
55 | - Kong 从成立之初就面向全球市场,而支流科技目前绝大多数客户都是中国企业,相对于 Kong 来说全球市场经验是短板。
56 | - Kong 是典型的欧美 To B 公司,品牌打造、市场策略、产品并购与融资等方面都比较成熟。支流科技成立虽然晚两年,但这方面综合能力差距远远不止两年。
57 |
58 | 很高兴看到中国诞生了支流科技这样的公司,虽然比 Kong 发力要晚,但相对于 Kong 的产品来说,支流科技 APISIX 的性能、社区活跃度、贡献者人数并不亚于 Kong。Apache APISIX 代表着中国开源项目的质量,但企业级 SaaS 方面的经验我们确实还有很多需要向欧美学习。我们也期待支流科技未来越来越好,同时也期待更多的中国软件产品走向世界。
--------------------------------------------------------------------------------
/content/issue-1/5-coreos.md:
--------------------------------------------------------------------------------
1 |
2 | 除了云原生领域的开发者和从业者之外,其他人几乎很少听过 CoreOS 这家公司,未来这个名字估计会越来越少被人听到。2020 年这家公司的官网 ([https://coreos.com](https://coreos.com)) 全面下线,消失在互联网中,甚至在 Google 上也不留痕迹。现在我们只能在[互联网档案馆](https://web.archive.org/web/20170920080743/https://coreos.com/)上一瞥他曾经的辉煌和荣耀。CoreOS 是一家什么样的公司?他曾经塑造了什么样的传奇?
3 |
4 | ## 创立初心
5 |
6 | 
7 |
8 | > CoreOS 成立时的车库。图来源于 Wired 在他们成立没多久时的一篇专访文章:[Linux Hackers Rebuild Internet From Silicon Valley Garage](https://www.wired.com/2013/08/coreos-the-new-linux/)
9 |
10 | 时间回到 2013 年,两位俄勒冈州立大学多年前的校友 Alex Polvi 和 Brandon Philips 在硅谷的一间车库里面成立了 CoreOS,这既是他们的产品名也是公司名。CoreOS (后改名为 Container Linux) 的定位是一款**为容器而生**,并**支持平滑升级**的轻量级 Linux 发行版。
11 |
12 | - **为容器而生**:2013 年两位创始人就看到了未来是容器的时代,他们相信需要一款只运行容器的操作系统。
13 | - **支持平滑升级**:Google 的 Chromium OS 的一大革新技术是支持定期自动升级,这样能够把安全漏洞的修复及时推送给用户。而服务器上的 Linux 发行版,少则半年,多则数年才能得到更新。CoreOS 想把 Chromium OS 的这一特性带到服务端,所以他们 fork 了 Chromium OS,删掉了无关的代码开始开发 CoreOS。
14 |
15 | > CoreOS 的设计初衷之一就是“解决互联网上普遍存在的服务器系统及软件由于没有及时升级和应用补丁,造成已知漏洞被恶意利用导致的安全性问题”。
16 | >
17 | > 值得一提的是 Brandon Philips 在创立 CoreOS 之前已经在 SUSE Linux 作为一名内核工程师工作了 4 年多了。而当时另外一名资深的 Linux 内核维护者 [Greg Kroah-Hartman](http://en.wikipedia.org/wiki/Greg_Kroah-Hartman) 则是他们的技术顾问。2021 年 4 月,明尼苏达大学的教授故意向 Linux 提交漏洞代码来做研究,就是被 Greg Kroah-Hartman 给封禁的。
18 |
19 | ## 一路开挂
20 |
21 | 自创立 CoreOS 之后,这家公司的产出和取得的成就只能用**一路开挂**这个词来形容:
22 |
23 | - [Etcd](https://etcd.io) - **【CNCF 毕业项目】** 当初为 CoreOS 设计的分布式版 /etc 配置模块,etcd 名字就是 /etc (Linux 的配置目录) + distribution 首字母组成。**现在已成为了享誉世界的开源分布式 KV 数据库,Kubernetes默认的 KV 存储组件。**
24 |
25 | > Etcd 最初的两位核心作者都是中国人,当时是 CoreOS 的员工。
26 |
27 | - [Fleet](https://github.com/coreos/fleet) - 当年容器编排领域除了 Kubernetes, Docker Swarm, Apache Mesos 之外的第四大竞争产品,后续被 Kubernetes 替代。
28 | - [Kubernetes](https://kubernetes.io/) - **【CNCF 毕业项目】** 2014 开始 CoreOS 就深度参与 Kubernets 的开发迭代,成为了除 Google 之外的第二大贡献者。
29 | - [Flannel](https://github.com/flannel-io/flannel) - CoreOS 当初为 Kubernets 设计的网络基础组件。
30 | - [Quay.io](https://quay.io/) - 2015 年收购的容器镜像托管服务,当时与 Docker Hub,Google [gcr.io](https://gcr.io) 并列的镜像托管中心。
31 | - [Clair](https://github.com/quay/clair) - 为 quay.io 打造的容器镜像安全漏洞扫描与分析的项目,现在已经成为镜像扫描的最主流开源解决方案。
32 | - [Operator Framework](https://operatorframework.io/) - **【CNCF 孵化中项目】** CoreOS 2016 年提出了 Kubernets Operator 的模式,2018 年推出 Operator Framework 项目帮助开发者快速编写 Operator,后来捐赠给 CNCF,目前处于孵化阶段。
33 | - [Rkt](https://github.com/rkt/rkt) - **【CNCF 归档项目】** 当时为了和 Docker 竞争而推出的容器运行时,后来和 Docker 的 containerd 一起捐赠给 CNCF,现在 rkt 已经退出历史舞台。
34 | - [CNI](https://cni.dev) - **【CNCF 毕业项目】** 之前在 CNCF 那篇文章提到过的通用的容器网络规范,就是由 CoreOS 捐赠的。
35 | - [Dex](https://dexidp.io/) - **【CNCF 沙盒项目】** 一个 OpenID Connect 协议的 Go 实现库,也捐赠给了 CNCF。
36 |
37 | 
38 |
39 | 另外,CoreOS 是 CNCF 2015 年创立时的最初始成员之一,当时他们公司成立才两年。
40 |
41 | 上述这些产品在现在依然影响深远,可以毫不夸张的说:**云原生领域的半壁江山都是构建在这些产品的基础上的,这种一路开挂的操作在世界上恐怕没有几家创业公司可以与之匹敌。**
42 |
43 | ## 商业化
44 |
45 | CoreOS 的产品非常具有前瞻性,在早期都没多少人知道容器、Kubernets 是啥的时候,他们已经开始做商业化了。当时他们最主要的商业化产品有三款:
46 |
47 | - Container Linux - 商业化版本的 Container Linux 是专门为容器打造的操作系统,客户可以在各大公有云厂商 Marketplace 上购买,也有其他云厂商跟他们合作,比如 DigitalOcean。并且提供付费客户支持和培训。
48 | - Quay.io - 上面提到过,一个容器镜像托管、安全扫描的产品。
49 | - Tectonic - 企业级的 Kubernetes 容器编排产品。
50 |
51 | **这三款产品形成了一个完整的容器操作系统、镜像托管、容器编排的链路,商业思路也非常清晰。** CoreOS 在其[四周年的博客](https://web.archive.org/web/20190113053653/https://coreos.com/blog/coreos-fourth-birthday)中提到当时他们有 2000+ 家全球的主要客户 (Key customers)。
52 |
53 | 
54 |
55 | ## 被收购
56 |
57 | 2014 年 RedHat 看到了 CoreOS 的崛起,推出了对标 CoreOS 的项目 - [Atomic](https://projectatomic.io/)。同时,RedHat 的另一款商业产品 OpenShift 跟 CoreOS 的 Tectonic 也存在非常大的竞争关系。经过几年的相爱相杀,RedHat 和 CoreOS 达成共识。**2018 年 1 月 30 号,RedHat 以 2.5 亿美金的价格全资收购 CoreOS(*当时 CoreOS 的员工才 130 人*)。** 收购后,CoreOS 的 Container Linux 和 Atomic 合并进 Red Hat Enterprise Linux,CoreOS 的 Tectonic 合入 OpenShift,Quay.io 则作为 RedHat 的子产品继续存在。
58 |
59 | ```urlpreview
60 | https://www.redhat.com/en/blog/faq-red-hat-acquire-coreos
61 | ```
62 |
63 | 
64 |
65 | 被收购前,CoreOS 只经历了三轮融资(种子轮、A 轮和 B 轮),总共融资 4800 万美金,投资机构包括 YC,GV (Google Ventures),A16Z,Accel 等。
66 |
67 | 被收购后,经过差不多两年的整合,两位创始人也相继离开了 RedHat,然后出现了开头提到的那一幕:CoreOS 网站全部下线,所有 CoreOS 相关产品镜像也全部下线。**短短五年时间里,CoreOS 可谓是创造了传奇,他们虽然没有走向独立 IPO 这条路,但是被巨头收购也算是不错的归宿。**
68 |
69 | CoreOS 的创始人和这家公司都非常低调,在网上很难找到跟他们有关的资料。2021 年 GV 对 CoreOS 两位创始人的采访视频算是为数不多的宝贵资料。这篇采访的主题是:谈论他们是如何抓住巨大机会的。
70 |
71 | ```urlpreview
72 | https://www.gv.com/news/core-os-founders/
73 | ```
74 |
75 | > 后续:
76 | >
77 | > CoreOS 被 RedHat 收购后,开源社区推出了 [Flatcar](https://www.flatcar.org/) Container Linux 作为开源版 Container Linux 的接任者,RedHat 也推出了开源版的 [Fedora CoreOS](https://getfedora.org/en/coreos) (Google 搜索 CoreOS 的第一条结果就是这个)。
78 |
--------------------------------------------------------------------------------
/content/issue-1/6-docker.md:
--------------------------------------------------------------------------------
1 |
2 | >
3 | >
4 | > 亲爱的开发者,您好,
5 | >
6 | > 感谢您过去一年使用 Docker 公司的产品!2022 年新春将至,Docker 公司祝您新年愉快,虎年大吉!
7 | >
8 | > Docker 团队敬上
9 |
10 | 啊不对,发错了,赶紧撤回!应该发这封的:
11 |
12 | >
13 | >
14 | > Hello,
15 | >
16 | > As a reminder you’re receiving this email because on August 31, 2021 we updated the [terms](https://www.docker.com/legal/docker-subscription-service-agreement) applicable to the Docker products or services you use.
17 | >
18 | > **On January 31, 2022, the grace period ends for free commercial use of Docker Desktop in larger enterprises.** Companies with **more than 250 employees OR more than $10 million USD in annual revenue now require a paid subscription to use Docker Desktop.** [Read the blog](https://www.docker.com/blog/the-grace-period-for-the-docker-subscription-service-agreement-ends-soon-heres-what-you-need-to-know) or visit our [FAQ](https://www.docker.com/pricing/faq) to learn more about these updates.
19 | >
20 | > **What you need to know:**
21 | >
22 | > - [Docker Desktop](https://www.docker.com/products/docker-desktop) remains free for personal use, education, non-commercial open source projects, and small businesses with fewer than 250 employees AND less than $10 million USD in annual revenue.
23 | >
24 | > - By continuing to use Docker, you are agreeing to the new [Docker Subscription Service Agreement](https://www.docker.com/legal/docker-subscription-service-agreement).
25 | >
26 | > - For organizations requiring Single Sign-On (SSO), it is now generally available for [Docker Business](https://www.docker.com/products/business) subscribers.
27 | >
28 | > To purchase a Docker subscription, visit our [pricing page](https://www.docker.com/pricing) to compare subscription tiers, starting at just $5 per month, per user on an annual basis. For organizations with more than 50 users requiring an invoice, [contact sales](https://www.docker.com/pricing/contact-sales).
29 | >
30 | > Thank you,
31 | >
32 | > The Docker Team
33 |
34 | 这是一封 Docker 公司于 2022 年 1 月 26 日凌晨发出的邮件,相信不少使用 Docker 的同学都有收到。这封邮件不是祝我们新年愉快,虎年大吉的,反而是来向我们宣布一件事:**2022 年 1 月 31 号之后,员工数大于 250 人,或每年营业额大于 1000 万美金的公司不能再免费使用 Docker 公司的 Docker Desktop 了。要想使用,对不起必须按月打钱,价格最低 $5/人/月。**
35 |
36 | 员工数大于 250 人,营业额大于 1000 万美金,字节跳动每一条都满足。难道说过了 1 月 31 号,我在字节还真不能免费使用 Docker Desktop 了?去 IT Service 应用里搜索暂时还没发现 Docker 包含在里面,难道以后使用 Docker Desktop 还需要去 IT Service 里面申请购买?
37 |
38 | > 不知道哎,反正也是年后的事情。**年后的事情等年后再说!**
39 | >
40 | > 3 月更新: 在字节内部某位同学的推动下,字节已正在和 Docker 公司在对接了。
41 |
42 | 
43 |
44 | > 笔者 Docker Desktop 的截图
45 |
46 | **Docker 这家公司虽然把容器技术在全世界发扬光大了,但他们自己过得却并不好,过去多年的商业变现尝试几乎都失败了。**
47 |
48 | - 2017 年 Docker Swarm 在容器编排竞争中彻底输给 Kuberneters;
49 | - 2018 年 3 月 28 号,联合创始人 Solomon Hykes 宣布离开 Docker;
50 | - 2018 年 5 月 21 号,Docker Cloud 关停;
51 | - 2019 年 11 月 13 号,一家当时仅 450 人的公司 Mirantis [收购](https://www.mirantis.com/company/press-center/company-news/mirantis-acquires-docker-enterprise/)了 Docker 的 Enterprise 业务,近 300 名 Docker 员工加入 Mirantis。
52 | - Docker 公司从 2013 年成立至今更换了 4 任 CEO。
53 |
54 | 
55 |
56 | > 创始人 Solomon Hykes 离开 Docker 公司时的配图。详情见官宣博客:[https://www.docker.com/blog/au-revoir/](https://www.docker.com/blog/au-revoir/)
57 |
58 | **现在 Docker 公司还有什么拿得出手的产品吗?似乎没有了,只剩下 Docker Hub 和 Docker Desktop 了。** 实际上 Docker Hub 的私有镜像服务也是打包在 Docker Desktop 里面售卖的。Docker 公司的 [pricing 页面](https://www.docker.com/pricing)现在也非常简单,只有一款产品:Docker Desktop!
59 |
60 | 
61 |
62 | **就算这样,社区依然让 Docker 公司不好过**。因为 Rancher 看到 Docker 公司连 Desktop 都不允许免费使用后就推出了 Rancher 版的 Desktop。**2022 年 1 月 26 日,就在 Docker 公司发出上面那封邮件的同一天,Rancher 宣布 Rancher Desktop 1.0 发布!**
63 |
64 | > Rancher Desktop 的官网:[https://rancherdesktop.io/](https://rancherdesktop.io/)
65 |
66 | ```urlpreview
67 | https://www.suse.com/c/rancher_blog/rancher-desktop-1-0-0-has-arrived/
68 | ```
69 |
70 | 虽然 Rancher Desktop 还没有 Docker Desktop 那么成熟,但他确实是一个值得期待的 Docker Desktop 免费替代品!
71 |
72 | 说到 Rancher,这家公司也非常值得分享,这将是我们下一期的主题。**刚好要放假了,放假就应该有放假的样子,Rancher 的事也年后再说!**
73 |
74 | 
75 |
76 | 
--------------------------------------------------------------------------------
/content/issue-1/7-rancher.md:
--------------------------------------------------------------------------------
1 |
2 | 1999 年 Sun 公司的一名工程师出版了一本书,名为[《The Java Native Interface (JNI)》](https://book.douban.com/subject/3162962/)。这位工程师的名字叫 Sheng Liang(梁胜),他正是 Java 语言 JNI 的作者,在 Sun 公司他还领导过 Java JVM 的开发工作。15 年后的 2014 年,这位曾经的工程师已经成为了一名拥有多次成功创业经验的企业家,在这一年他再度出发,创建了他的第三家公司,也就是本期主题公司 Rancher。
3 |
4 | 
5 |
6 | ## 技术梦想家
7 |
8 | 梁胜这个名字可能并不被大家所熟知,但是他过去的人生履历和所取得的成就无一不值得我们敬佩和赞叹。
9 |
10 | - 1988 年梁胜毕业于中科大少年班,1990 年进入耶鲁大学攻读计算机科学,并于 1996 年取得博士学位,师从 Haskell 之父 Paul Hudak 教授。
11 |
12 | > 2015 年 4 月 29 号,Paul Hudak 因白血病去世,梁胜写了一篇[官方博客](https://web.archive.org/web/20150911121712/http://rancher.com/remembering-paul-hudak/)纪念他的这位恩师。
13 |
14 | - 博士毕业后加入当时的 Sun 公司,设计和开发了 JNI 和 JVM。
15 | - 2000年,梁胜离开 Sun 公司,开启了自己的第一次创业之旅,创办了应用防火墙软件公司 Teros Network 并担任 CTO。2005 年公司被 [Citrix](http://citrix.com) 收购。
16 | - 2008年,梁胜开始了自己的第二次创业,创办了 Cloud.com 并担任 CEO,推出著名的云计算管理软件 CloudStack,也因此被誉为 CloudStack 之父。此时距亚马逊正式推出 AWS(2006 年)刚刚过去两年。
17 |
18 | > 在创立 Cloud.com 之前,梁胜还曾创立了 Phone.com,通过向电信运营商和手机厂商提供应用来盈利。不过这段经历梁胜很少提起。
19 |
20 | - 2011 年 Cloud.com 又被 Citrix 以 2 亿美金的价格收购,梁胜博士成为 Citrix 公司首位华人 CTO。
21 |
22 | > [CloudStack](https://cloudstack.apache.org/) 是云计算领域举足轻重的软件,它的竞品 [OpenStack](http://openstack.org) 于 2011 年才正式推出。2012 年开始 OpenStack 与 CloudStack 竞争异常激烈。2012 年 4 月,在梁胜的推动下,Citrix 将 CloudStack 捐献给了 Apache 基金会,2013 年,CloudStack 正式成为 Apache 的顶级项目。
23 | >
24 | > 
25 | >
26 | > 不过 CloudStack 还是太过复杂,在后来的竞争中不敌 OpenStack。
27 |
28 | - 2014 年,梁胜创办了 Rancher Lab 并担任 CEO。
29 | - 2020 年 2 月 4 日,梁胜入选 CNCF 技术监督委员会([Technical Oversight Committee](https://www.cncf.io/people/technical-oversight-committee/) ,简称TOC)。
30 |
31 | 
32 |
33 | - 2020 年 7 月 8 日,Rancher 被老牌企业级 Linux 提供商 SUSE 收购,梁胜成为 SUSE 工程与创新部总裁。
34 |
35 | 作为一名连续创业者,**梁博士是一位标准的技术梦想家,也是一位具有开拓精神的优秀创业者和企业家。** 作为华人工程师的泰斗,梁博士[勉励国内工程师](https://mp.weixin.qq.com/s/3hXMvQa7IO3zS-7JfxRhiQ):**不要相信程序员只能吃青春饭,绝对没有任何其它职业比编程序更能体现个人创造力和技能的价值,程序员就像艺术家,要努力成为世界一流。**
36 |
37 | ## Rancher
38 |
39 | 2014 年,Docker 已经正式发布一年了,CoreOS 也成立了,K8S 正在萌芽中,梁胜博士敏锐的发现一个新的技术变革时代即将到来,未来不可能再是 CloudStack 和 OpenStack 的时代,而将是容器的时代。Rancher 就这样诞生了!
40 |
41 | 
42 |
43 | > 如果把云计算比作是一片大的农场,各种计算资源比作是农场里的“牛”,那 Rancher 想做的就是那个“放牧人”,这也是他们把公司命名为“Rancher(牧场主)”的原因。对于 Rancher 这样的“放牧人”而言,谁家的“牛”都可以放,客户需要什么样的“牛”,Rancher 就会给客户提供相应的“牛”。
44 |
45 | 
46 |
47 | > Rancher [创立之初的官网](https://web.archive.org/web/20141201085105/http://www.rancher.com/)。官网背景就是一片充满惬意的云下农场,非常应景。
48 |
49 | 刚开始 Rancher 这款产品的前身是 Rancher 联合创始人 Darren Shepherd 的个人项目 [stampede](https://github.com/cattleio/stampede),这是一个基于 CoreOS 的混合 IaaS / Docker 编排工具。后来 stampede 重命名为 Rancher,并于 2014 年 11 月 14 号[正式发布](https://web.archive.org/web/20150911135907/http://rancher.com/announcing-rancher-io-portable-infrastructure-services-for-docker/)。这个版本的 Rancher 算是 1.X 版本,它底层的核心项目是一个叫 [Cattle](https://github.com/rancher/cattle) 的编排工具。不过没多久 K8S 发展迅猛,容器编排战争开始打响,Rancher 也跟进支持另外三大编排项目, Rancher 自身的 Cattle 在这场战争最终也是落败给 K8S。这场战争尘埃落定之后,2018 年 Rancher 正式推出只支持 Kubernetes 的 Rancher 2.0 版本,一直到现在都是 Rancher 公司的主打产品。
50 |
51 | **Rancher 同样是一个非常具有创造性的公司,他们在不同阶段推出过多款不同产品,这些产品大都数都很成功,当然也有一些产品也并不那么成功。**
52 |
53 | 
54 |
55 | - **Rancher** - (特指 Rancher 2.X) 一款口碑非常好的企业级 Kubernetes 管理平台。**Rancher 在全球有好几亿次的下载量,绝对是明星级产品。**
56 |
57 | > Rancher 的理念是开源开放,简单易用,并且是支持多云的 100% 云原生产品。Rancher 不仅支持自身的 RKE,也支持主流公有云厂商的 Kubernetes 托管版,比如 AWS 的 EKS,Google 的 GKE 等等。
58 | >
59 | > 目前 Rancher 的知名对标产品有:Red Hat OpenShift,VMware Tanzu,Google Anthos 等。
60 | >
61 | > 
62 | >
63 | > 上图为 Rancher 创建 Kubernetes 集群时的选择界面。
64 |
65 | - [RancherOS](https://github.com/rancher/os) - 一款类似于 CoreOS 的轻量级容器 Linux 发行版,目前该项目已暂停,项目主页给出了暂停原因。
66 | - [RKE](https://rancher.com/products/rke) (Rancher Kubernetes Engine) - Rancher 自己的 Kubernetes 发行版,默认集成在 Rancher 中供用户选择安装。
67 |
68 | > 目前区分 RKE 和 RKE 2 两个版本,RKE 2 是 Rancher 的下一代 Kubernetes 版本,目前主要服务政府项目,后续会替换 RKE。
69 |
70 | - [K3S](https://k3s.io/) - 【CNCF 沙盒项目】一款专门为 IOT、边缘计算、CI、ARM 场景的轻量级 Kubernetes。
71 |
72 | > K3S 的名字由来也很有意思:Rancher 希望轻量级的 Kubernetes 应该做到只需要原生版本的一半大小、一半内存占用,而 Kubernetes 是 10 个字母,所以这款轻量级的 Kubernetes 应该只有 5 个字母,所以就叫 K3S 了。
73 |
74 | - [K3OS](https://k3os.io/) - 基于 K3S 专为 Kubernetes 而生的极轻量操作系统。
75 | - [Longhorn](https://longhorn.io/) - 【CNCF 孵化中项目】一种可靠、轻便且易于使用的 Kubernetes 持久化存储解决方案。
76 | - [Harvester](https://harvesterhci.io/) - 一款通过 Kubernetes 构建的超融合基础架构(hyperconverged infrastructure,简称 HCI)软件。
77 |
78 | > Harvester 是一个完全由 Rancher 中国研发团队设计和开发的开源软件,笔者刚好有一个朋友就在 Harvester 的这个团队。
79 | >
80 | > 
81 |
82 | - [Fleet](https://github.com/rancher/fleet) - 业界首款**海量 K8S 集群** (up to a million clusters) 管理产品。
83 |
84 | > Fleet 是 Rancher 联合创始人 Darren Shepherd 主导的项目,目前正在活跃开发中。细心的读者会发现之前`/s1/coreos`介绍过他们也有一款产品叫 Fleet。它是 CoreOS 团队在早期构建的容器编排系统,目前已经停止维护。**Rancher 的 Fleet 正是 Darren Shepherd 为了致敬 CoreOS 的 Fleet 的。**“我一直是它的忠实粉丝,将这一项目命名为 Fleet 也包含了我的私心。所以我希望重新使用 Fleet 这一名字,这是对这个非常出色的容器领域早期项目的致敬。”
85 |
86 | - [Submarine](https://submariner.io/) - 【CNCF 沙盒项目】在 L3 层支持多个 Kubernetes 集群之间的跨集群连接的网络方案。
87 |
88 | > Submariner 可以让位于不同 Kubernetes 集群上的容器无需借助 ingress controller 或者节点端口即可直接通信。
89 |
90 | - [Rio](https://github.com/rancher/rio) - 基于 Kubernetes 的 MicroPaaS 平台,后来于 2021 年暂停,官方并未给出具体原因。
91 |
92 | > 
93 | >
94 | > 3 月更新:有 Twitter 网友问了为什么暂停 Rio 这个项目的问题, Darren Shepherd 给了一个[简短的回答](https://twitter.com/ibuildthecloud/status/1503411799294500866)。
95 |
96 | - [Rancher Desktop](https://rancherdesktop.io/) - 之前介绍过的 Docker Desktop 的一个替代产品,它另外的一个优点是**用户可以在 Rancher Desktop 上非常轻松地切换任何 K8S 的不同版本。**
97 | - [Epinio](https://epinio.io/) - Rancher 被收购后和 SUSE 一起开发的基于 Kubernetes 的 PaaS 项目,目前还在早期阶段。个人感觉 Rio 被暂停可能跟这个项目有关。
98 |
99 | >
100 |
101 | Rancher 的项目实在是太多了,还有一些项目没有例举出来。Rancher 过去几年深刻洞察行业趋势,发掘客户需求,推出了一个又一个备受欢迎的产品,2020 年被 SUSE 收购后更是强强联合。
102 |
103 | ## SUSE + Rancher
104 |
105 | 
106 |
107 | 2020 年 7 月 8 号,SUSE 和 Rancher 联合宣布,SUSE 将收购 Rancher,不过双方都未透露具体的收购金额。2020 年 12 月 1 号,Rancher 收购案正式完成。
108 |
109 | ```urlpreview
110 | https://www.suse.com/c/rancher_blog/suse-enters-into-definitive-agreement-to-acquire-rancher-labs/
111 | ```
112 |
113 | SUSE 在并购 Rancher 之前,就有 K8S 的产品和团队,但由于 SUSE 在 K8S 上的投入远远不够多,因此这些产品也不太成功。**SUSE 和 Rancher 合并了之后,SUSE 就真正成为 Linux 和 K8S 的业界领头人。能在 Linux 和 K8S 都能做到业界领先的之前只有 Google 和 RedHat,现在多了一个 SUSE 了。**
114 |
115 | Rancher 在被收购前只进行了 4 轮总共 9500 万美金融资,最后一轮就在被收购前的三四个月。梁胜在[一次采访](https://www.youtube.com/watch?v=_7ntKvUvsFc)中透露,被收购前 Rancher 的现金流非常充实,融资的 9500 万美金总共也才花了 1 / 3 左右。
116 |
117 | 最后值得一提的是,因为 Rancher 的创始人是中国人的原因,Rancher 非常注重中国市场,他们在国内有专门的[官网](https://www.rancher.cn/)和独立公司,国内的客户数也非常之多。这也算是中国人做开源的一大优势吧!
118 |
119 | > **后续:**
120 | >
121 | > 就在本篇文章发布一天后,Rancher 联合创始人 Darren Shepherd 在推特上[宣布离开](https://twitter.com/ibuildthecloud/status/1492175776057217026) Rancher 和 SUSE。同一天,Rancher 的另外一位核心人物 Vincent Fiduccia 也[宣布退休](https://twitter.com/vincentfiduccia/status/1491851410937303042)。
122 | > 
--------------------------------------------------------------------------------
/content/issue-1/8-mesos.md:
--------------------------------------------------------------------------------
1 |
2 | 我们之前曾多次提到历史上竞争激烈的容器编排之战 (The Container Orchestration Wars),而 Kubernetes 最有力的竞争者 Mesos 以及其背后的公司当时也算是风光无限,不仅是资本的宠儿,也是被众人看好的明日之星。好景不长,短短三年便改天换地,胜者 Kubernetes 自不必说,Docker 虽败,但开发者依然离不开他。Fleet 背后的 CoreOS,Cattle 背后的 Rancher 也都一直不断创新,备受瞩目。唯独 Mesos 似乎很惨,是早已沉寂,被人淡忘?还是已低调转型,等待厚积薄发?也不知道还有多少人会关心:之前 Mesos 背后的公司是谁?如今尚且安好?
3 |
4 | ## Mesos 简史
5 |
6 | 
7 |
8 | ### 出生名门
9 |
10 | Mesos 最初是加州伯克利大学 RAD 实验室 2009 年开始的一个学术研究项目,当时项目的主要负责人是 Mesos [这篇论文](https://people.eecs.berkeley.edu/~alig/papers/mesos.pdf)的第一作者 Benjamin Hindman,他是 RAD 实验室的一名博士研究生。**加州伯克利大学是现代计算机技术领域的一朵皇冠,里面诞生了非常多至今影响深远的技术,从 RISC 指令集、RAID(冗余磁盘阵列),到 PostgreSQL、Log-Structure Filesystem,再到 Spark 和 Ray,甚至连 eBPF 里面的 B 都是 Berkeley。** 毫无疑问,Mesos 就是这样一个出生名门的项目。
11 |
12 | 此时的 Twitter 早已进入高速发展的阶段,与之伴随的是 Twitter 频繁宕机的「失败鲸」时光。2010 年,正在 Twitter 苦不堪言的时候,他们看到了 Mesos 这个项目,随后马上应用到了 Twitter,成为 Twitter 自定义 PaaS 的实现基础,管理着 Twitter 超过 30 万台服务器上的应用部署。Benjamin Hindman 当时也加入了 Twitter,负责开发和部署 Mesos。Twitter 的这套基于 Mesos 的 PaaS 解决方案就是后来的 [Apache Aurora](https://aurora.apache.org/)。
13 |
14 | 
15 |
16 | > Twitter 2008 ~ 2013 年宕机时的页面,被海外网友称为「失败鲸」。
17 |
18 | ### Mesosphere 成立
19 |
20 | 2013 年,Benjamin Hindman 离开 Twitter 成立了一个名为 [Mesosphere](https://web.archive.org/web/20140903015326/http://mesosphere.com/) 的公司,专注于打造生产级商业化 Mesos 平台。**Mesosphere 正式成为 Mesos 背后的公司,在后期的 Mesos 开发,商业化运营,与 Kubernetes 的竞争中几乎都由 Mesosphere 在主导和支撑。**
21 |
22 | > Mesos 一词来源于希腊语,是 middle (中间) 的意思,英语里面甚至有一个 *meso-* 的词根。Sphere 则表示某个领域或范围,而 Mesosphere 既指地球大气层的中流层(介于平流层和热流层中间),也可以表示 Mesos 这个领域。
23 | >
24 | > 国内青云也有一个专注于 Kubernetes 技术的团队,他们的产品名为 [Kubesphere](https://kubesphere.io/),估计也是受到 Mesosphere 的启发。
25 |
26 | 
27 |
28 | 当时的 Mesosphere 除了 Apache Mesos 外,还有两款主要产品:
29 |
30 | - **[DC/OS](https://dcos.io/)- 一套基于 Mesos 的数据中心操作系统,也是 Mesosphere 最主要的商业化产品。**
31 |
32 | > DC/OS 最初是 Data Center Operating System 的缩写,现在已经被改为 Distributed Cloud Operating System 的缩写。前期这款产品只支持 Mesos 和 Docker,后来随着 Kubernetes 的崛起,也支持了 Kubernetes。
33 |
34 | - [Marathon](http://mesosphere.github.io/marathon/) - Mesos 底层的容器编排框架,也正是 Mesos 与 Kubernetes 抗衡的核心组件。
35 |
36 | ### 备受追捧
37 |
38 | Mesosphere 成立后就备受资本的追捧,自 2014 年 6 月至 2018 年 5 月共完成 A 到 D 轮四轮融资,金额分别为 1050 万美元、3600 万美元、7350 万美元和 1.25 亿美元,投资方包括 A16Z、Fuel Capital、微软等。Mesosphere 最高估值是 D 轮之后达到 7.75 亿美金。
39 |
40 | Mesos 在 Twitter 的成功应用后,也吸引了全世界其他知名公司的采纳,比如 Airbnb、eBay 和 Netflix 等等,甚至 2015 年 Apple 的 Siri 就是运行在 Mesos 上,Mesos 也因此曾经火极一时。至于微软,他不仅投资了 Mesosphere,还让他的 Azure 平台率先[支持](https://www.zdnet.com/article/new-azure-container-service-to-bring-together-mesos-docker-and-azure-cloud/)了 Mesos。
41 |
42 | ### 黯然退场
43 |
44 | 辉煌是短暂的,Kubernetes 来势汹汹,Mesos 却节节败退。起初 Mesosphere 的一部分人还认为这两款编排工具完全可以并行存在,但残酷的现实把他们的这个美好梦想击得粉碎。一山不容二虎,容器编排领域似乎也容不下我 Mesos 了。心有不甘,我好想再做一次最后的挣扎,但是似乎已经于事无补。
45 |
46 | - 2019 年 8 月 5 号,Mesosphere [宣布改名](https://d2iq.com/blog/mesosphere-is-now-d2iq)为 D2iQ,开启新的重生之旅。
47 | - 2020 年 4 月 27 号,外媒报道 Google [计划收购](https://www.axios.com/google-talks-to-acquire-enterprise-software-startup-d2iq-mesosphere-a0d428bf-2382-4ec6-8941-9e580e36086e.html) D2iQ,报价是 2.5 亿美金,比最高时的 7.75 亿跌了近 7 成,但最后的结果好像是无疾而终。
48 | - 2021 年 4 月 21 号,Apache 成员投票通过计划将 Mesos 移入 [Attic](https://attic.apache.org/) (阁楼),正式结束这个项目的生命。不过两天之后这个决定被撤回,Mesos 依然继续残喘存活。
49 |
50 | ### 复盘
51 |
52 | Mesos 可能是计算机历史上最短命的技术栈,Benjamin Hindman 在 HackerNews [关于 Mesos 被移入 Attic 的帖子](https://news.ycombinator.com/item?id=26713082)上做了复盘:**“Mesos 的失败是种必然”**。
53 |
54 | > - **Kubernetes 拥有后发优势,承载着谷歌十多年来在构建此类系统方面积累起的丰富经验与知识。** Mesos 则源自技术研究,随后虽然得到了 Twitter 的实际应用,但负责项目的工程师们(包括我本人)并不具备构建集群管理系统的经验。我们在探索当中学到了很多,回头来看,如果能有第二次机会、我们肯定会认真调整设计思路。
55 | >
56 | > - **Mesos 这个项目做得有点“小气”,导致社区变得支离破碎。** 为了正常使用,新用户们不得不付出大量重复劳动。很明显,大多数用户只想运行服务、作业与 cron 作业,但 Mesos 的设计思路并不是这样。大家必须得从一系列生态系统调度程序(包括 Aurora、Marathon、Chronos 以及 Singularity 等)中进行选择,或者自主构建某些内容。
57 | >
58 | > - **Mesosphere 是一家靠风险投资支持的初创企业**,后来则由 Twitter 接手赞助项目发展。正因为如此,**我们必须找到一种能够产生收益的商业模式,这就导致我们与用户乃至其他供应商之间产生了紧张关系、甚至是严重的不信任感。** 相反,谷歌 / k8s 不要求任何直接产出,反而可以不断投入大量资金与丰富的人才资源,由此带来的技术成果单靠增强谷歌自己的云计算业务就足以值回票价。
59 |
60 | Mesos 另外一个 PMC 和提交者也补充道:
61 |
62 | > Kubernetes 成功的另一个原因,可能在于 golang 的生态。在 Mesos 中,由于采用独特的线程模型,我们耗费了大量精力在 C++ 中构建基础 HTTP 层。**如果能够重新选择,真希望能把这些时间花在开发点真实有用的功能上。**
63 |
64 | ## D2iQ
65 |
66 | 
67 |
68 | Mesos “死了”,但 Mesosphere 这家公司还得继续活着。**没有成王败寇,新生的 D2iQ 选择拥抱了它曾经的死敌 Kubernetes,往事如烟,重新来过!**
69 |
70 | > 新名字 D2iQ 初看起来非常奇怪,但把它拆开后就可以发现里面的用意:**D2iQ 里面的 D2 是指 Day 2,iQ 就是大家平时所指的那个 IQ (智商) 。**
71 | >
72 | > 软件开发生命周期可以划分为 Day 0,Day 1 和 Day 2:
73 | >
74 | > 
75 | >
76 | > - Day 0 通常是指初期的需求明确,架构设计阶段;
77 | >
78 | > - Day 1 通常是指软件安装、部署、配置阶段,Day 1 之后代表软件正式上线运行;
79 | >
80 | > - Day 2 通常是指软件上线后的运维阶段,也是整个生命周期里面的非常重要、持续时间最长的一环,从产品上线到最终结束都算是 Day 2。
81 | >
82 | > **而 D2iQ 新的定位是给企业的 Day 2 环节提供更好、更智能的解决方案。**
83 |
84 | 转型后的 D2iQ 主要有如下几款产品:
85 |
86 | - [Kommander](https://d2iq.com/products/kommander) - 类似于 Rancher 的 Kubernetes 多集群管理平台;
87 | - [Konvoy](https://d2iq.com/products/konvoy) - D2iQ 自己的 Kubernetes 发行版;
88 | - [KUDO](https://kudo.dev/) (The Kubernetes Universal Declarative Operator) - 【CNCF 沙盒项目】一个只需要用 YAML 就可以开发 Kubernetes Operator 的项目,对标之前提到过的 RedHat 的 Operator Framework,于 2020 年 7 月[捐赠](https://d2iq.com/blog/kudo-accepted-as-a-cncf-sandbox-project)给了 CNCF。
89 | - [Kaptain](https://d2iq.com/products/kaptain) - 基于 Kubernetes 和 Kubeflow 的企业级端到端机器学习平台,[前身](https://d2iq.com/blog/kudo-for-kubeflow-the-enterprise-machine-learning-platform)是 KUDO for Kubflow 这个项目;
90 | - [DKP](https://d2iq.com/kubernetes-platform) (D2iQ Kubernetes Platform) - 将上面的产品打包到一起售卖的 Kubernetes 综合解决方案;
91 |
92 | 
93 |
94 | **技术迭代如此之快,市场竞争愈加激烈,没有人能预料到下一个 Kubernetes 会什么时候崛起,唯有勇敢、坚定,跌倒了再重新爬起,像 D2iQ 一样,既往不恋,纵情向前!**
--------------------------------------------------------------------------------
/content/issue-1/9-mirantis.md:
--------------------------------------------------------------------------------
1 |
2 | 2019 年 11 月,Docker 公司出售了自己的 Docker Enterprise 业务和整个 300 人的团队,出人意料的是购买方是一家似乎名不见经传的公司 Mirantis。相信绝大多数人(包括笔者本人)之前并未听闻过Mirantis,这家公司是个什么来路?为什么他能收购 Docker 的企业业务?收购之后这家公司目前发展得如何?
3 |
4 |
5 |
6 |
7 |
8 | ### 外包公司能有什么出息?
9 |
10 | 2010 年 NASA 和 Rackspace [联合发布](https://web.archive.org/web/20171026111206/https://www.openstack.org/blog/2010/07/introducing-openstack/)了私有云解决方案 OpenStack,很快便吸引了一家外包公司的注意,该公司在 2011 年就开始给 OpenStack 做贡献。2012 年,OpenStack 发布才两年多,NASA 就抛弃了 OpenStack 选择[拥抱公有云 AWS](https://www.wired.com/2012/06/nasa-web-services-openstack/)。而这家外包公司也在这一年华丽转型全面投入 OpenStack,变成了一家纯 OpenStack 公司。这家外包公司就是 Mirantis,它于 1999 年在俄罗斯成立(后来把总部定在了美国加州)。
11 |
12 | > NASA 抛弃 OpenStack 转而采用 AWS 核心原因是:**NASA 是政府部门,不是商业机构,采用亚马逊的云计算,NASA 每年可以节省 100 万美元的成本。**
13 |
14 | 关于 Mirantis 转型 OpenStack 之前的外包经历 Mirantis 自己好像从来不愿提起,网上几乎也没有什么资料。不过互联网还是有记忆的,2013 年一家专注于俄罗斯和东欧市场的科技媒体刚好报道了 Mirantis A 轮融资的消息,标题就是"[Russian former outsourcing Mirantis Announces $10 Million Series A Round](http://web.archive.org/web/20131211151032/http://goaleurope.com/2013/06/24/russian-former-outsourcing-mirantis-announces-10-million-series-a-round/)"。
15 |
16 | 我们大概都有一个刻板印象,**外包公司能有什么大出息?这句话可能对绝大多数外包公司都适用,但是对 Mirantis 却不适用。在转型 OpenStack 公司之后,Mirantis 融资顺畅,一路高歌,在随后的几年里成为了 OpenStack 领域数一数二的公司。**
17 |
18 | ### OpenStack 的时代
19 |
20 | 2012 年 OpenStack 基金会[成立](https://www.businesswire.com/news/home/20120919005997/en/OpenStack-Launches-Independent-Foundation-Begins-Work-Protecting),OpenStack 的黄金时代到来。而 Mirantis 也成为了这个基金会的创始成员之一,Mirantis 的创始人也当选了基金会的董事会成员。从 2013 年到 2015 年,Mirantis 分别完成了 2000 万美金的 A 轮和 2 亿美金的 B 轮融资,投资方不仅有 Intel、RedHat 和爱立信,还有一家来自中国的[华山资本](https://www.westsummitcap.com/zh/)。
21 |
22 | > Mirantis 在[官方博客](http://web.archive.org/web/20130916010432/http://www.mirantis.com/company/press-release/mirantis-receives-10-million-from-intel-capital-westsummit-capital-and-dell-ventures-to-accelerate-its-openstack-game/)中也提到之所以接受华山资本的投资是**因为[openstack.org](http://OpenStack.org)访问量最大的国家是中国, 中国拥有世界上最大的云部署和 OpenStack 需求**,华山资本可以帮助 Mirantis 在中国更好的拓展市场和客户。
23 |
24 | 在资本的支持下,**Mirantis 发行了自己的商业化 OpenStack 发行版,也成为了全球顶尖的 OpenStack 服务提供商。在 OpenStack 贡献方面,当时的 Mirantis 很长时间一直都能排前三。**
25 |
26 | 
27 |
28 | > OpenStack Kilo 版本按 commit 数排名,Mirantis 排名第三 (扇图中最大的绿色部分为其他公司的总和)。数据来源于 Mirantis 维护的网站:[https://www.stackalytics.com](https://www.stackalytics.com)
29 | >
30 | > OpenStack 的版本命名和 Android 类似,从字母 A 开始命名,每一个版本换一个字母,截止到目前最新的版本是 Wallaby。
31 |
32 | ### OpenStack 的没落
33 |
34 | OpenStack 的黄金时代才持续几年便开始逐渐没落。其中有很多原因:
35 |
36 | - **随着 OpenStack 不断发展,组件越来越多,整个项目越来越复杂。** 甚至到后期很多组件都成为了缺少维护的状态。
37 |
38 | > OpenStack 最高的时候有 40 多个组件,现在最新版已经缩减到了 [30 个左右](https://www.openstack.org/software/project-navigator/openstack-components)。
39 |
40 | - OpenStack 在公有云上无法和 AWS、Azure 等厂商的自有技术抗衡,在私有云上也无法威胁到 VMware。
41 | - **Kubernetes 的崛起给 OpenStack 着实带来了很大挑战和冲击。**
42 |
43 | 
44 |
45 | > OpenStack邮件列表数量统计图,来源:https://openstack.markmail.org。
46 |
47 | 很快 OpenStack 颓势渐显:
48 |
49 | - 2015 年,Rackspace 宣布将客户的业务从 OpenStack 迁移到 AWS 上;
50 | - 2015 年 10 月,惠普宣布关闭基于 OpenStack 的公有云服务 Helion;
51 | - 2016 年 2 月,思科宣布将在 2018 年 3 月停止基于 OpenStack 的公共云服务 Intercloud;
52 | - **2016 年 11 月,OpenStack 核心成员 Mirantis,裁掉了约 100 名 OpenStack 开发者;**
53 | - 2017 年 4 月,英特尔决定不再投资 OpenStack 创新中心。
54 |
55 | > 后来,Open Stack 基金会改名 [Open Infrastructure 基金会](https://openinfra.dev/),不再专注于 OpenStack,也孵化了像 [Kata Container](https://katacontainers.io/) 这样的明星项目。
56 |
57 | ### 高光时刻
58 |
59 | Mirantis 在那次裁员之后依然没有放弃老本行 OpenStack 的业务,但是他把重心调整到了 Kubernetes 上,不再是一家纯 OpenStack 公司了。
60 |
61 | - 2016 年 12 月,就像之前一直搞 OpenStack 的培训一样,Mirantis 又开始搞起了 Kubernetes 和 Docker 的[培训和认证](https://www.networkworld.com/article/3145402/mirantis-moves-deeper-into-the-container-world-launches-certification.html)。
62 | - 2017 年 4 月,Mirantis [发布](https://www.zdnet.com/article/mirantis-enters-the-kubernetes-game-and-ups-its-openstack-play/)了一款 OpenStack 和 Kubernetes 的结合产品:Mirantis Cloud Platform (MCP),这款产品至今依然存在,只是改名叫了 [Mirantis OpenStack for Kubernetes](https://www.mirantis.com/software/mirantis-openstack-for-kubernetes/)。
63 |
64 | 
65 |
66 | > MCP 里面包含两款子产品:
67 | > - DriveTraint - 提供 CI / CD 功能;
68 | > - StackLight - 提供日志、监控报警等功能;
69 |
70 | - 2017 年 9 月,Mirantis 继续在 MCP 的基础上[发布了](https://www.mirantis.com/company/press-center/company-news/mirantis-launches-multi-cloud-caas-with-aws-support/) Containers-as-a-Service (CaaS) 产品,后来应该演变成了现在的 Mirantis Kubernetes Engine。
71 |
72 | - 2018 至 2019 年,Mirantis 依然持续布局发布了其他的产品,这里不再赘述。
73 |
74 | **到了 2019 年底,Mirantis 终于迎来了他的高光时刻:收购 Docker 的 Enterprise 业务。这部分业务几乎在 Docker 公司所有业务中占比 90%,其他还包括所有相关的知识产权、约 400 名 Docker 员工中的 300 名、750 名企业客户以及所有企业合作伙伴关系。**
75 |
76 | 
77 |
78 | > 曾经 Docker [公司官网](https://web.archive.org/web/20191106112336/https://www.docker.com/)的 Docker Enterprise 和 Docker Enterprise Solutions 板块。
79 |
80 | 收购的这些业务中具体包含如下这些产品:
81 |
82 | - Docker Enteripse Edition (Docker EE) - 现在变成了 [Mirantis Container Cloud](https://www.mirantis.com/software/mirantis-container-cloud/);
83 | - [Docker Container Engine](https://docs.docker.com/engine/) - 现在变成了 [Mirantis Container Runtime](https://www.mirantis.com/software/container-runtime/);
84 | - Docker Trusted Registry - 现在变成了 [Mirantis Secure Registry](https://www.mirantis.com/software/mirantis-secure-registry/);
85 | - Docker Kubernetes Service - 现在变成了 [Mirantis Kubernetes Engine](https://www.mirantis.com/software/mirantis-kubernetes-engine/),Mirantis 自己的 K8S 发行版;
86 | - 其他:Universal Control Plane,Docker Edge Technology。
87 |
88 | 两年过去了,如今的 Mirantis 发展的怎样呢?前不久有**外媒[报道](https://techcrunch.com/2022/02/09/mirantis-on-run-rate-over-100m-two-years-after-buying-docker-enterprise-assets/),在收购 Docker 企业业务两年后,Mirantis 年营收达到了一亿美金,而 Docker 在去年的 ARR(年度经常性收入)也[达到了](https://techcrunch.com/2022/02/01/docker-makes-comeback-reaching-over-50m-in-arr/) 5000 万美金。**
89 |
90 | > 这里的一亿美金是年营收 (Annual Run Rate),并非 ARR。
91 |
92 | ### 开创未来
93 |
94 | 可以说 Mirantis 收购 Docker 企业业务这笔交易是相当成功的,现在的 Mirantis 已经不是当年 OpenStack 时代的 Mirantis 了,更不是十年前的那家外包公司了。**如今的 Mirantis 是一个办公地点包括美国、加拿大、欧洲、中国、印度、日本等十几个国家和城市的跨国公司,也是一家业务从 OpenStack,到 Kubernetes、Docker,再到 DevOps、Data Center 等覆盖面非常广的公司。** 这几年除了继续经营传统的 OpenStack 和 Docker 相关业务外,Mirantis 持续收购和开辟了新的产品线和业务:
95 |
96 | - [Lens](https://k8slens.dev/) - 目前业内比较受欢迎的一款 Kubernetes IDE 产品,2020 年 8 月从一家芬兰公司那收购;
97 |
98 | > Lens 的桌面版 IDE 是开源免费的,但是它提供的团队协作功能 ([Lens Space](https://k8slens.dev/spaces.html)) 则需要订阅付费。
99 |
100 | 
101 |
102 | - [DevOpsCare](https://www.mirantis.com/software/lens/devopscare/) - Lens 团队被收购后和 Mirantis 一起搞的适用于任何 Kubernetes 环境的 CI / CD 产品。
103 |
104 | > 这款产品 2021 年 12 月才发布,目前比较新。
105 |
106 | - [K0S](https://k0sproject.io/) - Rancher 之前搞了一个轻量级的 K3S,Mirantis 更进一步直接搞了一个 K0S。
107 | - [Mirantis Flow](https://www.mirantis.com/software/mirantis-flow/) - 一款 Data Center as a Service (数据中心即服务) 产品。
108 |
109 | > 这是一款很有意思的产品,Mirantis 刚开始以卖私有云软件起家,客户购买 OpenStack 软件之后依然需要有专门的 IT 团队使用 OpenStack 搭建自己的私有云数据中心。但现在 Mirantis 开始直接卖服务了,客户购买 Mirantis Flow 的服务之后,Mirantis 直接联合硬件厂商完整的把数据中心建好之后再交付给你。这就是这几年开始出现的 [DCaaS](https://venturebeat.com/2021/10/10/the-emergence-of-datacenter-as-a-service/) 的概念。
110 | >
111 | > Mirantis Flow 的价格为每月 15000 美元,其中包含 Mirantis 软件套件中所有内容和 1000 core/vCPU licenses,支持初始 20 个虚拟机迁移,以及 24 × 7 小时支持。
112 |
113 | Mirantis 从外包起家,到及时拥抱 OpenStack,到迅速转型 Kubernetes,每一步似乎都踩得恰到好处。如今 Mirantis 不断推陈出新,影响力越来越大,相信他会不断开创他自己的美好未来!
114 |
115 | > 就在笔者调研 Mirantis 的期间,俄罗斯 2 月 24 号从乌克兰第二大城市 Kharkiv (哈尔科夫) 对乌克兰发动军事行动,俄乌局势急转直下。而刚好 Mirantis 的创始人是俄罗斯人,他们在 Kharkiv 有办公室,而且一直在招人。我们只能祝愿一切安好!
116 | >
117 | > 
118 | >
119 | > 后续:在这篇文章发表当天,Mirantis 在官方博客对乌克兰危机[做出了回应](https://www.mirantis.com/blog/mirantis-response-to-ukraine-crisis/)。Mirantis 说乌克兰的 86 名员工目前都安全;因为俄罗斯受到各方面制裁,俄罗斯团队也在紧急制定措施应对制裁,减少对客户的影响。
--------------------------------------------------------------------------------
/content/issue-1/intro.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## 前言
4 |
5 | 这是 《TO-D 杂志》的第一季,前九篇文章最初都是发布在字节跳动内网的,里面可能涉及到一些和字节相关的内容,比如字节内部的 `IT Service` 小程序、字节内部使用 `Consul` 等,其他也没有什么涉及字节安全合规的内容,所以我都是尽可能把原文一字没改的发表出来了。最后一篇主要讲我为什么要写《TO-D 杂志》。欢迎大家阅读,多多转发分享!
6 |
--------------------------------------------------------------------------------
/content/issue-1/zine.toml:
--------------------------------------------------------------------------------
1 | slug = "s1"
2 | number = 1
3 | title = "第一季"
4 | publish = true
5 |
6 | [[article]]
7 | slug = "retool"
8 | file = "1-retool.md"
9 | title = "Retool: Raising less money at lower valuations"
10 | author = "Folyd"
11 | cover = "/static/s1/1/retool.png"
12 | pub_date = "2021-12-23"
13 | publish = true
14 | featured = true
15 |
16 | [[article]]
17 | slug = "cncf"
18 | file = "2-cncf.md"
19 | title = "CNCF 的愿景:技术变革与对抗熵增"
20 | author = "Folyd"
21 | cover = "/static/s1/2/specs.png"
22 | pub_date = "2021-12-29"
23 | publish = true
24 | featured = true
25 |
26 | [[article]]
27 | slug = "hashicorp"
28 | file = "3-hashicorp.md"
29 | title = "时势造英雄-HashiCorp"
30 | author = "Folyd"
31 | cover = "/static/s1/3/ipo.png"
32 | pub_date = "2022-01-06"
33 | publish = true
34 | featured = true
35 |
36 | [[article]]
37 | slug = "kong-vs-apisix"
38 | file = "4-kong-vs-apisix.md"
39 | title = "云原生时代的中外 API 网关之争"
40 | author = "Folyd"
41 | cover = "/static/s1/4/vs.png"
42 | pub_date = "2022-01-13"
43 | publish = true
44 | featured = true
45 |
46 | [[article]]
47 | slug = "coreos"
48 | file = "5-coreos.md"
49 | title = "云原生的一代传奇 CoreOS"
50 | author = "Folyd"
51 | cover = "/static/s1/5/product.png"
52 | pub_date = "2022-01-20"
53 | publish = true
54 | featured = true
55 |
56 | [[article]]
57 | slug = "docker"
58 | file = "6-docker.md"
59 | title = "一封 Docker 公司的来信"
60 | author = "Folyd"
61 | cover = "/static/s1/6/docker.jpeg"
62 | pub_date = "2022-01-27"
63 | publish = true
64 | featured = true
65 |
66 | [[article]]
67 | slug = "rancher"
68 | file = "7-rancher.md"
69 | title = "云农场的放牧人 Rancher"
70 | author = "Folyd"
71 | cover = "/static/s1/7/rancher.png"
72 | pub_date = "2022-02-10"
73 | publish = true
74 | featured = true
75 |
76 | [[article]]
77 | slug = "mesos"
78 | file = "8-mesos.md"
79 | title = "曾经 Mesos 背后的公司,如今在干嘛?"
80 | author = "Folyd"
81 | cover = "/static/s1/8/d2iq.png"
82 | pub_date = "2022-02-18"
83 | publish = true
84 | featured = true
85 |
86 | [[article]]
87 | slug = "mirantis"
88 | file = "9-mirantis.md"
89 | title = "收购 Docker 企业业务的 Mirantis 是什么来路?"
90 | author = "Folyd"
91 | cover = "/static/s1/9/mirantis.png"
92 | pub_date = "2022-02-25"
93 | publish = true
94 | featured = true
95 |
96 | [[article]]
97 | slug = "why"
98 | file = "10-why.md"
99 | title = "为什么要写《TO-D 杂志》?"
100 | author = "Folyd"
101 | cover = "/static/s1/10/why.png"
102 | pub_date = "2022-03-20"
103 | publish = true
104 | featured = true
105 |
--------------------------------------------------------------------------------
/content/issue-2/1-deislabs.md:
--------------------------------------------------------------------------------
1 |
2 | 微软历史上收购合并过无数的产品、公司和团队,很多产品或公司甚至在被收购前已经是家喻户晓的品牌(比如 LinkedIn,Github,最近的暴雪动视),而我们这一期的主角 Deis Labs 纯粹是微软这个[超长收购清单](https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitions_by_Microsoft)中普通到不能再普通的一项,当你用手指划过这个清单时,你都丝毫不会注意到有一项写着:`Deis, 收购于 2017 年 4 月 10 日`。
3 |
4 | 
5 |
6 | > 微软的收购清单
7 |
8 | Deis,就是 DeisLabs 的前身,这是一个非常优秀并且充满创造力的团队,也是笔者非常喜欢的团队。今天我们就来分享 DeisLabs 的故事。
9 |
10 | ## PaaS 与 Deis
11 |
12 | 我们的故事要先从 PaaS 开始说起。2007 年,[Heroku](https://www.heroku.com/) 成立后开启了 PaaS 的黄金时代。很多人把 Heroku 称为 PaaS “鼻祖”,其实并不准确。比他成立更早的 [Engine Yard](https://www.engineyard.com/) 在 2006 年就开始做类似的事情了,只是 Engine Yard 后来发展比 Heroku 差太多,只能算 PaaS 领域的第二梯队。Engine Yard 几乎是一个没人听过的名字,但他与我们今天的主角 DeisLabs 息息相关。2015 年 4 月 15 日,Engine Yard [收购](https://web.archive.org/web/20170611174913/https://blog.engineyard.com/2015/engine-yard-joins-forces-with-opdemand)了一家名为 OpDemand 的公司,这家公司有一款叫 Deis 的主打产品。Deis 是 OpDemand 受 Heroku 启发,于 2013 年开始开发的 PaaS 产品(那个时候的 Heroku 真的是非常火)。Deis 最早的架构是基于 CoreOS, Fleet 和 Docker,后来被称为 v1 版架构,早已被弃用,不过我们现在依然可以在 Github 上一瞥曾经 Deis v1 的代码 ([https://github.com/deis/deis](https://github.com/deis/deis))。
13 |
14 | > 没错,这里又出现了 Fleet,就是 CoreOS 打造的 Fleet。我们曾经在`/s1/coreos`、`/s1/rancher`那两期都提到过它。
15 |
16 | OpDemand 在加入 Engine Yard 之后,继续以 Deis 的名义开发维护 Deis 这款产品,他们有自己独立的官网 [https://deis.com](https://web.archive.org/web/20170209220933/https://deis.com/) 。2015 年 12 月 30 号,他们发布了基于 Kubernetes 的 Deis 第二代产品 Deis Workflow。当年的 Deis 确实做的很不错的,影响力甚至慢慢的扩散到了中国,知乎上现在还可以看到当年和 Deis 有关的问题。
17 |
18 |
19 |
20 | 2017 年已经到了 Kubernetes 风起云涌的阶段,公有云领域的后起之秀微软 Azure 也在为自己的容器服务物色合适的公司或团队,慧眼识珠的 Azure 看中了 Deis 这个团队。2017 年 4 月 10 日,在和 Engine Yard 协商之后,Azure 正式把 Deis 这个团队[收入囊中](https://blogs.microsoft.com/blog/2017/04/10/microsoft-acquire-deis-help-companies-innovate-containers/)。Deis 加入 Azure 之后负责 Kubernetes 和容器相关的产品,现在点击 [https://deis.com](https://deis.com) 就会跳转到 Azure Kubernetes Service (AKS) 的产品页面。
21 |
22 | > 在被微软收购几个月后,包括 Deis Workflow 在内的 Deis 之前的项目都不再维护更新:[Deis Workflow Final Release](https://web.archive.org/web/20180626034638/https://deis.com/blog/2017/deis-workflow-final-release/)
23 |
24 | 
25 |
26 | > Deis 被收购前的[官网](https://web.archive.org/web/20170209220933/https://deis.com/)。
27 |
28 | 让人大跌眼镜的是,就在 Engine Yard 把 Deis 团队卖给微软之后没几天,2017 年 4 月25 号,Engine Yard 宣布被一家叫 [Crossover](https://www.crossover.com) 的猎头公司收购。Engine Yard 在[这篇被收购文章](https://web.archive.org/web/20170606120646/http://blog.engineyard.com/2017/crossover-acquisition)中给出的卖掉 Deis 团队的理由是:Deis 团队做的 Kubernetes 产品让 Engine Yard 无法专注于 Ruby on Rails 的 PaaS 平台。(最初的几个 PaaS 平台包括 Heroku 都是做 Ruby 起家的)这个理由真的让笔者哭笑不得,好一个不忘初心,似乎用“只见树木不见森林”来评价也不为过。多年后来回看 Ruby 和 Kubernetes 的发展趋势,大家马上就能高下立判了。
29 |
30 | > 而现在的 Engine Yard 也不是在 Crossover 名下,而是在一个叫 Devgraph 的公司名下,具体是不是 Crossover 转卖给 [Devgraph](https://devgraph.com) 的就不得而知了。
31 |
32 | ## Deis Labs
33 |
34 | 被微软收购后,所有 Deis 的成员全部加入 Azure,为了致敬曾经的 Deis 团队,他们把自己在微软的新团队取名 Deis Labs,官网:[https://deislabs.io](https://deislabs.io)。
35 |
36 | 
37 |
38 | 新的 Deis Labs 主要专注于 Kubernetes 和 WebAssembly 两大领域。微软也给 Deis Labs 提供了一个足够大的平台,激发了 Deis Labs 的无穷创造力。他们在短短几年内除了要顾及 Azure 的容器服务,还推出了很多开源项目。虽然有些项目并没有特别知名,但长远来看很多都是很有意义的项目。在介绍这些项目前,我们不得不先介绍一下 Deis Labs 在老东家 Engine Yard 就推出的项目 [Helm](https://helm.sh/)。
39 |
40 | ### Helm
41 |
42 | 
43 |
44 | **Helm 是 Deis 团队于 2015 年发布的一个 Kubernetes 的包管理工具,目前是 CNCF 的已毕业项目,也是 Kubernetes 生态里面不可或缺的明星级项目**。Kubernetes 默认需要开发者手动编写、维护数量繁多的 Yaml 文件,并且应用的分发、安装也比较繁琐。Helm 引入了 Charts 的概念,开发者可以把自己的应用配置文件打包成 Charts 格式,发布到 [ArtifactHub](https://artifacthub.io/) (取代了之前的 Helm Hub) 后,安装新的 Kubernetes 应用只需要一条 Helm 命令就能搞定,极大程度上解决了 Kubernetes 应用维护、分发、安装等问题。
45 |
46 | > Helm 创始人 Matt Butcher 在 InfoQ 的[一次采访](https://www.infoq.com/news/2019/09/helm-butcher/)中提到:Helm 最初是他和另外几个同事参加 Engine Yard 的一次两天 Hackthon 团建开发的项目,最初是为了解决 Deis Workflow 众多微服务在 Kubernetes 内安装部署繁琐的问题。
47 | >
48 | > Helm 这个名字也很有意思,Kubernetes 是希腊语“船长”的意思,而 Helm 就是船长掌握航行方向的船舵。
49 |
50 | ### 其他项目
51 |
52 | **Deis Labs 团队官网列举了他们的大部分项目,其中有 7 个是 CNCF 项目**。后来笔者调研发现,CNCF 另外几个项目也是 Deis Labs 团队的人和其他公司合作搞的,并没有例举在上面。
53 |
54 | 
55 |
56 | > Deis Labs 官网列出的项目列表,应该是官网没有及时更新,有些项目没有列举上去。
57 |
58 | 我们重点介绍一下未归档的项目:
59 |
60 | #### Akri
61 |
62 |
63 |
64 | [Akri](https://github.com/project-akri/akri) 是微软在 2020 年 10 月[推出](https://cloudblogs.microsoft.com/opensource/2020/10/20/announcing-akri-open-source-project-building-connected-edge-kubernetes/)的用于帮助 Kubernetes 集群主动发现并利用边缘设备的项目。这里的边缘设备通常是指各种传感器、控制器、相机等 IoT 设备,它们都没办法运行 Kubernetes 充当 Kubernetes 集群的节点。Akri 的目标是想成为边缘 IoT 设备和 Kubernetes 集群交互的标准,所以 Akri 其实是 `A Kubernetes Resource Interface` 的缩写(同时,Akri 也是希腊语 "Edge" 的意思)。
65 |
66 | > Akri 是一个 Rust 项目,目前处在 **CNCF 沙盒阶段**。
67 |
68 | #### CNAB
69 |
70 | [CNAB](https://cnab.io/) 全名 Cloud Native Application Bundle,是 2018 年 12 月微软联合 Docker、HashiCorp、Bitnami 几个公司[一起搞的](https://cloudblogs.microsoft.com/opensource/2018/12/04/announcing-cnab-cloud-agnostic-format-packaging-running-distributed-applications/)新开源包规范。名字看起来高大上,但目前看来,这个规范并没有普及起来,除了微软自己在玩,其他公司很少有在参与。Deis Labs 有一个叫 [Duffle](https://duffle.sh/) 的归档项目,其实就是 CNAB 规范的打包工具,至于为什么被标为归档,笔者也不得而知。
71 |
72 | #### Krustlet
73 |
74 |
75 |
76 | [Krustlet](https://krustlet.dev/) 是 Deis Labs 觉得 Kubernetes 生态里面几乎都是 Go 的项目,这是他们为了探索 Rust 怎样和 Kubernetes 结合起来的实验性项目,**是一个 Rust 编写的的 Kubelet,可以直接用来在 Kubernetes 中跑编译成 WebAssembly 的模块。**所以 Kruslet 这个名字其实是 **K**ubernetes-**rust**-kube**let** 的缩写。
77 |
78 | > Kubelet 是 Kubernetes 非常核心的组件,用来调度 Pod 等资源的。
79 |
80 | 笔者认为 Krustlet 是一个很有创新性的项目,它于 2021 年 7 月份发布了 1.0,并且已经是 **CNCF 的沙盒项目**。
81 |
82 | #### Krator
83 |
84 |
85 |
86 | [Krator](https://github.com/krator-rs/krator) 是 Deis Labs 在开发 Krustlet 过程中抽出来的一个方便构建 Kubernetes Operator 的 Rust 项目。名字是**K**ubernetes **R**ust st**at**e machine operat**or** 的缩写,目前是 **CNCF 沙盒项目**。
87 |
88 | #### Mystikos
89 |
90 |
91 |
92 | [Mystikos](https://github.com/deislabs) 是一系列用来帮助在硬件可信执行环境 (Trusted Execution Environment,简称 TEE) 下运行 Linux 容器的运行时和工具。目前仅支持 Intel ® SGX,其他 TEE 硬件将在未来支持。
93 |
94 | #### Bindle
95 |
96 | [Bindle](https://github.com/deislabs/bindle) 并不能算是产品,它是 Deis Labs 发布的一个 Rust 项目,而且非常有意思。简单来说,Bindle 是一套用来描述文件之间逻辑依赖关系的规范。Deis Labs 提供了 server 和 client 的实现,主要应用场景比如网站打包、依赖库或包管理、WebAssembly 等等。详情可以看看 Bindle 的[规范文档](https://github.com/deislabs/bindle/blob/main/docs/bindle-spec.md)。
97 |
98 | #### ORAS
99 |
100 |
101 |
102 | [ORAS](https://oras.land/) 是 OCI Registry As Storage 的缩写,目前也是 **CNCF 沙盒项目**。笔者了解也不多,暂时没办法给出通俗的解释,欢迎大家补充。
103 |
104 | #### Brigade
105 |
106 |
107 |
108 | [Brigade](https://brigade.sh/) 是微软在 2017 年底推出的一个借助 Kubernetes 来实现事件驱动、事务处理编排的工具,可以使用在 CI / CD 环节。目前也是 **CNCF 沙盒项目**,但是看起来在国内毫无用户。
109 |
110 | #### Hippo
111 |
112 | [Hippo](https://github.com/deislabs/hippo) 是 Deis Labs 推出的一个 WebAssembly PaaS 平台,很有创意,笔者个人非常喜欢这个产品。顺便说一下 Hippo 用到的技术就包括前面提到的 Bindle。详细信息可以了解一下 Hippo 的官宣博客。
113 |
114 | ```urlpreview
115 | https://deislabs.io/posts/introducing-hippo/
116 | ```
117 |
118 | #### Porter
119 |
120 |
121 |
122 | [Porter](https://porter.sh) 是微软 2020 年初推出的实现前面说过的 CNAB 规范的打包工具,目前是 **CNCF 的沙盒项目**。笔者没有具体用过,大家感兴趣可以自行了解。
123 |
124 | #### WAGI
125 |
126 | [WAGI](https://github.com/deislabs/wagi) (WebAssembly Gateway Interface) 是 Deis Labs 在 WebAssembly 领域的一个很有创新性的实验性项目,于 2020 年 10 月发布。简单来说就是任何编译成 WASI 格式的 WebAssembly 模块,都可以用来处理 HTTP 请求。
127 |
128 | > [WASI](https://github.com/WebAssembly/WASI) (WebAssembly System Interface Resources) 可以简单理解为 WebAssembly 在浏览器之外(主要是服务端)的规范。
129 | >
130 | > WebAssembly 正处在蓬勃发展的阶段,Deis Labs 最近几年在 WebAssembly 领域做了非常多的创新性尝试,但很多尝试都失败了,为数不多目前有不错进展的大概只有 Krustlet 和 WAGI 了。
131 |
132 | #### VSCode 插件
133 |
134 | 另外,Deis Labs 还参与开发了[一系列](https://github.com/deislabs?q=vscode)和 Kubernetes 有关的 VSCode 插件,比如 VSCode 的 [Kubernetes 插件](https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.vscode-kubernetes-tools)。
135 |
136 | 总的来说,**Deis Labs 是真的超级富有创造力,几年时间里给 CNCF 贡献了 7 个项目(还不包括合作的项目)**。给人的感觉是成为 CNCF 项目似乎对他们来说是一件轻而易举的事情。**当然不得不说,Deis Labs 的大部分项目都比较超前,比如 Krustlet,Bindle,WAGI,想法真的都很棒,但是目前受众还不是很多,知道这些项目的人也不多,我们只能用长远的眼光去看待这些项目未来的潜力和价值。**
137 |
138 | ### 合作的项目
139 |
140 | Deis Labs 的项目我们已经在上面讲了十几个了,但还不止如此,其他几个 Deis Labs 参与合作过的项目也非常值得一提:
141 |
142 | - [Service](https://smi-spec.io/)[ Mesh Interface](https://smi-spec.io/) - 【CNCF 项目】我们之前在第一季第二期提到过的 Kubernetes Service Mesh 统一规范,这个规范主要由微软牵头和各大 Service Mesh 厂商联合制定的,微软这边主要就是 Deis Labs 团队的人在参与。
143 | - [Open Service Mesh](https://openservicemesh.io/) - 【CNCF 项目】这个也是微软和其他公司一起遵循 Service Mesh Interface 规范实现的轻量级 Service Mesh 产品,微软这边同样也是 Deis Labs 团队的人在参与。
144 | - [Open Application Model](https://oam.dev) (OAM) - 这是一个微软在 2019 年联合阿里巴巴一起发布的开放应用模型规范,微软这边主要是 Deis Labs 团队的人在参与。这个规范比较抽象,大家感兴趣可以看看[这篇](https://mp.weixin.qq.com/s/SNNrnlSyZQkiSRe2n3k3Aw)[公众号文章](https://mp.weixin.qq.com/s/SNNrnlSyZQkiSRe2n3k3Aw)。
145 |
146 | 不知道大家有有没有注意,Service Mesh Interface、Open Service Mesh 这些项目的官网和 Deis Labs 的很多网页风格都非常类似。没错,这些都是 Deis Labs 设计的,他们的风格都是非常清新活泼,充满活力的感觉。
147 |
148 | ## 核心人物
149 |
150 | 前面讲了那么多 Deis Labs 的项目,接下来重点介绍一下 Deis Labs 的两位核心人物。
151 |
152 | ### Gabe Monroy
153 |
154 | Gabe Monroy 从 OpDemand 到 Engine Yard 的 Deis 一直都是担任 CTO 角色,当初的 Deis 项目主要也是由他在主导。也是他不错的眼光看到了 Matt Butcher 几个人在 Hackthon 上做的那款产品的潜力,在他的推动下才有了后来的 Helm。
155 |
156 | 加入微软后,Gabe Monroy 从 Azure 的首席项目经理 (Partner Program Manager) 升到了产品管理副总裁 (Vice President Of Product Management)。
157 |
158 | 不过,在 2021 年 10 月份,他以 CPO (Chief Product Officer) 的角色[加入了 DigitalOcean](https://investors.digitalocean.com/news/news-details/2021/DigitalOcean-Names-Gabe-Monroy-as-Chief-Product-Officer/default.aspx),并承担了 DigitalOcean 2024 年第一个 10 亿美金营收的重任 (our first billion in revenue in 2024),还有 2030 年 4000 万社区新开发者的重任。一个月多前,Gabe Monroy 在 ProductHunt 上举行了一场 [Ask Me Anything 的问答活动](https://www.producthunt.com/discussions/i-m-gabe-monroy-chief-product-officer-for-digitalocean-ama),他在上面透露他现在是业余农民,现在住在科罗拉多州一个 35 英亩的农场,他和妻子在那里养了很多鸡和家畜。也算是一个充满传奇的人物!
159 |
160 | > 前不久,DigitalOcean [收购了 CSS-Tricks.com](https://www.digitalocean.com/blog/css-tricks-joins-digitalocean) 可能也是 Gabe Monroy 在主导推动。
161 |
162 | 
163 |
164 | ### Matt Butcher
165 |
166 | Matt Butcher 是一个非常极客的工程师,他早期是 Deis 项目的核心贡献者,后来是 Helm,Brigade, Krustlet 等项目的主要作者,也是 Deis Labs 的灵魂人物。上面提到的 CNAB,OAM 等规范也是 Matt Butcher 在主导推动。
167 |
168 | 除了在软件项目上非常高产之外,Matt Butcher 还出过很多书!2016 年一本《给孩子讲 Kubernetes 是什么》(原名 The Illustrated Children’s Guide to Kubernetes)的插画书在国内外开始火起来了,其作者就是 Matt Butcher,现在这本书在 CNCF 官网就[可以看到](https://www.cncf.io/phippy/the-childrens-illustrated-guide-to-kubernetes/)。其他的书包括:
169 |
170 | - 《Mastering OpenLDAP》
171 | - Maning 出版的 《Go In Practice》
172 | - O'Reilly 出版的《Learning Helm》
173 |
174 | 更多书可以看 Matt Butcher 的[博客](http://technosophos.com/)。非常有意思的是,Matt Butcher 本科、硕士、博士都是哲学专业,并没有主修过计算机相关专业,也是一个非常传奇的人物!
175 |
176 | 
177 |
178 | > 还有一个叫 [Matt Farina](http://www.mattfarina.com/) 的人也非常值得介绍,虽然他不在 Deis Labs,但是他和 Matt Butcher 很早就在惠普相识,后来两人合作开发过很多开源项目,还一起出版过至少 3 本书,上面提到的 《Go In Practice》和 《Learning Helm》主要就是他们俩一起写的。
179 | >
180 | >
181 | >
182 | > Matt Farina 早期也参与 Helm 的开发,是 Helm 的主要贡献者之一。说来真的很巧,Matt Farina 后来加入了 Rancher,被 Rancher 老板梁胜安排做一个新项目,这个新项目就叫 Rancher Desktop!Matt Farina 现在就是 Rancher Desktop 的主要负责人,目前他还是 CNCF TOC 的成员。
183 | >
184 | > 我们之前在第一季讲过 Rancher Desktop,感兴趣可以阅读这篇文章了解更多。
185 | > ```urlpreview
186 | > https://2d2d.io/s1/docker/
187 | > ```
188 |
189 | ## 新未来
190 |
191 | 
192 |
193 | 2022 年 1 月,一家名叫 [Fermyon](https://www.fermyon.com/) 的新公司成立了,首轮融资 400 万美金,团队将近 10 位创始成员都来自 Deis Labs,CEO 就是 Matt Butcher。
194 |
195 | > 关于 Fermyon 这个词的含义,官方暂时没有给出具体解答,我和 [@zhanghandong](https://github.com/zhanghandong) 有一个初步探讨,猜测应该和基本粒子`费米子` 有关:
196 | > `费米子`和`玻色子`都是宇宙基本粒子,都有**自旋** (Spin) 属性。但是`费米子`喜欢独来独往,而`玻色子`喜欢共享,用`费米子`来对应 WebAssembly 的沙盒隔离性非常恰到。
197 | > 前几天 Fermyon 发布了他们的 WebAssembly 框架,就叫 [spin](https://github.com/fermyon/spin)。
198 |
199 | 从 Engine Yard 到微软,现在又离开了微软重新开始他们新的征程,几乎还是原班人马,大家都是早已共事多年的好伙伴。过去他们在容器领域崭露头角,这次他们看中的是 WebAssembly 的未来,Fermyon 就是一家全面押注 WebAssembly 的公司,他们把 WebAssembly 称之为云计算的下一波浪潮 (the next wave of cloud computing)。由衷的祝愿他们继续在新的领域开拓创新,取得更大的成就!
200 |
201 |
202 | > 随着 Deis Labs 大部分核心成员都离职了,Deis Labs 未来的命运就不得而知了。
--------------------------------------------------------------------------------
/content/issue-2/2-yc-w22.md:
--------------------------------------------------------------------------------
1 |
2 | 上周 (2022 年 3 月 29 号) YC Winter 2022 Batch 举行了 [Demo Day](https://www.ycombinator.com/blog/meet-the-yc-winter-2022-batch)。此次亮相的 startup 数量也创下了 398 家的新高。Developer Tools 向来是 YC 项目里的热门赛道,这次也不例外,总共有 [30 家](https://www.ycombinator.com/companies?batch=W22&tags=Developer%20Tools) 。
3 |
4 | > 编者注:YC 的投资方式非常特别,每年分为两期,分别是上半年的`冬季营` (Winter Batch) 和下半年的`夏季营` (Summer Batch),一般缩写成 W 或 S 加年份,比如今年`冬季营`是 W22。`Demo Day` 是指获投公司在几分钟内给投资人展示自己产品的路演活动,持续两天,参加 Demo Day 的主要是 YC 邀请的全球各大知名投资机构。
5 |
6 | | 分类 | 数量 |
7 | | ---------------------- | ------ |
8 | | SaaS | 112 |
9 | | Fintech | 103 |
10 | | B2B | 98 |
11 | | Marketplace | 45 |
12 | | Consumer | 39 |
13 | | Ecommerce | 32 |
14 | | **Developer Tools** | **30** |
15 | | Machine Learning | 30 |
16 | | Climate | 27 |
17 | | Artifical Intelligence | 22 |
18 | | Data Engineering | 21 |
19 |
20 | > W22 部分投资领域,其中 `Developer Tools` 占比大概 7%。
21 |
22 | 下面我们就按照字母顺序简单介绍一下其中的一些公司。
23 |
24 | ## BotCity
25 |
26 | 
27 |
28 | 官网:[https://botcity.dev](https://botcity.dev)
29 |
30 | BotCity 是一家成立于巴西,对标 [UiPath](https://www.uipath.com) 的 RPA 软件公司,官方的简介是 `UiPath for developers`。他的亮点是结合了计算机视觉来识别用户 UI 操作交互,帮助用户自动生成 RPA 代码。
31 | 和 Excel 的宏录制 (Macro Recorder) 也比较像,不过借助于 Computer Vision,就可以做一个更加通用的方案。
32 |
33 | > 编者注:UiPath 是 RPA 软件独角兽,已于 2021 年上市。RPA 是 Robotic Process Automation 的缩写,简单来说 RPA 软件可以帮助用户生成一个类似按键精灵的机器人,替代重复繁琐的手工操作。但编者认为 RPA 市场相对来说不算特别大,而且近年来一定程度上受到了低代码和无代码技术的影响。国内目前还没有诞生一家类似 UiPath 这样的公司,预计应该也很难诞生。
34 |
35 | ## Brainboard
36 |
37 | 
38 |
39 | 官网:[https://www.brainboard.co](https://www.brainboard.co)
40 |
41 | Brainboard 是一家成立于法国的公司。鉴于 HashiCorp 的 Terraform 已经成为了多云部署的业界标准,但手动编写 Terraform 文件也算是一个比较繁琐的过程。Brainboard 的产品则完全是基于 Terraform,他们提供一个可视化设计 Cloud Infra 的平台,然后把设计好的架构图自动生成 Terraform 文件(术语叫 reverse terraform)。这种方式类似于 Design-to-Code,从 Figma 生成 React 代码。但在 infra 领域,反 Terraform 的思路笔者持保留态度。或许聚焦在基于 Terraform 文件做可视化展示的切入会更好一些,类似于可视化展示网络拓扑,数据库 Schema。
42 |
43 | > W22 这一期的另外一家叫 [Massdriver](https://www.massdriver.cloud/) 的公司也是在做类似的事情。
44 |
45 | ## Cogram
46 |
47 | 
48 |
49 | 官网:[https://cogram.com](https://cogram.com)
50 |
51 | Cogram 是一家硅谷创业公司,他们的产品是可以让用户使用自然语言来生成 SQL。这个挺有用的,因为有些复杂的 SQL 语句,即使让熟悉 SQL 的工程师,数据分析师来写也是挺困难的。
52 |
53 | Cogram 也让笔者联想到了 AppleScript,差别在于前者是 AI based,而后者是 rule based,这就是时代的演进吧。
54 |
55 | > 编者注:自从 [OpenAI](https://openai.com) 发布诸多 AI 模型之后(特别是 GPT-3),全球短时间内涌现出了大量基于 OpenAI 的 AI 创业公司,编者觉得 Cogram 很大可能是基于 OpenAI 的。W22 这一期另外一家叫 [Mintlify](https://mintlify.com) 的公司应该也是基于 OpenAI 的,他们的产品是 AI 辅助生成注释和文档。
56 |
57 | ## Convoy
58 |
59 | 
60 |
61 | 官网:[https://getconvoy.io](https://getconvoy.io)
62 |
63 | Convoy 是一家诞生于尼日利亚的初创公司,他们做的是一个 Webhook-as-a-Service 的产品,这是最近业界涌现出来的一个新品类,之前还看到过一家 [hookdeck](https://hookdeck.com) 在做类似的事情。这块随着 Webhook 成为应用间对接的事实标准,也就成为了应用开发的刚需。Convoy 的特点在于开源,是 Golang + VueJS 的技术栈。笔者觉得在 API 赛道相对拥挤的情况下,Webhook infra 是一个更好的切入点。整个业界这块还没有约定俗成的方案,因为 Convoy 有开源的优势,值得后期关注。就像 Convoy 自己所言:
64 |
65 | > Essentially, just like Redis is to key-value storage, and Gitlab is to DevOps, Convoy is to webhooks。
66 |
67 | ## GrowthBook
68 |
69 | 
70 |
71 | 官网:[https://www.growthbook.io](https://www.growthbook.io)
72 |
73 | GrowthBook 是一家做开源的 Feature Flag, A/B 测试解决方案的公司。Feature Flag 和 A/B 测试也是研发工具链里的重要一环,业界商业化比较成熟的有 [LaunchDarkly](https://launchdarkly.com/), [Split](https://www.split.io/)。而开源方案里,比较早做的是 [unleash](https://www.getunleash.io/) (也是 GitLab 内置的方案),也有后起之秀 [Flagsmith](https://flagsmith.com/)。国内也有 [敏捷开关](https://www.feature-flags.co/) 正在做这块。
74 |
75 | ## Hydra
76 |
77 | 
78 |
79 | 官网:[https://hydras.io](https://hydras.io)
80 |
81 | Hydra 是硅谷一家基于 PostgreSQL 做数仓的公司。通过 PostgreSQL 访问 OLAP 数据库,目前只支持 Snowflake。实现方式是自己实现了一个 PostgreSQL extension (这点和 [TimescaleDB](https://timescale.com) 类似),而不是采用了 PostgreSQL FDW (Foreign Data Wrapper),根据 [CTO 的说法](https://news.ycombinator.com/item?id=30443033),主要是 FDW 仍然不能很好地支持计算下推 (push down),导致稍微复杂一点的 query 执行效率不行。Hydra 也提供了 HTAP 实现的另一种思路,把 OLAP 外包给了其他专门的 AP 系统。当然这也需要数据库本身扩展性足够才行,目前市面上也只有 PostgreSQL 可以了。
82 |
83 | > 编者注:Tianzhou 写了一篇更详细介绍 Hydra 的文章,感兴趣可以点击阅读。
84 | >
85 | > ```urlpreview
86 | > https://mp.weixin.qq.com/s/4UCAAtxLY1YRoevl5ACQ-g
87 | > ```
88 |
89 | ## Nimbus
90 |
91 | 
92 |
93 | 官网:[https://www.usenimbus.com](https://www.usenimbus.com)
94 |
95 | Nimbus 是一家成立于硅谷的初创公司,他们的产品是云端开发环境,这是一个国人主导的团队(编者注:他们的一位联合创始人是华人,前 TikTok 北美员工)。云端研发喊了很久了,业界做的比较早的有 Gitpod,后来又有 GitHub Codespaces,最近也看到几家新公司在做。
96 |
97 | 可用云端开发环境的难点在于:
98 |
99 | 1. 提供和本地开发类似的 UI 响应速度。
100 | 2. 微服务架构下的 service wiring。
101 | 3. 像数据库这样有状态的数据准备和生命周期管理。
102 |
103 | 第 **1** 点,[VSCode Remote 模式](https://code.visualstudio.com/docs/remote/remote-overview) 算是基本解决了,但 **2** 和 **3** 还是业界尚未解决的问题。看 Nimbus 官网也尚未提到这方面的工作,期待后续的进展。
104 |
105 | ## Reality Defender
106 |
107 | 
108 |
109 | 官网:[https://www.realitydefender.ai](https://www.realitydefender.ai)
110 |
111 | 随着 AI 技术的快速发展,互联网上也不断涌现出了很多通过深度学习等技术合成的虚假内容,比如虚假图片、虚假视频、虚假音频等等,这些被统称为 Deep fake。Deep fake 的可怕之处是人很难辨别这些内容的真实性。Reality Defender 这家公司就是专门来识别这些 Deep fake 的。Reality Defender 最初是由 Microsoft 和 [AI Foundation](https://aifoundation.com) 孵化的项目。
112 |
113 | ## Requestly
114 |
115 | 
116 |
117 | 官网:[https://requestly.io](https://requestly.io)
118 |
119 | Requestly 是一款可以用来修改 HTTP 请求,mock 回复,模拟各种异常,测试应用的产品。看到这个介绍,相信有些同学就会想到 Postman,巧合的是这家公司也来自印度,也是从 Chrome 插件入手。
120 |
121 | ```quote
122 | author = "Folyd"
123 | bio = "《TO-D 杂志》责任编辑"
124 | content = """前不久 Requestly 创始人在 Slack 说有 900+ 的用户是字节跳动员工,不过没有一个付费的。😅
125 | 
126 | 截图来源:[@Anne阿伦](https://twitter.com/anneincoding)
127 | """
128 | ```
129 |
130 | ## Shaped
131 |
132 | 
133 |
134 | 官网:[https://www.shaped.ai](https://www.shaped.ai)
135 |
136 | Shaped 是一家提供 AI 推荐算法的初创公司,成立于纽约,据介绍团队初始成员来源于 Facebook 推荐团队。把内容作为输入,内容排序作为输出,等于是给公司打造了一支抖音推荐算法团队。
137 |
138 | ## Vessel
139 |
140 | 
141 |
142 | 官网:[https://www.vessel.land](https://www.vessel.land)
143 |
144 | Vessel 是一家成立于美国加州的初创公司,他们提供了一套统一的 API 来打通不同 CRM 工具之间的数据。
145 |
146 | ## 总结
147 |
148 | 篇幅所限,30 家公司也无法一一罗列,如读者所见相当一部分的公司都是 API 领域的公司,简单做一些总结:
149 |
150 | 1. Developer Tools 领域,我们可以把 API 看成水流,各类玩家就分布在水流的上下游。API 生态里既有 API 提供商提供水源,也有 API Gateway 作为水闸,比如 [Kong 和 APISIX](https://2d2d.io/s1/kong-vs-apisix/)。
151 | 2. API 一开始是涓涓细流,接着就汇成大江大河,像 FinTech 领域的 [Plaid](https://plaid.com),上文提到想做 CRM 领域 Plaid 的 Vessel,以及还没列出来的建筑施工领域 Plaid 的 [Agave](https://www.agaveapi.com/)。
152 | 3. 垂直领域可以做的 API 机会还有不少,除了文中已经罗列的,这次 W22 batch 里还有提供类似 Figma 多人协作能力的 [Snippyly](https://snippyly.com/),通过卫星图像来帮助挖真矿的 [KorrAI](https://www.korrai.com/),语言识别和信息提取 API [Speechly](https://www.speechly.com/), 基于 AI 的医疗影像标注 [RedBrick API](https://redbrickai.com/),提供通用 ML 能力 API 的 [slai](https://www.slai.io/),反洗钱 API [Flagright](https://www.flagright.com/),甚至是给游戏提供经济系统的 API [WorldQL](https://www.worldql.com/) 等等。
153 |
154 | 流水不争先,争的是滔滔不绝。在池子里自己玩,即使建得再早,扩得再大,终究会成为一潭死水。要能滔滔不绝,还是需要汇入整个水系。
155 |
156 | 无论是 Developer Tools 还是通用 SaaS 都是这个道理。
157 |
158 | > 本文由 [Bytebase](https://bytebase.com) CEO `@Tianzhou` 投稿,责任编辑 `@Folyd` 校对补充。
159 |
160 |
--------------------------------------------------------------------------------
/content/issue-2/3-warp.md:
--------------------------------------------------------------------------------
1 | 每个工程师电脑里面都有两款必不可少的软件,一款为代码编辑器,另一款就是终端 (Terminal)。前者在过去几十年里几乎从来没有停止过创新,诞生过的代码编辑器产品可谓数不胜数。目前这部分市场份额虽然已经被 JetBrians 的商业 IDE 和微软开源免费的 VS Code 所垄断,但人们依然在乐此不彼的不断折腾,不断打造新的代码编辑器。而后者则完全是另外一番凄惨景象,过去几十年来终端软件的产品形态、交互方式等等各方面几乎没有大改进。可能大多数人似乎对现有终端软件习以为常了,以至于形成了某种思维定式:现在的终端已经够用了呀,还有啥好创新的?而本期的主角 Warp 却不这样认为。他们认为终端软件还大有可为,为此他们要打造一款属于 21 世纪的终端。
2 |
3 | ## 终端的困境
4 |
5 |
6 |
7 |
8 |
9 | 终端软件从现代计算机诞生以来就存在了,在 GUI 图形化软件被发明以前,终端几乎是人和计算机交互的唯一方式。一直到今天,每个人的电脑里面默认都会自带一款终端软件,这足以说明终端的重要性。但是,如今的终端就像开头提到的一样,其实陷入了某种困境。
10 |
11 | - **操作系统开发商没有足够动力去优化内置的终端软件**。系统内置的终端只保证能用,却不保证好用。因为终端的受众主要是工程师,其他人群几乎用不上,而工程师在所有用户中占比太小,不值得操作系统厂商花额外的成本去给你提供一个更好的终端软件。(最近几年微软良心发现,开发了新的 [Windows Terminal](https://github.com/microsoft/terminal),值得称赞)
12 | - **社区开发的终端软件难以盈利**。因为操作系统默认提供了一个免费能用的终端,大家都习惯了终端软件就应该是免费的,所以就算社区提供了更好的终端替代品,却依然难以商业化。正是因为难以盈利,就会有越少的开发者去开发更好的终端。为什么我们能看到很多付费的 Git GUI 软件,却很少发现付费的终端软件?我想这就是可能原因之一。
13 | - **痛点一直有,但解决方案太分散,门槛较高**。系统自带的终端软件有非常多的槽点,社区针对不同的痛点诞生了不同的工具来解决。默认的 bash 不好用,于是诞生了 zsh 和 fish;zsh 默认的配置太繁琐,UI 不好看,于是诞生了傻瓜式的 [oh-my-zsh](https://ohmyz.sh);终端的 session 不能保存,不能共享,于是有了 [tmux](https://github.com/tmux/tmux);终端命令行提示不够友好,不够智能,于是有了 [Fig](https://fig.io) 。总的来说,虽然每个痛点都有对应的解决方案,但是最大的问题是真的很分散,而且有些方案门槛比较高,比如 tmux。
14 | - **懒惰是天性,能用就行**。我们不得不承认,我们都很懒。绝大多数人都不会花额外的时间去学习掌握这些工具,大都数人的选择是妥协,能用就行。
15 |
16 | 以上种种,让**终端软件一直处在他的困境之中,以至于在几十年时间里,创新乏善可陈,用户安于现状,无人愿意打破僵局**。直到 Warp 的出现,这一状况似乎有了新的变局。
17 |
18 | ## Warp
19 |
20 | 
21 |
22 | Warp 是一家创立于 2020 年的公司,创始人兼 CEO Zach Lloyd 是前 Google 资深工程师,Google Docs / Sheets 的 tech leader,离开 Google 后他有两次创业经验。之所以创立 Warp 是因为他看到了终端软件的这一困境,40 多年来几乎没有太大创新,于是决定以创业的形式打造一款全新的终端。
23 |
24 | ```urlpreview
25 | https://www.warp.dev/blog/introducing-warp
26 | ```
27 |
28 | 笔者初步体验了一下 Warp,整体来说真的很不错,有不少细节值得称赞。下面重点介绍其中的几项:
29 |
30 | ### Block
31 |
32 | Block 真的是 Warp 的一个很不错的创新。在 Warp 里面,每一次命令的输入输出都是一个 Block。不像传统的终端,所有命令和输出都混在一起,肉眼很难区分相邻两条命令的内容,也不方便往上查找之前的命令。Warp 的 Block 很好的解决了这个问题。
33 |
34 | 
35 |
36 | 而且 Block 提供了很多非常实用的功能,比如它把 Copy 功能划分特别细,你可以选择 *Copy command, output, prompt, Working Directory* 等等,还可以把当前 block 以链接的形式分享出去。*Find Within Block* 也是一个非常棒的功能!
37 |
38 | ### Workflow
39 |
40 | Warp 提供了一个 Workflow 的功能,简单来说就是把常用的命令创建成模板,使用的时候把参数替换一下就可以了。Warp 还专门搞了一个 [commands.dev](https://commands.dev) 的站点,每个人都可以制作和分享自己的 Workflow。
41 |
42 | > Warp 还提供了一个 AI 功能,可以用自然语言描述一下你要做的事情,Warp 会生成相应的命令。(应该也是使用了 OpenAI 的 API)
43 |
44 | 
45 |
46 | ### 进阶版 Fig
47 |
48 | Fig 是这两年来笔者看到的终端软件领域最大创新的产品之一,他有很不错的命令行提示,支持各大主流终端软件,其中尚未发布的 **App Ecosystem for Terminal** 更是让笔者眼前一亮,非常惊艳!
49 |
50 | Sorry, your browser doesn't support embedded videos.
51 |
52 | 而 Warp 确实是有借鉴了 Fig 的功能,他的命令行补全直接使用了 Fig 的 [completion specs](https://github.com/withfig/autocomplete),不过因为 Warp 本身是一个终端,他把命令行补全体验做得比 Fig 更好,更极致。上图 Fig 的 **App Ecosystem** 我想 Warp 肯定也会做,甚至会做得更方便。
53 |
54 | > 因为 Fig 不是终端,只是一个终端辅助软件,每次都需要输入 `fig` 命令才能使用 **App Ecosystem** 的功能,Warp 或许能做到更极致。未来 Warp 收购 Fig 也不是不可能的事情。
55 |
56 | ### 团队协作
57 |
58 | 过去的终端软件自始至终都是一个单人使用的本地软件,最近几年很多工具都有了团队协作功能,那么**终端软件也需要团队协作吗?Warp 的 CEO 认为是的**:*Every productivity application is more powerful when it’s collaborative. I’m confident that the terminal is no exception.* 他还提到终端的团队协作不仅仅是 Google Docs, Figma 那种实时协作,还有异步协作,比如共享终端、命令行、设置、历史记录等等方式。目前团队协作功能还未发布,笔者也未曾体验到,所以我们只能拭目以待了。
59 |
60 | 
61 |
62 | ### 其他特点
63 |
64 | - **现代化的设计**。Warp 整体设计充满现代感,UI 颜值也不错,毕竟他们专门有一个 Founding Designer.
65 | - **开箱即用**。Warp CEO 之前写了一篇博客,讲到他们的 [8 条产品准则](https://www.warp.dev/blog/how-we-design-warp-our-product-philosophy),其中包括 `backwards compatible` 和 `out-of-the-box`。笔者在初次使用过程中也确实体会到了这一点,不需要额外繁琐的配置,就能跟我之前使用的终端习惯非常接近,毫无违和感。
66 | - **高性能**。Warp 最初的原型是使用 Electron 开发,但因为性能太糟糕,所以转用了 Rust 开发 + GPU 渲染。关于具体的 Warp 技术栈官方写了一篇 [How Warp Works](https://www.warp.dev/blog/how-warp-works) 的文章,感兴趣可以自行了解。
67 |
68 | ## 商业模式
69 |
70 | Warp 在他们的 [FAQ](https://www.warp.dev/faq) 中提到了他们的商业模式:**对个人免费,团队协作功能需要付费**。这个模式也是目前主流 SaaS 软件的盈利模式,在过去各大 SaaS 公司得到了很好的验证。笔者认为,Warp 选择这个模式是非常适合的。我们前面讲到,个人需付费的终端是很难让用户买单的,所以不能针对个人用户收费。其次,终端在开发者领域是一个受众非常广的软件,他的用户基数会非常大,企业内的工程师必不可少的会用到 Warp。**至于 Warp 后期企业付费客户能做到多大,ARR 营收能达到多少,就要看他提供的团队协作功能是不是真正能解决能企业内的需求了。**
71 |
72 | ## 融资情况
73 |
74 | 
75 |
76 | Warp 目前总共获得了两轮融资,分别是 2021 年 1 月,GV (Google Ventures) 领投的种子轮 600 万美金。最新一轮是 2022 年 4 月 5 号 1700 万美金 A 轮,主要是科技圈几位知名人物的个人投资,其中包括 Figma 的创始人及 CEO [Dylan Field](https://www.linkedin.com/in/dylanfield/) (A 轮领投),AirBnB、Pinterest、Stripe 和 Square 的早期投资人 [Elad Gil](https://www.linkedin.com/in/eladgil/),LinkedIn 执行董事长兼前 CEO [Jeff Weiner](https://www.linkedin.com/in/jeffweiner08/),还有 Salesforce 创始人兼 CEO [Marc Benioff](https://www.linkedin.com/in/marcbenioff/)。
77 |
78 | ```urlpreview
79 | https://www.linkedin.com/pulse/why-im-leading-warps-series-dylan-field
80 | ```
81 |
82 | 两轮融资总共 2300 万美金,对于一个偏工具类产品来说确实是非常可观。资本可不是慈善,两笔融资或许跟 Warp 创始人个人人脉有关,但更重要的是 Warp 的产品实力和他们的愿景能让资本买单。终端软件过去几十年的一成不变,的确需要一场革新。这场革新或许将由 Warp 来书写,资本便是这场革新的催化剂。
83 |
84 | ## 总结
85 |
86 | Warp 的这笔融资最近在国内也吸引了不少开发者的注意,大家都会诧异为什么“老掉牙”的终端软件还能获得如此大笔融资?我们很少去思考过为什么终端软件会“老掉牙”?他是不是就该“老掉牙”?这也给笔者一个小小的启发:`往往被大多数人所忽略的场景,正好是非常好的创新之处。`另一方面,这件事或许会让国内的资本更多的关注到开发者赛道,或许也能激发更多开发者领域的创新者诞生。最后引用张汉东在另一篇 Warp 文章结尾写的一段话:
87 |
88 | > Warp 给我的感触最深的不是它的功能有多丰富强大,也不是它巨大的商业价值,而是,它很可能标志着国外软件现代化革命浪潮的开始。我们中国能赶上这一波吗?
89 | >
90 | > 山形海岸已变迁,云垒故道俱为烟。吾辈登临应有意,敢为李杜续新篇。
91 |
92 |
93 |
94 | > 本文最初由 [张汉东](https://github.com/zhanghandong) 投稿,后由笔者从另外一个角度重新编写。标题中`终端的困境`受张汉东的文章所启发,在此再次感谢张汉东,也强烈推荐阅读他的文章。
95 |
96 | ```urlpreview, image:false
97 | https://mp.weixin.qq.com/s/KOVqdCnf73ptg8dmLYf5Aw
98 | ```
99 |
--------------------------------------------------------------------------------
/content/issue-2/zine.toml:
--------------------------------------------------------------------------------
1 | slug = "s2"
2 | number = 2
3 | title = "第二季"
4 | publish = true
5 |
6 | [[article]]
7 | slug = "deislabs"
8 | file = "1-deislabs.md"
9 | title = "微软 Deis Labs 的故事"
10 | author = "Folyd"
11 | cover = "/static/s2/1/deislabs.png"
12 | pub_date = "2022-04-02"
13 | featured = true
14 | publish = true
15 |
16 | [[article]]
17 | slug = "yc-w22"
18 | file = "2-yc-w22.md"
19 | title = "YC 2022 冬季营 DevTools 公司一览"
20 | author = "Tianzhou"
21 | cover = "/static/s2/2/yc-w22.png"
22 | pub_date = "2022-04-06"
23 | featured = true
24 | publish = true
25 |
26 | [[article]]
27 | slug = "warp"
28 | file = "3-warp.md"
29 | title = "终端的困境与 Warp 的野心"
30 | author = "Folyd"
31 | cover = "/static/s2/3/warp-cover.jpg"
32 | pub_date = "2022-04-11"
33 | featured = true
34 | publish = true
35 |
--------------------------------------------------------------------------------
/pages/about.md:
--------------------------------------------------------------------------------
1 |
2 | # 关于杂志
3 |
4 | **《TO-D 杂志》** 是一个**专注于探讨全球 To-D 领域相关产品、创业公司、融资等资讯的开源独立杂志**。
5 |
6 | > To-D 即 To Developers,主要指面向开发者市场的创业活动。但 To-D 并非一个独立的领域划分,它通常和 To-C, To-B 可能存在重叠。不管最终产生付费行为的是开发者个人,还是企业,只要其主要目标使用人群为 Developers 都算 To-D 产品。大家熟知的 Jetbrains, Postman, GitLab 等都属于 To-D 产品。
7 |
8 | ## 开源独立
9 |
10 | 开源独立的意思**这份杂志所有内容全部开源在 Github,每个人都可以基于 Github 的 PR 流程在上面给《TO-D 杂志》提交自己的文章和评论**。这里没有需要扫码关注的公众号,没有搜索引擎不能检索的页面,这里的内容不属于任何一家中心化的大公司,只属于开放的互联网(但是`内容版权依然属于原作者,未经授权请勿转载`)。
11 |
12 | ## 由来
13 |
14 | 《TO-D 杂志》最早为诞生在字节跳动内部的一份名为《To-D 观察室》的飞书文档,我从 2021 年 12 月 23 号开始编写第一篇文章,每周在内网更新。目标读者主要为字节跳动内部的工程师、产品经理和对开发者领域感兴趣的同学,并且受到大家的众多好评。后来于 2022 年 3 月 22 号开始在这里正式对外发表。
15 |
16 | 更多关于本杂志的由来,初衷,可以阅读第一季的最后一篇文章:[为什么要写《TO-D 杂志》?
17 | ](/s1/why)
18 |
19 |
20 | ## 责任编辑
21 |
22 | 目前责任编辑主要只有一个人,后面如有变动会及时更新:
23 |
24 | - `@Folyd`
25 |
26 |
27 | ## 常见问题
28 |
29 | 更多关于本杂志的常见问题,欢迎浏览 [常见问题页面](/faq)。
30 |
--------------------------------------------------------------------------------
/pages/blog.md:
--------------------------------------------------------------------------------
1 |
2 | # 博客列表
3 |
4 | ## 2022-06-09 文章页面增加了评论功能
5 |
6 | Zine 更新到 [0.6 版](https://github.com/zineland/zine/releases/tag/v0.6.0)之后,支持扩展文章页面了,于是我基于 [Giscus](https://giscus.app/) 加了一个评论功能。完全是基于 Github Discussion 的,欢迎大家点赞评论。👏👏
7 |
8 | ## 2022-04-21 上线了作者页面
9 |
10 | 这是我的页面:[https://2d2d.io/@folyd](https://2d2d.io/@folyd)
11 |
12 | ## 2022-04-05 加上了读者好评页面
13 |
14 | 欢迎查看 [读者好评](/review)。
15 |
16 | ## 2022-04-02 加上了个人赞助
17 |
18 | 如果大家喜欢这份杂志,可以考虑小小的赞助我,让这份杂志可以长久的更新下去,感谢大家的支持!
19 |
20 | [点击赞助](/sponsor)
21 |
22 | ## [2022-03-15 为什么要写《TO-D 杂志》?](/s1/why)
23 |
24 | 这是第一篇博客,也是第一季最后一篇文章。里面讲述了《TO-D 杂志》的由来,以及我为什么要写这份杂志。
25 |
--------------------------------------------------------------------------------
/pages/faq.md:
--------------------------------------------------------------------------------
1 | # 常见问题
2 |
3 | ## 《TO-D 杂志》不是什么?
4 |
5 | 《TO-D 杂志》**不是一份专注于技术讨论和分享的杂志**,而是 To-D 领域产品、创业公司、融资等资讯的专栏杂志。技术分享讨论的社区和网站已经非常多了,《TO-D 杂志》并不是这样的平台。
6 |
7 | 《TO-D 杂志》**也不是一个只专注于开源领域的杂志**,一切跟 To-D 相关的公司、产品,不管是开源还是闭源,包括开发者个人都是我们关注的对象。
8 |
9 | 《TO-D 杂志》**还不是一个全方面关注 SaaS 领域的杂志**,像 `Notion`, `Grammarly` 等这些产品虽然备受瞩目,但其和开发者领域关系不是很大,也不是我们重点关注的对象。
10 |
11 | ## 《TO-D 杂志》的更新频率如何?
12 |
13 | 《TO-D 杂志》希望做到每周一更,春节、国庆假期例外。如有拖更,纯属正常。
14 |
15 | ## 如何订阅《TO-D 杂志》?
16 |
17 | 欢迎使用页面尾部提到的 RSS 或 Telegram 方式订阅。
18 |
19 | > 目前不支持邮件订阅,希望能得到大家的赞助。
20 |
21 | ## 为什么没有微信公众号?
22 |
23 | 可以阅读第一季的最后一篇文章:[为什么要写《TO-D 杂志》?
24 | ](/s1/why) 了解。
25 |
26 | ## 《TO-D 杂志》是基于什么搭建的?
27 |
28 | 《TO-D 杂志》就是一份完全基于 [Zine](https://github.com/zineland/zine) 编写的开源独立杂志。Zine 是我为了发布《TO-D 杂志》,专门使用 Rust 开发的了一个帮助每个人构建自己杂志的开源软件。
29 |
30 | ```urlpreview
31 | https://github.com/zineland/zine
32 | ```
33 |
34 | ## 怎样投稿?
35 |
36 | 《TO-D 杂志》完全开源在 Github 上,只需要通过 PR 协作的方式提交文章即可。责任编辑(目前只有我)和任何人都可以 Review 你的文章,对文章风格和内容给出必要的改善建议,但只有责任编辑才有权限通过你的文章。需要申明的是:**我们不会 100% 保证通过你的文章,对内容和风格不符合要求的文章,我们有权利拒绝。**
37 |
38 | ## 怎样评论?
39 |
40 | `Zine` 的理念是**精彩点评是杂志内容的一部分**,所以 `Zine` 并没有采用那些基于 Github issue 或第三方平台的评论控件。给 `Zine` 的文章提点评也需要提 PR,**审核通过的点评会和文章内容一样被渲染成静态 HTML,可以被搜索引擎检索到。**
41 |
42 | 具体方式是在文章的 Markdown 文件最后面按如下格式添加点评内容:
43 |
44 | ```
45 | +++
46 |
47 | [[comment]]
48 | author = "Bob"
49 | bio = "A developer"
50 | content = "The cool comment"
51 |
52 | +++
53 | ```
54 |
55 | > 上面其实是简单易懂的 [toml](https://toml.io) 格式。`bio` 和 `content` 支持写 Markdown。
56 |
57 | 具体评论之后的效果,可以查看这篇文章:
58 | ```urlpreview
59 | https://2d2d.io/s2/yc-w22/
60 | ```
--------------------------------------------------------------------------------
/pages/review.md:
--------------------------------------------------------------------------------
1 |
2 | # 读者好评
3 |
4 |
5 | 很高兴 《TO-D 杂志》受到了大家的喜欢,这里例举了部分读者的好评。如果你也想发表点评,欢迎
在这里提 PR ,再次感谢大家!
6 |
7 |
8 | ### 杜頔康
9 |
10 | > 金沙江创投投资人
11 |
12 | 调研 wasm 过程中发现的高品质专栏,对 Fermyon 的前身 Deis Lab 的历史进行了深入的挖掘,沿着脉络也透视出 Matt 看好新方向的原因。遗憾这么晚才了解到 TO-D,感谢作者们分享前瞻又有趣的开发者江湖。
13 |
14 | ### 张汉东
15 |
16 | > 国内知名 Rust 社区布道者,《Rust 编程之道》作者。
17 | >
18 | > 内容引用自这条[推特](https://twitter.com/blackanger/status/1510260673041035264)。
19 |
20 | 感觉 TO-D 杂志的内容非常有价值,能让人深刻理解这些开源项目背后的动机,这比单看他们的开源项目可有趣的多。话说回来,我觉得 Fermyon 的成立,应该是 deislabs 团队这这几年尝试的过程中看到了一些新的风口,他们的项目应该多多关注。
21 |
22 | ### 天舟
23 |
24 | > [Bytebase](https://bytebase.com) CEO
25 |
26 | 今天发现个国内写 DevTools 的宝藏专栏,起手就是 Retool,一看就是有货的。能找到国内*真正*研究 DevTools 的同路人真是很好。😊
27 |
28 |
29 | ### Lynwee
30 |
31 | > 引用自这条[推特](https://twitter.com/lynweehou/status/1510312342441013250)。
32 |
33 | 没想到第二季来的这么快,更没想到的是第二季的第一篇挖掘的信息深度超出预料。同时,也可能隐含了未来技术领域的一个新方向。
34 |
35 | ### kanner
36 |
37 | > 来自字节跳动内网读者。
38 |
39 | 习惯每周等更,内容如小说般精彩
--------------------------------------------------------------------------------
/pages/sponsor.md:
--------------------------------------------------------------------------------
1 |
2 | # 赞助支持
3 |
4 | 如果你觉得《TO-D 杂志》对你有帮助,希望考虑赞助支持我们,让这份杂志可以持久的更新下去。
5 |
6 | 目前我们支持的赞助方式有如下几种:
7 |
8 | ## 个人赞助
9 |
10 | - Github Sponsor: [@Folyd](https://github.com/sponsors/Folyd)
11 | - 爱发电:[https://afdian.net/@folyd](https://afdian.net/@folyd)
12 | - Paypal: [https://paypal.me/wichna](https://paypal.me/wichna)
13 |
14 | ## 资源赞助
15 |
16 | - **设计 Logo,优化 UI 和交互**
17 |
18 | 《TO-D 杂志》的 UI 和交互都是我自己一个人设计搞定的,由于我并非专业的设计师,很多地方设计可能不合理,如果您有更好的建议,欢迎给我提意见帮忙改善。
19 |
20 | 另外这份杂志还没有 Logo,如果您愿意赞助一个好看的 Logo 的话也感激不尽。
21 |
22 | - **CDN**
23 |
24 | 《TO-D 杂志》完全是一个静态网页,里面的内容全部是 HTML、CSS、JS 和图片,为了优化大家的访问速度,最佳的方式是托管在国内的 CDN。
25 |
26 | - **邮件发送服务**
27 |
28 | 《TO-D 杂志》还不支持邮件订阅,主要在于好的邮件发送服务需要付费(价格不算很贵),如果能得到邮件服务的赞助,大家就能尽快通过邮件订阅了。
29 |
30 | - ~~**Crunchbase Pro 账号**~~
31 |
32 | [Crunchbase](https://www.crunchbase.com/) 是国外一个著名的公司资料、投融资等相关信息的检索网站,如果您赞助 Crunchbase 的账号,将更方便我们调研国外的公司。目前最低的价格是 $29 / 月,可能有点贵。
33 |
34 | **以上赞助会在本杂志合适位置标明感谢(除非您选择不署名)。**
35 |
36 | ## 互惠赞助
37 |
38 | 互惠赞助有如下几种:
39 |
40 | 1. 杂志上的某篇文章可能与您的公司或产品有利益相关,比如您们是竞品或国内的对标产品,您想通过这篇文章触达更多的精准目标用户,就非常适合赞助我们。我们会在这边文章中写上合适的话术来推荐您的产品。
41 | 2. 您的公司可以成为某一季的赞助商,或者成为这个杂志的赞助商,我们将分别在这一季和杂志的合适位置添加您的 Logo 并标明感谢。
42 |
43 |
--------------------------------------------------------------------------------
/static/2d2d.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/2d2d.png
--------------------------------------------------------------------------------
/static/avatar/folyd.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/avatar/folyd.jpg
--------------------------------------------------------------------------------
/static/avatar/tianzhou.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/avatar/tianzhou.jpg
--------------------------------------------------------------------------------
/static/footer.css:
--------------------------------------------------------------------------------
1 | *,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.tw-container{width:100%}@media (min-width:640px){.tw-container{max-width:640px}}@media (min-width:768px){.tw-container{max-width:768px}}@media (min-width:1024px){.tw-container{max-width:1024px}}@media (min-width:1280px){.tw-container{max-width:1280px}}@media (min-width:1536px){.tw-container{max-width:1536px}}.tw-absolute{position:absolute}.tw-top-16{top:4rem}.tw-bottom-0{bottom:0}.tw-left-0{left:0}.tw-right-0{right:0}.tw-mx-auto{margin-left:auto;margin-right:auto}.tw-my-4{margin-bottom:1rem;margin-top:1rem}.tw-my-2{margin-bottom:.5rem;margin-top:.5rem}.tw-mb-28{margin-bottom:7rem}.tw-mb-4{margin-bottom:1rem}.tw-mt-12{margin-top:3rem}.tw-block{display:block}.tw-flex{display:flex}.tw-h-5{height:1.25rem}.tw-h-36{height:9rem}.tw-w-12{width:3rem}.tw-w-5{width:1.25rem}.tw-max-w-sm{max-width:24rem}.tw-grow{flex-grow:1}.tw-translate-y-\[-8rem\]{--tw-translate-y:-8rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.tw-flex-col{flex-direction:column}.tw-justify-center{justify-content:center}.tw-border-2{border-width:2px}.tw-border-solid{border-style:solid}.tw-border-\[\#ffb52f\]{--tw-border-opacity:1;border-color:rgb(255 181 47/var(--tw-border-opacity))}.tw-bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity))}.tw-p-10{padding:2.5rem}.tw-p-4{padding:1rem}.tw-py-3{padding-bottom:.75rem;padding-top:.75rem}.tw-px-2{padding-left:.5rem;padding-right:.5rem}.tw-py-6{padding-bottom:1.5rem;padding-top:1.5rem}.tw-pt-20{padding-top:5rem}.tw-pt-12{padding-top:3rem}.tw-text-center{text-align:center}.tw-text-sm{font-size:.875rem;line-height:1.25rem}.tw-text-4xl{font-size:2.25rem;line-height:2.5rem}.tw-text-xl{font-size:1.25rem;line-height:1.75rem}.tw-text-xs{font-size:.75rem;line-height:1rem}.tw-font-bold{font-weight:700}.tw-text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity))}.tw-text-slate-100{--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity))}.tw-text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.hover\:tw-underline:hover{-webkit-text-decoration-line:underline;text-decoration-line:underline}@media (min-width:640px){.sm\:tw-flex-row{flex-direction:row}.sm\:tw-justify-around{justify-content:space-around}.sm\:tw-pt-0{padding-top:0}}@media (min-width:768px){.md\:tw-px-4{padding-left:1rem;padding-right:1rem}.md\:tw-text-2xl{font-size:1.5rem;line-height:2rem}}
--------------------------------------------------------------------------------
/static/pattern.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/static/s1/1/retool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/1/retool.png
--------------------------------------------------------------------------------
/static/s1/10/praise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/10/praise.png
--------------------------------------------------------------------------------
/static/s1/10/praise2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/10/praise2.png
--------------------------------------------------------------------------------
/static/s1/10/whiteboard.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/10/whiteboard.jpg
--------------------------------------------------------------------------------
/static/s1/10/why.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/10/why.png
--------------------------------------------------------------------------------
/static/s1/2/landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/2/landscape.png
--------------------------------------------------------------------------------
/static/s1/2/specs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/2/specs.png
--------------------------------------------------------------------------------
/static/s1/3/ipo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/3/ipo.png
--------------------------------------------------------------------------------
/static/s1/3/product.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/3/product.png
--------------------------------------------------------------------------------
/static/s1/3/stack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/3/stack.png
--------------------------------------------------------------------------------
/static/s1/3/thrending.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/3/thrending.png
--------------------------------------------------------------------------------
/static/s1/4/api-gateway.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/4/api-gateway.png
--------------------------------------------------------------------------------
/static/s1/4/insomnia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/4/insomnia.png
--------------------------------------------------------------------------------
/static/s1/4/vs-lite.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/4/vs-lite.png
--------------------------------------------------------------------------------
/static/s1/4/vs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/4/vs.png
--------------------------------------------------------------------------------
/static/s1/5/acquire.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/5/acquire.png
--------------------------------------------------------------------------------
/static/s1/5/garage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/5/garage.png
--------------------------------------------------------------------------------
/static/s1/5/martix.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/5/martix.png
--------------------------------------------------------------------------------
/static/s1/5/product.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/5/product.png
--------------------------------------------------------------------------------
/static/s1/6/au-revoir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/6/au-revoir.png
--------------------------------------------------------------------------------
/static/s1/6/docker-desktop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/6/docker-desktop.png
--------------------------------------------------------------------------------
/static/s1/6/docker-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/6/docker-logo.png
--------------------------------------------------------------------------------
/static/s1/6/docker-pricing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/6/docker-pricing.png
--------------------------------------------------------------------------------
/static/s1/6/docker.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/6/docker.jpeg
--------------------------------------------------------------------------------
/static/s1/6/later1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/6/later1.jpg
--------------------------------------------------------------------------------
/static/s1/6/later2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/6/later2.png
--------------------------------------------------------------------------------
/static/s1/7/cloudstack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/cloudstack.png
--------------------------------------------------------------------------------
/static/s1/7/cncf-toc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/cncf-toc.png
--------------------------------------------------------------------------------
/static/s1/7/jni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/jni.png
--------------------------------------------------------------------------------
/static/s1/7/liangsheng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/liangsheng.png
--------------------------------------------------------------------------------
/static/s1/7/rancer-ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/rancer-ui.png
--------------------------------------------------------------------------------
/static/s1/7/rancher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/rancher.png
--------------------------------------------------------------------------------
/static/s1/7/suse-rancher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/suse-rancher.png
--------------------------------------------------------------------------------
/static/s1/7/tg-epinio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/tg-epinio.png
--------------------------------------------------------------------------------
/static/s1/7/tg-harvester.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/tg-harvester.png
--------------------------------------------------------------------------------
/static/s1/7/tg-rio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/tg-rio.png
--------------------------------------------------------------------------------
/static/s1/7/timeline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/timeline.png
--------------------------------------------------------------------------------
/static/s1/7/twitter-shepherd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/7/twitter-shepherd.png
--------------------------------------------------------------------------------
/static/s1/8/d2iq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/8/d2iq.png
--------------------------------------------------------------------------------
/static/s1/8/day2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/8/day2.png
--------------------------------------------------------------------------------
/static/s1/8/dkp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/8/dkp.png
--------------------------------------------------------------------------------
/static/s1/8/fall-whale.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/8/fall-whale.png
--------------------------------------------------------------------------------
/static/s1/8/mesos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/8/mesos.png
--------------------------------------------------------------------------------
/static/s1/8/mesosphere.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/8/mesosphere.png
--------------------------------------------------------------------------------
/static/s1/9/docker-enterprise.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/9/docker-enterprise.png
--------------------------------------------------------------------------------
/static/s1/9/kharkiv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/9/kharkiv.png
--------------------------------------------------------------------------------
/static/s1/9/lens.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/9/lens.png
--------------------------------------------------------------------------------
/static/s1/9/mcp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/9/mcp.png
--------------------------------------------------------------------------------
/static/s1/9/mirantis-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/9/mirantis-light.png
--------------------------------------------------------------------------------
/static/s1/9/mirantis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/9/mirantis.png
--------------------------------------------------------------------------------
/static/s1/9/openstack-maillist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/9/openstack-maillist.png
--------------------------------------------------------------------------------
/static/s1/9/openstack-rank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s1/9/openstack-rank.png
--------------------------------------------------------------------------------
/static/s2/1/akri.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/akri.png
--------------------------------------------------------------------------------
/static/s2/1/brigade.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/brigade.png
--------------------------------------------------------------------------------
/static/s2/1/deis-legacy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/deis-legacy.png
--------------------------------------------------------------------------------
/static/s2/1/deis-zhihu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/deis-zhihu.png
--------------------------------------------------------------------------------
/static/s2/1/deislabs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/deislabs.png
--------------------------------------------------------------------------------
/static/s2/1/fermyon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/fermyon.png
--------------------------------------------------------------------------------
/static/s2/1/gabe-monroy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/gabe-monroy.png
--------------------------------------------------------------------------------
/static/s2/1/helm-book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/helm-book.png
--------------------------------------------------------------------------------
/static/s2/1/helm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/helm.png
--------------------------------------------------------------------------------
/static/s2/1/krator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/krator.png
--------------------------------------------------------------------------------
/static/s2/1/krustlet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/krustlet.png
--------------------------------------------------------------------------------
/static/s2/1/list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/list.png
--------------------------------------------------------------------------------
/static/s2/1/matt-butcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/matt-butcher.png
--------------------------------------------------------------------------------
/static/s2/1/mystikos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/mystikos.png
--------------------------------------------------------------------------------
/static/s2/1/oras.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/oras.png
--------------------------------------------------------------------------------
/static/s2/1/porter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/porter.png
--------------------------------------------------------------------------------
/static/s2/1/projects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/1/projects.png
--------------------------------------------------------------------------------
/static/s2/2/botcity.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/botcity.png
--------------------------------------------------------------------------------
/static/s2/2/brainboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/brainboard.png
--------------------------------------------------------------------------------
/static/s2/2/cogram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/cogram.png
--------------------------------------------------------------------------------
/static/s2/2/convoy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/convoy.png
--------------------------------------------------------------------------------
/static/s2/2/growthbook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/growthbook.png
--------------------------------------------------------------------------------
/static/s2/2/hydra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/hydra.png
--------------------------------------------------------------------------------
/static/s2/2/nimbus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/nimbus.png
--------------------------------------------------------------------------------
/static/s2/2/realitydefender.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/realitydefender.png
--------------------------------------------------------------------------------
/static/s2/2/requestly-comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/requestly-comment.png
--------------------------------------------------------------------------------
/static/s2/2/requestly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/requestly.png
--------------------------------------------------------------------------------
/static/s2/2/shaped.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/shaped.png
--------------------------------------------------------------------------------
/static/s2/2/vessel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/vessel.png
--------------------------------------------------------------------------------
/static/s2/2/yc-w22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/2/yc-w22.png
--------------------------------------------------------------------------------
/static/s2/3/fig-video.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/3/fig-video.mp4
--------------------------------------------------------------------------------
/static/s2/3/terminals.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/3/terminals.png
--------------------------------------------------------------------------------
/static/s2/3/warp-block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/3/warp-block.png
--------------------------------------------------------------------------------
/static/s2/3/warp-collaboration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/3/warp-collaboration.png
--------------------------------------------------------------------------------
/static/s2/3/warp-cover.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/3/warp-cover.jpg
--------------------------------------------------------------------------------
/static/s2/3/warp-terminal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/3/warp-terminal.png
--------------------------------------------------------------------------------
/static/s2/3/warp-workflow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/3/warp-workflow.png
--------------------------------------------------------------------------------
/static/s2/3/warp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zineland/2d2d/cd74d725c72ac3949634c42dc2c0ca189fbe90c5/static/s2/3/warp.png
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | // Install tailwindcss standalone CLI, see https://tailwindcss.com/blog/standalone-cli.
2 | // Or install node version of tailwindcss.
3 | //
4 | // tailwindcss -o static/footer.css --watch --minify
5 |
6 | module.exports = {
7 | content: [
8 | './templates/**/*.html',
9 | ],
10 | prefix: 'tw-',
11 | corePlugins: {
12 | // Disable preflight styles.
13 | preflight: false,
14 | },
15 | plugins: [
16 | // A plugin to truncate text to a fixed number of lines.
17 | require('@tailwindcss/line-clamp'),
18 | ],
19 | }
--------------------------------------------------------------------------------
/templates/article-extend.html:
--------------------------------------------------------------------------------
1 |
4 |
19 |
--------------------------------------------------------------------------------
/templates/footer.html:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
14 |
{{ site.name }}
15 |
16 | {{ site.description }}
17 |
18 |
19 |
20 |
21 |
22 |
责任编辑
23 |
@Folyd
24 |
25 |
34 |
35 |
36 |
37 |
38 |
39 | Copyright © {{ now() | date(format="%Y") }} {{ site.name }}
40 |
41 |
--------------------------------------------------------------------------------
/templates/head.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/zine-data.json:
--------------------------------------------------------------------------------
1 | {
2 | "urlPreviews": {
3 | "https://2d2d.io": [
4 | "TO-D 杂志",
5 | "专注于探讨全球 To-D 领域相关产品、创业公司、融资等资讯的专栏杂志。",
6 | "https://2d2d.io/static/2d2d.png"
7 | ],
8 | "https://2d2d.io/s1/docker/": [
9 | "一封 Docker 公司的来信",
10 | "亲爱的开发者,您好,",
11 | "https://2d2d.io/static/s1/6/docker.jpeg"
12 | ],
13 | "https://2d2d.io/s2/yc-w22/": [
14 | "YC 2022 冬季营 DevTools 公司一览",
15 | "上周 (2022 年 3 月 29 号) YC Winter 2022 Batch 举行了 Demo Day。此次亮相的 startup 数量也创下了 398 家的新高。Developer Tools 向来是 YC 项目里的热门赛道,这次也",
16 | "https://2d2d.io/static/s2/2/yc-w22.png"
17 | ],
18 | "https://deislabs.io/posts/introducing-hippo/": [
19 | "Introduction to Hippo: the WebAssembly PaaS",
20 | "Hippo makes it easy to run applications and services at scale",
21 | "https://deislabs.io/images/twitter-card.png"
22 | ],
23 | "https://developer.hashicorp.com/nomad/docs/nomad-vs-kubernetes": [
24 | "Nomad vs. Kubernetes | Nomad | HashiCorp Developer",
25 | "Comparison between Nomad and Kubernetes",
26 | "https://developer.hashicorp.com/og-image/nomad.jpg"
27 | ],
28 | "https://github.com/zineland/zine": [
29 | "GitHub - zineland/zine: Zine - a simple and opinionated tool to build your own magazine.",
30 | "Zine - a simple and opinionated tool to build your own magazine. - GitHub - zineland/zine: Zine - a simple and opinionated tool to build your own magazine.",
31 | "https://repository-images.githubusercontent.com/463489443/841f79ec-570b-4a52-b855-2ca4852acd11"
32 | ],
33 | "https://mp.weixin.qq.com/s/4UCAAtxLY1YRoevl5ACQ-g": [
34 | "Hydra - 通过 PostgreSQL 集成 Snowflake 的 HTAP 数据库",
35 | "Hydra, 基于 PostgreSQL 的 Hybrid Transactional / Analytical Processing / HTAP 系统。",
36 | "http://mmbiz.qpic.cn/mmbiz_jpg/0nhrHSRiaNrskUSqpIiaOPDibqkvAw44aVpKydnzLdHBRBRsYHhuaheumMFdniccr5xiabG5sQibG5OiaLicSbbXdEBfRQ/0?wx_fmt=jpeg"
37 | ],
38 | "https://mp.weixin.qq.com/s/KOVqdCnf73ptg8dmLYf5Aw": [
39 | "TO-D 观察|小小的终端何以撬动千万美元资本",
40 | "这篇文章不是为了宣传 Warp,而是我本人想探索 Warp 融资 2300 w 美元背后的价值。",
41 | "http://mmbiz.qpic.cn/mmbiz_jpg/hicrFibaKFMd0zpHN1iaKvpoCiccs3V7bAQ88qXmTALQ8qXvKzt4LHXQGolUU60xu8X1zqYggicMQLpNJWKibjgOfcwA/0?wx_fmt=jpeg"
42 | ],
43 | "https://mp.weixin.qq.com/s/Y2A7-Ui2nzUgodkEbgR6lQ": [
44 | "【年度公司】Hashicorp:160亿美金的开源标杆,15000字的研究笔记,2021年不遗憾",
45 | "2021年最后一天,看看Hashicorp怎样用十年的坎坷,打造了一家了不起的公司。产品战略,开源商业化,全球社区,以及,坚持理想主义那些事儿。",
46 | "http://mmbiz.qpic.cn/mmbiz_jpg/hxjYKa0HByL7MG7cxKrHlDXlmGkTrAeFDrEZtT5A3H1ajQTZzs4TiaGlK3xdiaF3Q5S8Xicic30mMIo0lxYOJI47bQ/0?wx_fmt=jpeg"
47 | ],
48 | "https://retool.com/blog/series-c/": [
49 | "Series C: Raising less money at lower valuations",
50 | "Many startups today fundraise with the goal of getting the most money at the highest valuation possible. But at Retool, we decided to take the opposite strategy.",
51 | ""
52 | ],
53 | "https://www.gv.com/news/core-os-founders/": [
54 | "CoreOS Co-Founders Alex Polvi and Brandon Philips on Tackling Enormous Opportunities",
55 | "One of the more fulfilling aspects of my job is connecting new founders with experienced mentors who can help them grow. CoreOS founders Alex Polvi and Brandon Philips are among the most requested ope",
56 | "https://images.ctfassets.net/iuoxpp2nznvy/2JXhKfrOFKPdMKdiDtlu3n/2581195105c28db8000dc6cf51ed2659/coreos-alt.jpeg"
57 | ],
58 | "https://www.hashicorp.com/blog/a-new-chapter-for-hashicorp": [
59 | "A New Chapter for HashiCorp",
60 | "As we officially enter the public markets, we plan to continue to do what we think we do best: solving problems for our end users.",
61 | "https://www.datocms-assets.com/2885/1639065942-ipo-bell-ring-company-photo.jpg"
62 | ],
63 | "https://www.hashicorp.com/state-of-the-cloud": [
64 | "HashiCorp State of Cloud Strategy Survey",
65 | "The 2022 HashiCorp State of Cloud Strategy Survey reveals multi-cloud growth, cloud security’s importance, the lack of cloud skills, and the rise of platform teams",
66 | "https://www.datocms-assets.com/2885/1659103394-sotc-social-share-2022.png"
67 | ],
68 | "https://www.linkedin.com/pulse/why-im-leading-warps-series-dylan-field": [
69 | "Why I'm Leading Warp's Series A",
70 | "In today’s world full of inequality, the power to create digitally equals economic mobility. It’s imperative that we reduce barriers to creation so that more people can find opportunity and fulfil",
71 | "https://media-exp1.licdn.com/dms/image/C4E12AQGdvXMJk05YAw/article-cover_image-shrink_720_1280/0/1649173880597?e=2147483647&v=beta&t=86ywRfJvLe28rFthQHdezLvfl8XmRAnFcWtcJ_INLbE"
72 | ],
73 | "https://www.redhat.com/en/blog/faq-red-hat-acquire-coreos": [
74 | "FAQ: Red Hat to acquire CoreOS",
75 | "]Q. What is being announced?On Jan. 30, 2018, Red Hat announced that it has signed a definitive agreement to acquire CoreOS, Inc. The acquisition is subject to certain customary closing conditions.Q. ",
76 | "https://www.redhat.com/themes/custom/rhdc/img/red-hat-social-share.jpg"
77 | ],
78 | "https://www.suse.com/c/rancher_blog/rancher-desktop-1-0-0-has-arrived/": [
79 | "Rancher Desktop 1.0.0 Has Arrived | SUSE Communities",
80 | "We are happy to announce the 1.0.0 release of Rancher Desktop. This release has been months in the making since development on Rancher Desktop began. After starting small and learning what users neede",
81 | "https://www.suse.com/c/wp-content/uploads/2022/01/rancher-desktop.jpeg"
82 | ],
83 | "https://www.suse.com/c/rancher_blog/suse-enters-into-definitive-agreement-to-acquire-rancher-labs/": [
84 | "SUSE Enters Into Definitive Agreement to Acquire Rancher Labs | SUSE Communities",
85 | "Read our free white paper: How to Build a Kubernetes Strategy Download Now I’m excited to announce that Rancher has signed a definitive agreement to be acquired by SUSE. Rancher is the most widely u",
86 | "https://www.suse.com/c/wp-content/uploads/2021/09/rancher_blog_suse-rancher-stronger-together.png"
87 | ],
88 | "https://www.warp.dev/blog/introducing-warp": [
89 | "Introducing Warp: The Terminal for the 21st Century | Warp",
90 | "",
91 | "https://assets-global.website-files.com/6221c6f68d6664279c408870/624c653083e23a50ca642dcd_blogCover.png"
92 | ]
93 | }
94 | }
--------------------------------------------------------------------------------
/zine.toml:
--------------------------------------------------------------------------------
1 |
2 | [site]
3 | url = "https://2d2d.io"
4 | name = "TO-D 杂志"
5 | description = "专注于探讨全球 To-D 领域相关产品、创业公司、融资等资讯的专栏杂志。"
6 | edit_url = "https://github.com/zineland/2d2d/edit/main"
7 | social_image = "/static/2d2d.png"
8 | locale = "zh"
9 | menu = [
10 | { name = "关于", url = "/about" },
11 | { name = "博客", url = "/blog" },
12 | { name = "读者好评", url = "/review" },
13 | { name = "赞助", url = "/sponsor" },
14 | { name = "GitHub", url = "https://github.com/zineland/2d2d" },
15 | ]
16 |
17 | [authors]
18 | folyd = { avatar = "/static/avatar/folyd.jpg", editor = true, bio = """
19 |
20 | 《TO-D 杂志》责任编辑,目前就职于字节跳动
21 |
22 |
23 | > 申明:个人文章仅代表个人观点,与雇主无关。
24 |
25 | 可以通过如下方式联系到我:
26 | - [博客](https://folyd.com)
27 | - [GitHub](https://github.com/folyd)
28 | - [Twitter](https://twitter.com/_hisriver)
29 | - [Telegram](https://t.me/hisriver)
30 | """ }
31 | tianzhou = { avatar = "/static/avatar/tianzhou.jpg", bio = """
32 |
33 | bytebase.com 首席涂鸦官
34 |
35 |
36 | > 申明:个人文章代表不了公司观点。
37 |
38 | 可以通过如下方式联系到我:
39 | - [GitHub](https://github.com/tianzhou)
40 | - [Twitter](https://twitter.com/tianzhouchen)
41 | """ }
42 |
43 |
44 | [theme]
45 | primary_color = "#ffb52f"
46 | main_color = "#000"
47 | link_color = "#e07312"
48 | background_image = "/static/pattern.svg"
49 | head_template = "templates/head.html"
50 | footer_template = "templates/footer.html"
51 | article_extend_template = "templates/article-extend.html"
52 |
53 | [markdown]
54 | highlight_theme = "ayu-light"
55 |
--------------------------------------------------------------------------------