假如有一家公司,产品是 DevOps 平台,那么他们自己开发 DevOps 平台是否也用了自己的 DevOps 平台?当然最开始是不会的,因为还没有;但后期他们应该使用自己的 DevOps 平台来开发自己的 DevOps 平台产品。
由此想到,开发 Eclipse 的人是否也用 Eclipse 开发 Eclipse?开发 IntelliJ IDEA 的人是否也用 IDEA 开发 IDEA? Git 的开发人员开发出了 Git,后面也应该用 Git 来管理 Git 本身的开发。
Docker 公司发明(准确的说是重新定义)了容器,它们提供的 registry 本身也是容器。Docker 也可以用容器形式提供 Docker,也就是嵌套的 Docker, docker-in-docker.
以上种种都让人联想到编程语言中“自举”的概念。通俗地讲,自举就是用同一种语言实现该语言的编译器。
实现自举意味着说服力。很多互联网公司做云计算实际就是把自己内部使用云计算的实践包装成产品出售,这本身就具有市场说服力。而也有一些厂商,做 IaaS, 做 PaaS, 卖给传统企业客户,但他们本身却自始至终不会使用自己的产品。一开始可以不使用,但应该逐步地将开发平台迁移到自己的产品平台,实现“自举”。这是一个自然而言的过程。人类制造工具的过程就是自展的过程。
生产生产力工具的工具,可以叫做“元生产力工具”。比如机床可以用来加工机器,机床可以看做元生产力工具。
无论是开发 IDE 工具的公司,还是开发所谓云平台、PaaS平台的公司,都应该逐步实现“自举”,否则就没有市场说服力。