rfcs icon indicating copy to clipboard operation
rfcs copied to clipboard

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

Open emberjs-rfcs-bot opened this issue 1 year ago • 4 comments

Advance #1003 to the Ready For Release Stage

Rendered

Summary

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

  • PR to Accepted Stage: #1003

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

  • [x] Implementation is complete according to plan outlined in the RFC, with any adjustments noted in the RFC
  • [ ] Any necessary learning materials have been updated
  • [x] 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.
  • [x] 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.
  • [x] Criteria for moving to the Recommended Stage has been filled out
  • [x] 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

  • [x] https://github.com/emberjs/ember.js/pull/20686
  • [x] https://github.com/ember-learn/guides-source/pull/2028
  • [ ] Deprecation guides https://github.com/ember-learn/deprecation-app/pull/1381
    • [ ] Enable grouping in deprecation guides so we don't scare people @kategengler https://github.com/ember-learn/deprecation-app/pull/1383
    • [ ] Update #1381 above to use the deprecation grouping
  • [ ] Enable deprecation on ember-source
  • [ ] Enable ember.js "node-tests" to work without the Ember barrel file

emberjs-rfcs-bot avatar Mar 22 '24 18:03 emberjs-rfcs-bot

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

kategengler avatar Jun 04 '24 18:06 kategengler

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

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

  • https://github.com/ember-learn/deprecation-app/pull/1381
    • has details on how to migrate all of the below as well

Outstanding

  • Ember Inspector:

    • [ ] release
    • [ ] https://github.com/emberjs/ember-inspector/pull/2572
    • [ ] Move more utilities into Glimmer
      • [ ] https://github.com/glimmerjs/glimmer-vm/pull/1489
      • [ ] https://github.com/glimmerjs/glimmer-vm/pull/1589
    • [ ] Update ember to provide a debug-utilities-focused export of private utils for the inspector to use
      • [ ] https://github.com/emberjs/ember.js/pull/20580
  • ember-cli-app-version

    • [x] release - https://github.com/ember-cli/ember-cli-app-version/releases/tag/v7.0.0
    • [x] Uses EmberBarrelDefaultExport.libraries - https://github.com/ember-cli/ember-cli-app-version/blob/master/addon/initializer-factory.js#L3
      • [x] https://github.com/ember-cli/ember-cli-app-version/pull/416
    • [x] Needs general CI maintenance for confidence in changes
      • [x] https://github.com/ember-cli/ember-cli-app-version/pull/414
    • Maybe we add a @ember/user-meta to support this:
      import { libraries } from '@ember/user-meta';
      
      libraries.register('name of thing', 'version or whatever');
      
      (instead of getting rid of the thing entirely) UPDATE: this isn't explicitly needed as libraries can be imported from @ember/-internals/metal
  • ember-resolver

    • [x] release - changes available in v12 - https://github.com/ember-cli/ember-resolver/releases/tag/v12.0.0
    • [x] Needs to remove TEMPLATES - https://github.com/ember-cli/ember-resolver/blob/main/addon/addon/index.js#L298
      • [x] use resolver-local cache instead of this one from ember.
        • [x] https://github.com/ember-cli/ember-resolver/pull/973
    • [x] Needs to remove Ember.ENV - https://github.com/ember-cli/ember-resolver/blob/main/addon/addon/index.js#L462
      • [x] use resolveRegistration to lookup the app's config
    • [x] But also, some general CI maintenance for confidence in changes
      • [x] https://github.com/ember-cli/ember-resolver/pull/972
  • [ ] @glimmer/component

    • [ ] Moving into ember-source, PR https://github.com/emberjs/ember.js/pull/20751. This fixes the deprecation too.
  • [x] @ember/test-helpers

NullVoxPopuli avatar Jun 04 '24 18:06 NullVoxPopuli

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)

davidtaylorhq avatar Jul 05 '24 13:07 davidtaylorhq

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.

ef4 avatar Jul 05 '24 23:07 ef4