glimmerjs/glimmer.js

2.0 Roadmap

Opened this issue ยท 6 comments

Features

  • Add modifier managers
  • Add experimental helper managers
  • Add experimental hostMeta

Cleanup

  • Upgrade VM to latest
  • Drop support for string resolution of component managers
  • README should be updated
  • Drop proposal-class-properties babel plugin in favor of preset-env
  • Add esm package
  • Move root index.html to be in the actual application it's related to

There is a recipe for using glimmer components as web components. I've used this a couple of times, including in production ๐Ÿ˜ˆ. For my use-cases the current mechanism is fine, but I'm curious if v2.0 will continue to support this or maybe even expand to include slots.

Glimmer.js 2 will not support this directly out of the box at first, though it should be possible to add it yourself through a web-component wrapper similar to @glimmer/web-component.

The goal of v2 is to be much more flexible and minimal overall though. There is no more resolution, and no need to create an app instance, so you should be able to use renderComponent multiple times fairly easily. Along with template imports, this should make adopting Glimmer.js incrementally much easier. We are specifically designing this with the ability to adopt incrementally for React/Vue/Svelte users, for instance, if that help.

Follow-up question: could I expect that, for 2.0, glimmer components created in an ember app work out of the box in a glimmer-only setup?

Example use-case: stand-alone visualization that is built in a glimmer codebase that I want to bring into an ember app by doing a simple import rather than including a compiled script

One of the goals is to allow for a library built on top of Glimmer 2 that enables this. There will be some minor differences, but otherwise it should work.

One of the goals is to allow for a library built on top of Glimmer 2

So ember will be built on top of glimmer 2?

No, the immediate goal is to rebuild @glimmerx on top of Glimmer 2. @glimmerx will have a more opinionated set of defaults, such as default Helper and Modifier implementations, but will otherwise work pretty much the same. It will also ensure it works with both Ember and Glimmer apps but swapping out implementations of things when used in one environment of the other.

See: https://github.com/tomdale/glimmer-lite-donut/

Long term, I'd like to get Ember to a place where it can be rebuilt on this core, but we're a long ways off from that.