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

Advance RFC #1003 "Deprecate import Ember from 'ember';"` to Stage Ready for Release #1015

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

Conversation

emberjs-rfcs-bot
Copy link
Collaborator

@emberjs-rfcs-bot emberjs-rfcs-bot commented Mar 22, 2024

Advance #1003 to the Ready For Release Stage

Rendered

Summary

This pull request is advancing the RFC to the Ready For Release Stage.

An FCP is required before merging this PR to advance.

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

Ready for Release Stage Description

This stage is complete when the implementation is complete according to plan outlined in the RFC, and is in harmony with any changes in Ember that have occurred since the RFC was first written. This includes any necessary learning materials. At this stage, features or deprecations may be available for use behind a feature flag, or with an optional package, etc.

For codebase changes, there are no open questions that are anticipated to require breaking changes; the Ember team is ready to commit to the stability of any interfaces exposed by the current implementation of the feature.

This stage should include a list of criteria for determining when the proposal can be considered Recommended after being Released.

An FCP is required to move into this stage.

Each Ember core team will be requested as a reviewer on the PR to move into this stage. A representative of each team adds a review. If a team does not respond to the request, and after the conclusion of the FCP, it is assumed that the release may proceed.

Checklist to move to Ready for Release

  • Implementation is complete according to plan outlined in the RFC, with any adjustments noted in the RFC
  • Any necessary learning materials have been updated
  • The Ember team is ready to commit to the stability of any interfaces exposed by the current implementation of the feature. This is the go/no go decision for any feature flags, but the flags should only be turned on when moving to Released.
  • The feature may not yet have support by the entire ecosystem (e.g. IDEs, addons, Ember Inspector, Engines, Lint Rules, Blueprints, etc), but it does not unintentionally break any existing functionality in those areas.
  • The Interactive Tutorial is not broken by this feature.
  • Criteria for moving to the Recommended Stage has been filled out
  • This PR has been converted from a draft to a regular PR and the Final Comment Period label has been added to start the FCP
  • Each team has been added as a reviewer to the PR at the start of the FCP. Reviews are not required by the end of the FCP. This is a notification step.
    • Framework @emberjs/framework
    • Data @emberjs/ember-data-core
    • CLI @emberjs/cli
    • Learning @emberjs/learning-core
    • Typescript @emberjs/typescript-core
    • Steering @emberjs/steering

Criteria for moving to Recommended (required)

A set of criteria for moving this RFC to the Recommended Stage, following release:

  1. Update ember-data and other blueprint-packages to avoid import Ember from "ember"

Track Implementation

@emberjs-rfcs-bot emberjs-rfcs-bot added RFC Advancement S-Ready for Release PR to move to the Ready for Release Stage labels Mar 22, 2024
@kategengler
Copy link
Member

Backed this out of FCP -- the deprecation guides haven't been accepted and there a few blockers to being able to enable the deprecation.

@NullVoxPopuli
Copy link
Contributor

NullVoxPopuli commented Jun 4, 2024

Status Update:
Goal: get default blueprint non-violating with this set of deprecations.

Done, probably (pending any required changes from Outstanding):

Outstanding

@davidtaylorhq
Copy link

Is there a plan for Ember.EventDispatcher? I don't see it listed in the RFC, or the deprecation-guides PR 👀

(context: we access it to disable its functionality, so that we can use our own our own browser-native events implementation for classic components, and therefore have better support for mixing glimmer/classic components)

@ef4
Copy link
Contributor

ef4 commented Jul 5, 2024

EventDispatcher would still be accessible at:

import { EventDispatcher } from '@ember/-internals/views';

It would be really good if you could upstream that more-compatible event dispatching. It could be behind an optional feature so it's non-breaking. Instead of paying for the whole old event dispatching system that you don't want to use anyway, the optional feature could make sure it's dropped from the build.

I don't think it would be a controversial RFC, especially since you've already done the work to thoroughly test how compatible it is.

@kategengler kategengler mentioned this pull request Oct 1, 2024
11 tasks
@ef4
Copy link
Contributor

ef4 commented Nov 8, 2024

Now is a good time to re-check whether we can get the stock blueprint running cleanly with no deprecation firing. We think everything is done but upgrades (like @glimmer/component) in the blueprint may need to land.

The inspector issue can still get tracked as a blocker for Recommended, not Released.

@ef4
Copy link
Contributor

ef4 commented Nov 8, 2024

It would be good to implement the optional deprecation activation in #896 as a way to test this deprecation.

@NullVoxPopuli
Copy link
Contributor

enabling PR: emberjs/ember.js#20813

text:

What are folks thoughts on enabling this? and then the deprecation messages would force us to work on improving the inspector experience?

I have some ideas for how to bring back compatibility.

Our setup would be something like this:

const EMBER_INSPECTOR_SUPPORT = Symbol.for('__EMBER_INSPECTOR__');
globalThis[EMBER_INSPECTOR_SUPPORT] ||= {};
globalThis[EMBER_INSPECTOR_SUPPORT].init = async function loadEmberInspectorUtilities() {
  // store things on the secret object 2 lines above
  globalThis[EMBER_INSPECTOR_SUPPORT].tracking = await import(...);
  /* ... etc ... */.container = await import(...);

  // ensuring to set up an event listener pair for communicating via postMessage with the inspector
}

This should probably wrap all of this code: https://github.com/emberjs/ember.js/pull/20775/files#diff-b2c569a1648b65b7314971b3bd201a82fda450a5cccc8c3d415b864166c98e27

And then on the app side, we only need to load the module, since everything the inspector needs is await-imported

import '@ember/inspector-support';

And then on the inspector side, we access the globalThis

// loading the inspector
await globalThis[EMBER_INSPECTOR_SUPPORT].init();

// we can now start building the UI / Panels in the ember-inspector project.

@PatrickJS , @ef4 thoughts?

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

Successfully merging this pull request may close these issues.

5 participants