Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce "Ember Language Tooling Roadmap" RFC #1014

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

machty
Copy link
Contributor

@machty machty commented Mar 17, 2024

Propose Ember Language Tooling Roadmap

Rendered

Summary

This pull request is proposing a new RFC.

To succeed, it will need to pass into the Exploring Stage), followed by the Accepted Stage.

A Proposed or Exploring RFC may also move to the Closed Stage if it is withdrawn by the author or if it is rejected by the Ember team. This requires an "FCP to Close" period.

An FCP is required before merging this PR to advance to Accepted.

Upon merging this PR, automation will open a draft PR for this RFC to move to the Ready for Released Stage.

Exploring Stage Description

This stage is entered when the Ember team believes the concept described in the RFC should be pursued, but the RFC may still need some more work, discussion, answers to open questions, and/or a champion before it can move to the next stage.

An RFC is moved into Exploring with consensus of the relevant teams. The relevant team expects to spend time helping to refine the proposal. The RFC remains a PR and will have an Exploring label applied.

An Exploring RFC that is successfully completed can move to Accepted with an FCP is required as in the existing process. It may also be moved to Closed with an FCP.

Accepted Stage Description

To move into the "accepted stage" the RFC must have complete prose and have successfully passed through an "FCP to Accept" period in which the community has weighed in and consensus has been achieved on the direction. The relevant teams believe that the proposal is well-specified and ready for implementation. The RFC has a champion within one of the relevant teams.

If there are unanswered questions, we have outlined them and expect that they will be answered before Ready for Release.

When the RFC is accepted, the PR will be merged, and automation will open a new PR to move the RFC to the Ready for Release stage. That PR should be used to track implementation progress and gain consensus to move to the next stage.

Checklist to move to Exploring

  • The team believes the concepts described in the RFC should be pursued.
  • The label S-Proposed is removed from the PR and the label S-Exploring is added.
  • The Ember team is willing to work on the proposal to get it to Accepted

Checklist to move to Accepted

  • This PR has had the Final Comment Period label has been added to start the FCP
  • The RFC is announced in #news-and-announcements in the Ember Discord.
  • The RFC has complete prose, is well-specified and ready for implementation.
    • All sections of the RFC are filled out.
    • Any unanswered questions are outlined and expected to be answered before Ready for Release.
    • "How we teach this?" is sufficiently filled out.
  • The RFC has a champion within one of the relevant teams.
  • The RFC has consensus after the FCP period.

@github-actions github-actions bot added the S-Proposed In the Proposed Stage label Mar 17, 2024

## How we teach this

(This RFC section not applicable.)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe we'll need to address a couple of points here (depending on how much in depth we want to go considering this is a roadmap):

  • If GlimmerX support is dropped: what communication is needed? At least it seems like there should be a notice on glimmerjs.com mentioning this.
    • Do we expect current users to stay on old versions of language tooling?
  • Will there be a change in how we should teach people to set up editor support in the guides?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GlimmerX, afaict, wasn't even standard Glimmer. It was just an experiment from LinkedIn, i think (tho, someone correct me if this is wrong)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@NullVoxPopuli this is my understanding as well. I opened an issue on GlimmerX for a maintainer to comment.

@IgnaceMaes
Copy link
Contributor

Overall I'm a big fan, it ties in nicely with our "focus on what we're good at and use the ecosystem" story.

Copy link

@evoactivity evoactivity left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall I like this direction and definitely agree with the approach using Volar.


Continuing to support the classic two-file approach to Ember components (optional .js/.ts component file backing the .hbs template) will be more difficult than only supporting .gjs/.gts files (in fact one of the motivators for the .gts format was to avoid the complexity/ambiguity of the multi-file approach). I have not reached the point of the Volar spike to know how practical/possible it is to represent the classic two file approach.

There have been some discussions in the community as to whether we should just cut ties with the two-file past, but given that language tooling for .gts/.gjs is not that great, there's been less motivation for people (including this RFC's author) to migrate their components to .gts until tooling "is ready", and even when it is ready, it's still a lot of work for companies to migrate their code to .gts.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We discussed this and my vote is that any new tooling is only focused on the future and happy path. People still needing to support older apps can use the older tooling.

it's still a lot of work for companies to migrate their code to .gts.

This burden should be eased once @void-mAlex finishes his codemod

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will be easier to achieve the .gts/.gjs support milestone as its own unit of work, regardless of class-backed component support, so maybe we can revisit that later. Maybe I can update the RFC to separate gts support out as a more agreeable preliminary milestone.


### Proposal 4: Migrate Glint to provide editor completions, type-checking, etc, using a TS Plugin

Vue Language Tooling has deprecated their Language-Server-backed language tooling in favor of a TS Plugin -driven tooling (while continuing to maintain vue-tsc for actually compilation of files).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would Glint continue to fulfil the same role that vue-tsc does for Vue? Does glint even get involved with compilation?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For libraries, it's been needed to generate declarations, but support for gts is rough, and has many issues. I've been recommending post processing the declarations via
https://github.com/NullVoxPopuli/fix-bad-declaration-output

(Note tho that one of those issues is a TS issue rather than Glint, in that they don't believe in the concept of peer provided types)


## Drawbacks

There is some risk to placing such a heavy bet on Volar in case they take things in a direction that is not advisable or incompatible/inconvenient to Ember. If Volar takes things in an unseemly direction, we would have to use and maintain a fork of Volar.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see this as a big risk, and even if this happens we can fork an Emlar or Vober version and we'll be back a the status quo of providing our own ecosystem specific tooling.

@spuxx1701
Copy link

Yes please. 🥳

@kategengler kategengler added S-Exploring In the Exploring RFC Stage and removed S-Proposed In the Proposed Stage labels Mar 22, 2024

This RFC provides a roadmap towards modernizing, unifying, and improving the Ember language tooling ecosystem. In particular, we recommend the following long term goals:

1. Remove support of and any reference to GlimmerX from Glint
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This appears to have happened in typed-ember/glint#716

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes; I'm feeling based on your feedback and others, including former Glint maintainers, that going through the full RFC process for this probably doesn't make much sense. I will probably close it shortly (though I'll continue to use the roadmap).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with above in mind, maybe worth to convert to an issue under https://github.com/emberjs/tracking-polaris/issues

@machty
Copy link
Contributor Author

machty commented Jun 20, 2024

Closing, as this doesn't really need full RFC / approval. We've merged initial refactor to Volar in the Glint repo and will be tracking progress in this Roadmap Issue

@acorncom
Copy link
Contributor

@machty looks like this didn’t get closed after you said “closing” … 🙂

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-Exploring In the Exploring RFC Stage
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants