Todd Volkert is the director of engineering for Flutter, leading the Flutter engineering team.
Todd has been working on Flutter for about nine years, since early 2015.
Before Google, Todd led engineering teams at companies like VMware and FOXSports, and he also started his own company doing photo management software.
Apache Pivot was a UI framework Todd helped develop at VMware, aiming to replace Java Swing and Adobe Flex, but it didn't gain traction due to the rise of mobile.
Google separates engineering and product management. Todd leads engineering for Flutter, Vijay Menon leads Dart engineering, and Michael Thompson is the product manager for both.
Some members, like Eric and Ian, left to pursue other opportunities, such as starting their own companies or consulting, but they still contribute to Flutter. Tim left to take on a new challenge but remains supportive of Flutter.
Google recommends Kotlin Multiplatform for shared business logic between Android and iOS, while Flutter is recommended for shared UI. Kotlin Multiplatform is part of Google's strategy to attract developers to the Android ecosystem.
Impeller is on by default on the main channel and expected to be on by default on the stable channel for Android later this year. It's already on by default for iOS and close to being fully stable.
Flutter prioritizes based on current roadmap needs, with mobile being a high priority. However, the community, including companies like Canonical and Microsoft, contributes significantly to desktop development.
Flutter is exploring AI for generative UI experiences and assistive coding, aiming to innovate rather than just replicate existing AI tools like GitHub Copilot.
Todd envisions Flutter becoming the best way to paint pixels across all platforms, with Dart as the best general-purpose programming language, making multi-platform development without trade-offs the norm.
<context>51. Todd Volkert Todd Volkert (@VolkertTodd) 在 Flutter 团队工作了 10 年,目前是 Flutter 的工程总监,工作地点在谷歌位于圣荷西的办公室。他于 2010 年加入谷歌,此前在 VMware 和 FOXSports 等公司领导工程团队长达十二年。在业余时间,他喜欢摄影,参加孩子们的体育和音乐活动,作为业余木匠进行创作,并辅导学生学习 STEM 相关科目。
https://pivot.apache.org
https://github.com/flutter/flutter/blob/master/docs/roadmap/Roadmap.md
<raw_text>0 嗨,感谢您的收听。这是“它是一个小部件”的 Flutter 播客。我叫 Hillel Korn。每一集,您都有机会与 Flutter 社区的另一位杰出成员交谈。在这一集中,我们非常幸运地与 Todd 交谈。欢迎您。谢谢。很高兴来到这里。感谢您的参与。那么首先,您能分享一下您的背景吗?是的。我是 Todd Volker。我领导 Flutter 工程团队。我在谷歌工作了大约,天哪,已经有 14 年半,快到 15 年了。是的。
我在 Flutter 的时间大部分是在 2015 年初以来。所以我想大约有九年左右。这是因为在我的职业生涯中,我一直倾向于开发者框架、UI 框架和开源项目。因此,当我找到 Flutter 团队时,它几乎满足了所有的要求,我从那时起就一直在这里。
在谷歌之前,我在多家公司工作过,但我发现自己一直在构建各种框架。当我接触到 UI 时,我真的很享受。我过去做过的一件事是我创办了自己的公司,做照片管理软件。
作为其中的一部分,我做了很多不同的工程工作。这大约是在 2003 年左右,我发现了新兴的 Ajax 和动态网页等东西,并最终构建了一个丰富的 UI 框架。然后我去了 VMware,参与了他们服务器产品线的客户端软件的开发。
在构建他们的前端 UI 的过程中,我们最终构建了一个通用的 UI 框架,后来演变成了 Apache Pivot,这是一个没有人听说过的 UI 框架,但当时试图成为 Java Swing 和 Adobe Flex 的现代替代品。它大约在 iPhone 发布的时候出现,而移动设备则彻底改变了整个世界。因此,它最终没有取得成功。
但那段经历在我找到 Flutter 团队时又回到了我身边。这真的很有趣。一个 UI 框架的生活。那么您能解释一下,您说您在谷歌负责 Flutter 的工程工作。我对谷歌的结构不太熟悉。这是什么意思?是的。我的正式职称是工程总监,领导 Flutter 团队。谷歌有一个有趣的结构。因此,他们通常将工程报告链与产品管理分开。
这是故意的,以便产品经理和工程领导可以合作。因此,在 Flutter 中,我们知道 Flutter 和 Dart 一直非常紧密地合作。所以,我是 Flutter 的工程总监。Vijay Menon 是我在 Dart 方面的合作伙伴。然后 Michael Thompson 是 Flutter 和 Dart 的产品经理负责人。
我们三个人就像是三头怪兽,领导 Flutter 和 Dart 的战略。这非常有帮助。谢谢。我从来没有意识到这一点。
我关注 Flutter 已经有一段时间了,虽然没有您那么早,但也有几年了。作为社区成员,我不得不说,看到一些早期的面孔离开团队,特别是像 Eric、Ian、Tim 这样的人,确实有点伤心,我相信还有很多我想不到的人。您认为这是为什么呢?有什么原因吗?我觉得 Ian 的博客文章似乎最能揭示文化。您有什么看法或信息可以分享吗?是的。
是的,您这么说很有趣。您问到了管理结构,对吧?所以,您知道,Eric 曾经是 Flutter 的工程总监,然后是 Flutter 和 Dart 的工程总监。Tim 是产品负责人。因此,您可以看到其中的相似之处。因此,当 Eric 离开时,我在团队中已经待了很久。但当 Eric 离开时,我接任了新的工程负责人。是的,从我的角度来看,老实说,让我退后一步。我们在 Flutter 团队有一个有趣的笑话。
任何离开团队的人总是会回来。我可以列出一些名字,这些人不一定在公众视野中,但多年来我们有很多人离开了团队,结果在六个月、一年、两年,有时甚至五年后又回来了。事实上,当前 Flutter 的首席技术负责人曾经在很久以前的 Dart 团队工作。他是 Hot Reload 的发明者,后来去谷歌做服务器端的工作,然后在七年后回来了。
但无论如何,从我的角度来看,我实际上认为我们团队的人员流失率要低得多,显著低于大多数谷歌团队。因此,我从这个前提出发。我认为在团队中,我们在保留率方面做得很好,尤其是像 Eric、Tim 和 Ian 这样的领导者。三分之二的人仍然在 Flutter 工作。
因此,我认为 Flutter 团队的范围比仅仅在谷歌工作的人更广泛。而且,您知道,Eric 去创办了自己的基于 Flutter 的公司 Shorebird,在那里做得很好。Ian 正在进行 Flutter 的私人咨询,并仍然为 Flutter 做贡献。
所以我仍然认为他们基本上是 Flutter 团队的一部分,尽管他们不再为谷歌工作。Tim 是个不同的情况。Tim 和我仍然是朋友。我们上周刚吃过晚餐。我认为他认为自己来这里是为了完成某个任务。他看到了 Flutter 的巨大潜力,当时 Flutter 还没有 1.0,仍然处于测试阶段,并将其从...
从早期的孵化阶段带到世界,并将其提升到一个新的水平。我认为他认为自己在这个任务中取得了成功,并在非洲的 Flutter 活动中达到了高潮。嗯,现在他有点说,嘿,您知道,我可能还有一次机会,但在我退休之前,我想去尝试一个新的挑战。因此,嗯,
他仍然非常支持 Flutter。就像我说的,我经常和他见面,他仍然在为我们加油,这对那些关注 Tim 的人来说有点奇怪。他现在在苹果工作,因此表面上是为竞争对手工作,但他确实仍然相信 Flutter,并在场边为我们加油。听到这个真是太好了。我对 Tim 非常尊重。他做得非常出色。我相信他是个很难跟上的人。您说得对,团队也是如此。Eric 仍然参与 Flutter 说明了很多。
我仍然和人们开玩笑,说,您知道,Eric、Ian 和 Tim 也是。我说,您会回来的。即使您仍然在 Flutter 工作,我也不会感到惊讶,如果我们最终再次直接在 Flutter 上合作。我是说,这是一个伟大的项目。
太棒了。关于这个话题,我很高兴看到 Seth Ladd 重新加入团队。他是一个在 Stack Overflow 上的帖子多年来对我帮助无穷的人。是的,Seth 是 OG 产品经理。他是 Flutter 的首位产品经理。因此,他是字面上决定回到团队的 15 人之一,因为这确实是一个令人难以置信的社区。
很好。那么在最近的 Google I/O 之后,我认为开发者们对谷歌推荐 Kotlin 多平台与 Flutter 一起使用感到好奇或担忧。您能谈谈这个吗?也许帮忙澄清一下?是的,我认为这是一个棘手的信息。我们与 Android 团队密切合作。
因为,从组织上讲,我们是两个不同的团队,但我们与他们非常紧密地合作。我们试图制定这个信息,但这是一个棘手的信息。因此,我可以从信息的要点开始,尝试用简单的英语表达。然后我可以对此进行一些补充说明,即 Kotlin 多平台是用于共享业务逻辑的。它并不试图解决共享 UI 问题。
还有一个我稍后会谈到的单独项目叫做 Compose Multiplatform,这是一个完全不同的东西。但 Kotlin Multiplatform,KMP,仅仅是关于共享业务逻辑。自 2017 年左右以来,谷歌一直在投资 Kotlin,并相信它有助于 Android 生态系统。我认为有很多数据可以证明这一点。因此,Kotlin Multiplatform 是关于我们如何让人们在 Android 和 iOS 之间共享业务逻辑?
在这样做的过程中,谷歌的策略是试图吸引 iOS 用户转向 Android,对吧?这是一个竞争激烈的市场。因此,共享信息是,如果您想做共享 UI,Flutter 是谷歌推荐的解决方案。如果您想做共享业务逻辑,并获得导入所有 JVM 代码和直接 JVM 互操作的优势,那么 Kotlin 多平台就是答案。
除此之外,还有 Jetpack Compose,这是一个实际上受到 Flutter 启发的框架。我们在早期与将成为 Jetpack Compose 团队的团队合作。他们帮助学习了 Flutter 在此过程中学到的许多经验教训,以教育他们的下一代框架。这是一个基于 Kotlin 的 UI 框架,具有响应式特性,我相信人们对此非常熟悉。再次强调,如果您在 Kotlin 生态系统中,想用 Kotlin 编写 UI,这是一个现代框架,比我们看到的 Android 视图更现代。
但除此之外,现在变得非常混乱,因为还有 Compose Multiplatform,对吧?Compose Multiplatform 是一个更早期、更初步的努力,实际上并不是由谷歌直接开发的。它是由 JetBrains 开发的。因此,您会注意到,如果您回去阅读共享信息,Kotlin 多平台用于共享业务逻辑是谷歌建议的解决方案,适用于留在 JVM 和基于 Kotlin 的生态系统中。
Flutter 是共享 UI 的推荐解决方案。在那里没有提到 Compose Multiplatform,因为那是一个明显的 JetBrains 努力。谢谢。这很有帮助。我认为这确实澄清了信息。我想,谈到 Flutter 的发展,我最近在审查 2024 年的路线图。我认为我们已经接近年底。您认为团队在进展方面做得怎么样?我认为他们做得非常好。是的。
我试着记住路线图上直接写的内容,但显然我们总是关心性能和保真度。因此,Impeller 上做了很多工作。我相信每个人都对 Impeller 非常感兴趣。因此,现在它在主频道上默认开启。我们预计它将在今年晚些时候在 Android 的稳定频道上默认开启。
在 iOS 上,它已经默认开启了一段时间,我们也非常接近,不知道确切的时间,但非常接近能够移除 iOS 的选择退出,因为我们已经解决了所有问题,应该没有理由选择退出 Impella。因此,这项工作进展非常顺利,我们看到非常好的性能数据。我认为我们
我们已经超越了最初的最佳性能,同时没有遇到着色器编译的卡顿等问题。因此,性能非常好。我们在内存方面也有一些努力。我们在互操作性方面也有一些早期阶段的努力,但看起来非常有希望。我们希望达到这样的目标:现在,如果您想做一个插件,想连接到本机功能,您必须通过消息通道。这有点笨拙,有点快。
我们希望大幅简化这一点,以便您可以直接调用 Kotlin 代码、Java 代码、Swift 代码等等。我们在框架上做了一些非常好的工作,涉及 Material。Material 只是一个持续的旅程,因为它总是在发展。但在一些 Material 工作中,我们在 Cupertino 上做了很多工作,以确保我们的 iOS 保真度真正达到标准。
在 Dart 方面,我们也在做一些非常好的工作。我认为在路线图中提到了宏,并探索宏的使用。在 I.O. 上得到了非常积极的反响。它们还处于早期阶段,因此仍然有点预发布,但我们对宏的工作感到非常兴奋。我认为发生的一件事是 Flutter 被发明时
当时的技术水平是,我的意思是,React Native 存在,但 Android 和 iOS 的技术水平仍然是,您知道,命令式框架和旧的 UI Kit 以及 Android 视图等等。因此,Flutter 当时看起来非常现代。但我认为发生的一件事是,部分是由于 Flutter 的成功。您知道,这些工具包实际上一直在竞争,Swift UI 和 Jetpack Compose 是非常出色的框架。而且其中一件事是 Flutter 开始看起来有点过时,
因此,我认为我们可以通过宏来做的一件事是利用这一点,让语言和 Flutter 恢复一些简洁性和吸引力,以便我们需要继续发挥我们的优势。因此,回答有点冗长,但我认为路线图是,我对我们迄今为止的成功感到满意。
我很好奇,您们一般如何优先考虑移动和网络与桌面之间的工作?就我个人而言,我发现 Flutter 桌面非常出色。我觉得它被低估了。如果我在构建桌面应用程序,我想不出更好的跨平台解决方案。然而,在 Flutter 的世界中,似乎一切都非常关注移动,然后 Waz 和我的网络也非常令人兴奋。那么关于这三个平台之间资源共享的想法呢?
是的,这是一个非常好的问题。我自己是一个巨大的桌面用户。实际上,在我有空的时候,当我没有很多家务要做,照顾孩子等等时,我正在构建一个 Flutter 桌面应用程序,用于照片和视频的地理标记。我认为这是一个很好的体验,当您想快速调试 Flutter 的东西,而不必启动模拟器或插入手机时。
是的,我完全同意。正如您所指出的,这是一个资源问题。因此,您知道,我们总是在尽可能处理最高优先级的事情。同时,这里有一个非常好的好处是我们还有我们的社区。因此,您知道,我可以管理谷歌员工工作的优先级。
但我们有一个出色的社区,他们也在不断贡献。我们有一些自由职业者为桌面做贡献。我们有 Canonical 和 Ubuntu 在桌面方面做了很多工作。我们还有微软在桌面方面的工作。因此,幸运的是,我们可以在某种程度上依赖我们的社区。但归根结底,这取决于今天和今年我们路线图的最高优先级是什么。因此,我们确实继续在桌面上工作。但正如您所指出的,移动方面还有很多工作要做。而且移动还没有完成。
因此,这是一季度一季度,一年一年,您知道,我们这一季度必须交付什么?
对,这很有道理。我完全理解。最近的 Google I.O. 上,AI 被提及了无数次。我认为他们实际上计算了提到的次数。我很好奇,作为 Flutter 团队的领导,您自己在使用它吗?Flutter 团队是否使用 AI 来构建 Flutter?您对 AI 将如何影响 Flutter 有什么看法?是的,您在会议期间玩 AI 喝酒游戏吗?是的,确实如此。是的,我认为这里的真相是,有几件事情
我认为相当被接受。其中之一是,没有人确切知道 AI 将如何影响开发的低级细节。但我可以大致说,每个人都相信它会影响开发。
因此,现在就像是一场淘金热,很多人都在追逐各种倡议。我认为您回顾历史上这些类型的事件,我们将在若干年后回顾,会有一些人认为那会成功,但实际上并没有。还有其他部分,人们会说,哦,我没想到那会如此重要。因此,我们都在摸索。
因此,Flutter 正在 AI 方面进行投资,您知道,在几个不同的领域。我们显然认为,如果有 AI 工具包,我们应该有 Dart API。您应该能够用 Dart 调用它们。因此,这是基本的。我们正在进行一些工作,设想一个未来,假设 AI 的能力比现在高出几个数量级,而现在的 AI 已经非常强大。
您可以想象一些情况,您可以在飞速创建定制的动态应用程序,因此我们在这里进行一些有趣的工作,非常早期的实验性工作,关于如何使用 AI 来实现生成式 UI 体验,如果这真的实现,您可以想象一个世界,在网络上,您拥有
完全由 AI 制作的体验,而 Flutter 成为 AI 的首选 UI 语言。因此,我们在这里进行一些早期的实验性工作。Flutter 团队目前并没有使用 AI 来进行辅助编码。但这也是我们正在研究的事情之一,即 AI。
如何在 AI 中进行辅助编码。我从战略角度出发,喜欢思考我们可以创新而不仅仅是复制的方法。因此,您可能会注意到我对辅助编码有一点犹豫,因为在 GitHub Copilot 和类似的东西上已经有很多出色的工作。因此,我想确保我们所做的确实为这个领域带来了一些新的东西,而不仅仅是复制。
这真的很有趣。我喜欢 AI 的想法是,目前用户需要弄清楚如何使用他们的应用程序,而在未来,应用程序需要弄清楚如何使用户能够使用,或者说是反转的。是的,确实如此。这令人兴奋,但我认为这也可能让开发者有点紧张。
是的,我的意思是,有很多人说,您知道,我们在编写 AI 工具吗?我们是在帮助消除自己的工作吗?也许,您知道,我们会看到。您能谈谈,您谈到了路线图,但 Flutter 的未来,您希望它在五年后处于什么位置吗?是的,我认为我们的目标一直是并仍然是 AI。
让 Dart 成为最佳通用编程语言,让 Flutter 成为绘制像素的最佳方式,结束。因为我们不想陷入这样的陷阱:嘿,由于我们是多平台的,会有巨大的权衡,您将无法像在 iOS 上使用本机工具包、在 Android 上使用本机工具包或在 JavaScript 的网络上使用当今热门框架那样好。
我们一直拒绝这个前提,并表示不,我们希望成为多平台的,但我们希望成为为任何一个平台编写的最佳方式。我们继续追求这个目标。因此,您知道,如果我展望五年甚至十年,我看到一个世界,您知道,如果我们正确执行并利用我们的社区等,Flutter 将无处不在,对吧?我的意思是,考虑到构建某个东西两次、三次或四次是多么愚蠢,您会考虑所有不同的平台。
那么,您为什么要这样做呢?您为什么不拥抱一个多平台框架?而历史上,答案一直是权衡并不值得。因此,我们正在努力使这些权衡为零,并说,看看,您不必放弃任何东西就能获得多平台。在一个平台繁荣的世界中,我的意思是,我们有 LG Embedder,丰田正在为他们所有的车载 UI 做这件事。您可以想象新的平台不断涌现。
人们会说,哦,您知道,糟糕,我现在是否需要雇佣一个新的开发团队或学习一个新的框架来为这个新平台构建?不,不,您应该能够使用 Flutter。因此,当我展望未来时,我认为 Flutter 和 Dart 的未来是光明的,必将无处不在。听起来是一个非常美好的未来。最后,您还有什么想补充或推广的吗?不,我认为您涵盖了所有重要话题。是的,我的意思是,我们刚刚提到这一点,但我真的认为未来非常光明。我真的很喜欢,我继续,我的意思是,