通往 Elm 1.0 之路

对“通往 1.0 之路”公告的总体反应

  • 许多人对 Elm 在发布之间隔了 7 年后居然还活着感到惊讶。
  • 一些人欢迎任何“还活着”的迹象,并表达了对 Elm 的优雅以及其过去影响的喜爱。
  • 另一些人则认为把一个小幅编译器提速包装成“通往 1.0 之路”令人失望,也象征着这个项目实际上已经结束。

稳定性、停滞与生产适用性

  • 支持者把这 7 年的空档描述为“稳定性”:多年前的代码至今仍能编译并运行。
  • 批评者认为,未解决的 bug、缺失的架构(例如嵌套 SPA)以及缺乏新的平台特性意味着的是“停滞”,而不是稳定。
  • 一些公司表示 Elm 已在生产环境中成功使用多年;另一些公司则已经迁移离开(通常转向 React),理由包括长期存在的问题、浏览器扩展不兼容,以及对未来维护缺乏信任。

治理、社区动态与 0.19 的余波

  • 反复出现的主题:单维护者/BDFL 模式、几乎没有路线图、以及对 bug 报告和功能请求响应很少。
  • 0.19 的破坏性变更(尤其是围绕互操作和“仅官方认可”功能)被广泛视为撕裂社区。
  • 一些评论将版主管理和讨论环境描述为高度受控,不鼓励异议或批评,这也促使人们离开。

JavaScript 互操作与生态限制

  • 原生 JS 模块和一些高级特性(自定义运算符、某些 kernel)被限制为“官方”代码可用;其他人必须使用 ports、Web 组件或各种 hack。
  • 支持者把这视为纯粹性、可移植性和小而可分析核心之间的权衡。
  • 批评者认为这实际上扼杀了第三方实验、i18n/i10n 绑定以及对浏览器 API 的访问,迫使人们一再重复造轮子。
  • 包管理器的中心化(仅限官方仓库)也是一个痛点。

开发者体验:优点与缺点

  • 广受赞扬的方面:简洁的核心语言、Elm Architecture、强类型、出色的编译器错误信息、良好的重构友好性、运行时安全性(“如果能编译,基本就能工作”)。
  • 有些人觉得语法或 ML 风格不讨喜;另一些人指出其冗长,以及在处理大数据时递归的限制。
  • 有人提到针对本地化和可访问性存在一些变通方案,但批评者认为缺乏一等公民支持,使得把 1.0 称为“可用于生产”站不住脚。

Elm、LLM 与生态继任者

  • 多条评论称,Elm 的小表面面积、强意见的架构以及强类型,使其非常适合 LLM 驱动的编码和 agentic 工作流;也有人表示早先的一些问题似乎已经有所改善。
  • 讨论的焦点之一是:LLM 是否减少了“选择框架”的必要,还是仍然需要稳固的基础和生态系统。
  • 还有几条评论提到受 Elm 启发或与 Elm 相近的选择(例如带 UI 库的 Gleam、Rust 框架如 Yew/Iced、Elm 到原生的编译器,以及像 Gren 这样的分支/继任者),认为它们是更社区化的前进路径。