Skip to content
You must be logged in to sponsor machty

Become a sponsor to Alex Matchneer

Support the Modernization of Ember.js's Language Tooling

Hello, I'm Alex Matchneer, a long-time Ember.js developer, Ember.js Core Team alumnus, and the author of Ember Concurrency, one of the most popular Ember.js addons. I am currently working on an exciting project to rebuild Glint, Ember.js's TypeScript-powered language server, atop Volar.js, a powerful language tooling framework that powers Vue's language tooling and the tooling for many other web frameworks.

Motivation

I became motivated to work on Glint when I started using Ember.js's modern component format (<template> tags embedded within .gts and .gjs files - see the Polaris Edition docs) and realized that some very basic editor functionality was missing and frankly seemed quite broken. This puts Ember users somewhat in a bind -- do you want to take the time to convert to a modern and exciting component authoring format if the day-to-day editor and tooling experience is going to feel broken?

Since then, I merged a Glint PR to implement Auto-import support for .gts/.gjs files, in which time it became clear to me that there was a very long and grueling road ahead if Ember's language tooling ever wanted to achieve any sort of competitive feature parity with the language tooling from other well-known web frameworks.

Enter Volar.js: a framework for building language tooling that was essentially extracted from Vue language tooling. In a reasonably short amount of time I was able to put together a spike to rework Glint internals to use Volar.js to parse a .gts file with an embedded <template>. I was impressed to find that not only were Auto-Imports working, but also a number of other common Refactor tools and niceties that one would come to expect from working with vanilla .ts TypeScript files.

Based on this experience, I wrote an RFC to provide a roadmap for how to improve and modernize Ember.js's tooling, in particular by proposing migrating Glint to work atop Volar.js. This RFC has been very well received and it is clear to me that the community is very excited about the prospect of using a Volar-ized Glint.

Why I Need Your Support

I am working on establishing a more consistent source of sponsorship via various companies in the coming months, but I don't want to hold up Glint's progress in the meantime. I have already invested a significant amount of time into this migration, and your support can help bridge the gap until more stable funding is secured.

What Your Sponsorship Will Support

I have outlined a comprehensive plan to modernize and consolidate Ember.js's language tooling in an RFC
, which has been very well-received by the community. Your sponsorship will directly support the following:

  • Completion of the Migration to Volar: With initial support for .gts / .gjs files (i.e., first-class support for the Polaris edition of Ember).
  • Support for Classic Components: Ensuring compatibility with classic two-file JS/TS and HBS components.
  • Performance Improvements: Shifting Glint to function as a performant TS Server Plugin rather than a separate and redundant Language Server running alongside the default TS server.
  • Eventual Consolidation with Ember Language Server: Integrating Glint with the other major Ember.js language server that predates Glint.

Where can I monitor progress?

(I will keep this section updated as new PRs are introduced)

https://github.com/machty/glint/pull/6

Join Me on This Journey

By becoming a sponsor, you are directly contributing to the betterment and longevity of the Ember.js ecosystem. Your support will also ensure that Ember developers worldwide have access to top-notch language tooling.

Thank you for considering supporting my work. Together, we can build something truly impactful for the Ember community.

13 sponsors have funded machty’s work.

@machty

Please sponsor my work on rebuilding Glint (Ember's TS Language Server) atop Volar.js!

@betocantu93
@johanrd
@cloke
@trek
@jaredgalanis
@evoactivity
@NullVoxPopuli
@aklkv
@cardstack
@IgnaceMaes
@barryofguilder
@seanCodes
@SergeAstapov

Featured work

  1. machty/ember-concurrency

    ember-concurrency is an Ember Addon that enables you to write concise, worry-free, cancelable, restartable, asynchronous tasks.

    JavaScript 691
  2. typed-ember/glint

    TypeScript powered tooling for Glimmer templates

    TypeScript 108

26% towards 50 monthly sponsors goal

@NullVoxPopuli @betocantu93
@johanrd @jaredgalanis @trek @IgnaceMaes @cloke

NullVoxPopuli and 12 others sponsor this goal

Select a tier

$ a month

Choose a custom amount.

$25 a month

Select

Thank you for your generous sponsorship!

$50 a month

Select

Thank you for your incredibly generous sponsorship!

$100 a month

Select

Silver Sponsor

  • Your logo will appear on Ember Concurrency's website and GitHub README

$250 a month

Select

Gold Sponsor

  • Your logo will appear on Ember Concurrency's website and GitHub README
  • The logo will be placed in a more prominent position

$1,000 a month

Select

Platinum Sponsor

  • Your logo will appear on Ember Concurrency's website and GitHub README
  • The logo will be placed in a more prominent position
  • Display your company introduction

$2,500 a month

Select

Double-Platinum Sponsor

  • Your logo will appear on Ember Concurrency's website and GitHub README
  • The logo will be placed in a more prominent position
  • Display your company introduction
  • I join your company's chat (e.g. Slack) and generally available to chat, answer questions, and prioritize language tooling fixes/enhancements to address your team's painpoints
  • 2 hours of pair programming sessions per month

$5,000 a month

Select

Diamond Sponsor

  • Your logo will appear on Ember Concurrency's website and GitHub README
  • The logo will be placed in a more prominent position
  • Display your company introduction
  • I join your company's chat (e.g. Slack) and generally available to chat, answer questions, and prioritize language tooling fixes/enhancements to address your team's painpoints
  • 4 hours of pair programming sessions per month