The Ember Times - Issue No. 175

– By Isaac Lee, Amy Lam, Chris Ng, Jared Galanis

👋 Emberistas! 🐹

Ember Community Survey 2021, official TypeScript support RFC, EmberConf Contributors Workshop, Ember - a beacon of productivity, ember-responsive-image v2 released, Mirage JS for complex testing, and new podcast episodes!


Ember Community Survey 2021 📆

The annual community survey is up - please take the survey today and let us know what you think about Ember!

  • Totally Anonymous: No personal identification is attached to survey responses. Last year, over 1000 participants shared information about themselves, their businesses, and applications.
  • At EmberConf, the results to the 2021 survey will be shared with a comparison to the 2020 results. Detailed aggregate and individual responses will also be made public.

Take the 2021 Ember Community Survey

Questions? Feedback? Please join us in the #dev-ember-learning channel on the Discord community chat, or email the survey team via survey@emberjs.com.

P.S. Please spread the word about the survey, ask your friends and coworkers to fill it out today!


RFC: Official TypeScript support ✅

Chris Krycho (@chriskrycho) put up an RFC for Official TypeScript support in Ember. The goal of the RFC is to determine if we should support TypeScript as a first-class citizen in Ember, and if yes, identify any gaps present today.

Ember officially supporting TypeScript means: All libraries which are installed as part of the default blueprint must ship accurate and up-to-date type definitions for the current edition. These types will uphold a Semantic Versioning commitment which includes a definition of SemVer for TypeScript types as well as a specification of supported compiler versions and settings, so that TypeScript will receive the same stability commitments as the rest of Ember.

  • Any addon that is part of the default blueprint must ship types
  • Define a policy on what constitutes a breaking change for consumers of a library which publishes types, including Ember’s core libraries
  • New Ember apps and addons should support TypeScript by default, though the details of what that means (for example how it will use ember-cli-typescript or not) will be resolved in future RFCs
  • The RFC explicitly does not require support for “typed templates” (though the community is working on this and thinks it’s key to the long-term TypeScript story)

Read and comment on the RFC on GitHub!


EmberConf Contributors Workshop 🐹

We're certainly all excited about the upcoming (virtual) EmberConf 2021, but don't forget that there's a Contributors Workshop too!

The Contributors Workshop, hosted by Ricardo Mendes (@locks) and Ava Gaiety Wroten (@hergaiety), will bring our community together to share knowledge about how you can make your first contribution to Ember. There's not much more to it, all you need to bring is an eagerness to learn and contribute to the framework we know and love! 💜💛🧡❤️

You can register for the workshop here.


Ember - a beacon of productivity 📖

Marco Otte-Witte (@marcoow) has written an excellent new blog post for the Simplabs blog about why Ember is still a beacon of productivty in a sea of complexity, even after 10 years.

Marco covers how Ember's approach can avoid accidental complexity and all the other things that makes it such a great tool. Even if you know and love Ember, it's well worth a read, so please check out the post if you get a chance.


ember-responsive-image v2 released 🖼️

ember-responsive-image is an addon created by Simon Ihmig (@simonihmig). At build time, the addon uses sharp to generate resized images that are optimized for web.

Simon announced the v2 release, which provides the following features:

  • <ResponsiveImage> rewritten as a Glimmer component
  • Next-gen image formats WebP and AVIF
  • Fixed and responsive layouts
  • Lazy loading + LQIP (Low Quality Image Placeholders)
  • FastBoot and Embroider support

To learn more how ember-responsive-image can help you optimize loading images, we encourage you to check out the following links:


How Qonto used Mirage JS for complex user flow testing ⬆️

Sabin Hertanu (@herzzanu) details a testing challenge he ran into at Qonto in the article How to handle uploading and parsing files in your frontend app tests. In Qonto's Ember app, users can upload a file to their servers for creating transfers in bulk. The server reads, parses, and processes the data before sending a list of transfers in response. Mocking the endpoints to accurately match this full process would take a lot of time and code, in addition to being challenging to maintain and scale.

Mirage JS is a library for mocking API endpoints as route handlers to test JavaScript apps, without having to rely on any backend services. Sabin discusses how Qonto uses Mirage Factories to test this tricky user flow. Check out the walkthrough with test code samples in the blog post to learn about how Qonto mocked the API to make sure it matches what they would expect from the real API in production. Effective testing can pay dividends in improving the developer experience and maintaining the quality of the user experience!


New Podcast Episodes 🎙

There are fresh episodes of the new Ember-related podcasts available now! 🔥🔥🔥

The Ember Report has published a great episode that features David Tang (@skaterdav85) who shares all about how he came to write his Ember Data books, "Ember Data in the Wild" and the more recently published Pro Ember Data. They cover a ton of good subjects, such as how David got into teaching web development and also dig into a variety of Ember Data subjects, so check out the podcast when you can!

Also, the Whiskey, Web and Whatnot podcast has released a cool new episode that features Chris Garrett (@pzuraq). They talk about whiskey, of course, but also cover some of the new exciting new things that Chris has been working on for Glimmer and Ember - strict mode and template imports amongst other things. Great stuff!


Contributors' corner 👏

This week we'd like to thank Liam Potter (@evoactivity), Jeff Daley (@jeffdaley), Pat O'Callaghan (@patocallaghan), Pranav Gajjewar (@Cartmanishere), Giles Thompson (@gilest), Ricardo Mendes (@locks), Thomas Wang (@xg-wang), Steven (@smfoote), Stefan Penner (@stefanpenner), Alex LaFroscia (@alexlafroscia), Chris Garrett (@pzuraq), Steven Tsao (@steventsao), Sylvain MINA (@sly7-7), Aaron Renoir (@arenoir), Bryan Mishkin (@bmish), Katie Gengler (@kategengler), Melanie Sumner (@MelSumner), Alex Kanunnikov (@lifeart), Dan Freeman (@dfreeman), Stanislav Romanov (@kaermorchen), Jared Galanis (@jaredgalanis), Amy Lam (@amyrlam), Jen Weber (@jenweber), Edward Faulkner (@ef4), Travis Hoover (@thoov), Esquith Allen (@esquith), Sam Van Campenhout (@Windvis), Bert De Block (@bertdeblock), Robert Jackson (@rwjblue), Zhan Wang (@zhanwang626), Simon Ihmig (@simonihmig), Ben Demboski (@bendemboski), Chris Ng (@chrisrng), Steve Calvert (@scalvert), Logan Rosen (@loganrosen), Chris Manson (@mansona), Rob Pemberton (@rpemberton), Isaac Lee (@ijlee2), and Félix Dion-Robidoux (@fdrobidoux) for their contributions to Ember and related repositories! 💖


Connect with us 🤓

Office Hours Tomster Mascot

Wondering about something related to Ember, Ember Data, Glimmer, or addons in the Ember ecosystem, but don't know where to ask? Readers’ Questions are just for you!

Submit your own short and sweet question under bit.ly/ask-ember-core. And don’t worry, there are no silly questions, we appreciate them all - promise! 🤞

Want to write for the Ember Times? Have a suggestion for next week's issue? Join us at #support-ember-times on the Ember Community Discord or ping us @embertimes on Twitter.

Keep on top of what's been going on in Emberland this week by subscribing to our e-mail newsletter! You can also find our posts on the Ember blog. See you in two weeks!


That's another wrap! ✨

Be kind,

Isaac Lee, Amy Lam, Chris Ng, Jared Galanis, and the Learning Team