2022-10-22 21:34:27 +08:00
|
|
|
|
[#]: subject: "Our open source startup journey"
|
|
|
|
|
[#]: via: "https://opensource.com/article/22/10/tooljet-open-source-journey"
|
|
|
|
|
[#]: author: "Navaneeth PK https://opensource.com/users/navaneeth"
|
|
|
|
|
[#]: collector: "lkxed"
|
2022-12-12 10:49:48 +08:00
|
|
|
|
[#]: translator: "CanYellow"
|
2022-10-22 21:34:27 +08:00
|
|
|
|
[#]: reviewer: " "
|
|
|
|
|
[#]: publisher: " "
|
|
|
|
|
[#]: url: " "
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
开始我们的开源之旅
|
2022-10-22 21:34:27 +08:00
|
|
|
|
======
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
[ToolJet][1] 是一款开源的低代码量的用于快速构建和部署内部工具的框架。它的基础代码完全基于 JavaScript 和 TypeScript 。
|
2022-12-13 19:12:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
ToolJet于2021年由一名开发者启动开发,并于2021年6月推出公测版本,一炮而红。此后, ToolJet 成立了基金会。目前,已经有一个20人的开发团队。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-13 19:12:27 +08:00
|
|
|
|
### 为什么选择开源
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
在开发 ToolJet 之前,我曾担任一些企业客户端的顾问。许多客户端都庞大到在其中维护构建了大量的内部工具,更不用说来自销售人员、支持人员以及运营人员的对于内部工具的持续的漏洞修复与添加更多功能的要求了。开发团队一直在寻找能够用于内部应用开发的工具。
|
2022-12-13 19:12:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
我尝试过多个平台来构建和维护内部工具。大部分平台都是昂贵的,而且有时候并不能满足我们的需求,我们不得不修改平台工具的代码,而且大多数的平台工具都不支持本地托管。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
作为一名 Ruby 开发者,我最初使用 ActiveAdmin 和 RailsAdmin 来构建内部工具。这两款工具都是极好的,只是将它们应用在超出一个数据源的任务上的工作比较困难。于是我意识到市场上需要一种可以构建用户界面并能够连接多个数据源的框架。我相信任何为开发者制作的工具都应当是开源的。开发者日常使用的大部分工具与框架都源自世界各地人们的公开协作。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-13 19:12:27 +08:00
|
|
|
|
### 第一次提交
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
制作像 ToolJet 这样的工具需要全身心的投入,通过出售我的一个业余项目,我获得了5-6个月的空闲,于是我立即着手将在我脑海里酝酿了两年的想法付诸现实。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-13 19:12:27 +08:00
|
|
|
|
2021年4月1日,我完成了 ToolJet 的第一次提交(使用 rails new 命令)。
|
|
|
|
|
|
|
|
|
|
稍等!我刚刚说 ToolJet 的代码是完全基于 JavaScript 的?请接着往下看。
|
|
|
|
|
|
|
|
|
|
TD
|
2022-12-14 16:17:09 +08:00
|
|
|
|
### 构建完成并推销给投资者
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-13 19:12:27 +08:00
|
|
|
|
4、5月间,我一直坐在电脑屏幕前编写代码和向种子轮的投资者推销我的工具。
|
|
|
|
|
|
|
|
|
|
我的工作还包括创建拖放式应用程序构建器,撰写所有的文档以保证有在主流平台上设置 ToolJet 的文档,创建项目网站,制作发布时所需的海报以及博客文章等等。这一过程进展顺利,没有遇到大的挑战。当时, ToolJet 的前端使用的是 React ,而后端则用的是 Ruby on Rails 。
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
编程工作进行得很顺利,然而投资者推广工作进行得并不顺利。我向专注于初创时期投资的风投和天使投资人发送了大约40封电子邮件,都石沉大海。大部分邮件都被忽略了,不过也有一些公司向我说明了拒绝的原因,另外一些则给我回了电话。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
大部分的电话内容都是一样的:我无法说服他们接受开源商业模式。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-13 19:12:27 +08:00
|
|
|
|
### 工具发布
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
6月7日是发布日。我们首先在 ProductHunt (译者注: [ProductHunt][11] 是一个新品发布平台)上发布.六个小时后,只有70名用户注册。但是我们有成为当天第一名产品的趋势(最终在那一周的产品中排名第三)。这里是原始的[发布帖][2]。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 08:42:16 +08:00
|
|
|
|
下午6点左右,我又在 [HackerNews][3]上发帖,一个小时内,这个帖子便升至榜首。大量的访问者注册并给我的版本库点亮星标,我对此很高兴。大量的访问者和用户报告了软件和文档中的漏洞。距离在 HackNews 上发帖八个小时之后,超过1000名 GitHub 用户给 ToolJet 的 GitHub 版本库点亮星标,并且有了数百个 ToolJet 云端的注册请求。上升趋势一直持续到三天后,ToolJet 版本库总计得到了2400个星标。
|
2022-12-13 19:12:27 +08:00
|
|
|
|
|
2022-10-22 21:34:27 +08:00
|
|
|
|
![ToolJet repo stats on GitHub][4]
|
|
|
|
|
|
2022-12-14 08:42:16 +08:00
|
|
|
|
图片来源:
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
ToolJet GitHub StarTrack (Navaneeth PK, CC BY-SA 4.0)
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 08:42:16 +08:00
|
|
|
|
### 获得资助
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
ToolJet 项目在 GitHub 上的吸引力足以被风投(VC)世界注意到。发布之后的日子被各种来电挤满了。我们也有其他的选择,但从没有认真考虑过这些它们。这些选择包括:
|
2022-12-14 08:42:16 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
- Bootstrapping:在项目初期,难以获得付费用户,而我此前也没有足够的存款来支撑整个项目。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
- 作为业余项目构建:在开发小型项目上这是可以的,但我不认为这在 ToolJet 的开发上行得通,毕竟在 ToolJet 平台能够为客户所用之前我们需要创建大量的集成和 UI 控件。作为一个业余项目,要实现这些可能需要花费数月甚至数年时间。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
我知道如果将 ToolJet 作为一个业余项目来开发,我可能需要花几个月的时间才能达到我期望的程度。而我希望通过扩大团队加速项目的成熟。鉴于该项目的吸引力,引入风险投资(VC)的资助是显而易见的选择。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
好消息是在 HackNews 上发布之后的两周内我们成功募集了[155万美元的资金][5]。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
### 在开源中积累很重要
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
发布后不久,我们发现许多人希望为 ToolJet 项目做贡献,但是他们几乎都是 JavaScript 开发者。我们也意识到像 ToolJet 这样的项目在未来会有成百上千的数据接口,只有基于插件的架构才行得通。我们于2021年8月决定从 Ruby 迁移到 TypeScript 上来。即使这花费了一个月的时间和巨大的努力,这仍然是我们在 ToolJet 项目上作出的最正确的决定。今天,我们有一个由我们的[插件开发套件][6]支持的可扩展的基于插件的架构。我们获得了来自超过200名开发者的贡献。关于这次迁移的文章参见[这篇博客][7]和[另一篇博客][8]
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
### 发布 v1.0 版本
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
自8月份以后,很多用户已经在生产环境中使用 ToolJet ,该平台并没有出现过任何稳定性或扩展性的问题。我们准备在发布 v1.0 版本之前完成开发人员平台的功能。开发人员平台允许任何 JavaScript 开发者构建和发布 ToolJet 插件。这样开发人员就可以为 ToolJet 开发数据接口。把集成测试的时间算上,创建一个 ToolJet 接口的时间也只需要30分钟。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
### 创建持续成长的社区
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
|
|
|
|
![ToolJet star history][9]
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
图片来源:
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
|
|
|
|
ToolJet Star History (Navaneeth PK, CC BY-SA 4.0)
|
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
我们没有在销售上投入资金,我们的大部分精力都放在了传播 ToolJet 的消息、撰写我们的经验教训以及维持开发社区的活跃上。我们有一个关注社区里问题的三人团队。
|
|
|
|
|
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
### 商业模式
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
如果没有[商业产品][10]来支付账单 ToolJet 无法成为一项可持续的业务。我们构建了 ToolJet 的客户必须付费的企业版本。ToolJet 的免费的社区版本没有任何使用限制,企业版中的额外功能都只与大型团队有关。我们现在的客户已经有超大型公司。我们有足够的银行存款来打造更好的 ToolJet ,因此我们目前正聚焦于产品提升上。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
### 接下来做什么
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
2022-12-14 16:17:09 +08:00
|
|
|
|
我们在消费者反馈的帮助以及开源社区的贡献下经常性发布更好的 ToolJet 版本。很多主要的优化、大量的数据接口以及 UI 组件正在开发进程中。为了实现我们成为能够连接大量数据源并构建更复杂的用户界面的开源框架的初心,我们比以往行动得更加迅速。
|
2022-10-22 21:34:27 +08:00
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
via: https://opensource.com/article/22/10/tooljet-open-source-journey
|
|
|
|
|
|
|
|
|
|
作者:[Navaneeth PK][a]
|
|
|
|
|
选题:[lkxed][b]
|
2022-12-14 16:17:09 +08:00
|
|
|
|
译者:[CanYellow](https://github.com/CanYellow)
|
2022-10-22 21:34:27 +08:00
|
|
|
|
校对:[校对者ID](https://github.com/校对者ID)
|
|
|
|
|
|
|
|
|
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
|
|
|
|
|
|
|
|
|
[a]: https://opensource.com/users/navaneeth
|
|
|
|
|
[b]: https://github.com/lkxed
|
|
|
|
|
[1]: https://github.com/ToolJet/ToolJet
|
|
|
|
|
[2]: https://www.producthunt.com/products/tooljet-0-5-3
|
|
|
|
|
[3]: https://news.ycombinator.com/item?id=27421408
|
|
|
|
|
[4]: https://opensource.com/sites/default/files/2022-10/tooljet-repo-stats.png
|
|
|
|
|
[5]: https://blog.tooljet.com/raising-vc-funding-for-open-source-project
|
|
|
|
|
[6]: https://www.npmjs.com/package/@tooljet/cli
|
|
|
|
|
[7]: https://blog.tooljet.com/migrating-toojet-from-ruby-on-rails-to-nodejs
|
|
|
|
|
[8]: https://blog.tooljet.com/how-we-migrated-tooljet-server-from-ruby-to-node-js
|
|
|
|
|
[9]: https://opensource.com/sites/default/files/2022-10/tooljet-star-history.png
|
|
|
|
|
[10]: https://opensource.com/article/19/11/product-vs-project
|
2022-12-13 19:12:27 +08:00
|
|
|
|
|
|
|
|
|
[11]: https://www.producthunt.com/
|