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

πŸ›€οΈ tracking: universal support for all JS Applications #8147

Closed
10 of 23 tasks
runspired opened this issue Aug 24, 2022 · 5 comments
Closed
10 of 23 tasks

πŸ›€οΈ tracking: universal support for all JS Applications #8147

runspired opened this issue Aug 24, 2022 · 5 comments

Comments

@runspired
Copy link
Contributor

runspired commented Aug 24, 2022

Codename: πŸ”Œ Project Unplug πŸ”Œ
Goal: Full decoupling from Ember's build, object model, scheduling, and reactivity model

Blocking

  • Deprecate RSVP Chain Cutting
  • Deprecate RSVP Timing (needs more implementation work)
  • deprecate Store extending EmberObject
  • provide default alternative to @ember-data/model
  • provide a build plugin for applications to do final compile with config
    • also necessary to become first-class embroider-optimized compatible
  • eliminate backburner destroy/actions queue usage
  • stop extending from Ember Service for the Store Service
  • remove use of dependentKeyCompat in store package
  • refactor @ember-data/tracking and audit @glimmer/tracking usage to a configuration point
    • this is mostly done and likely we could just put Starbeam there and call it a day.
  • remove runloop destroy usage from record-data package
  • remove isEqual usage from record-data package
  • provide a hook to configure @ember-data/tracking for glimmer/non-glimmer (or starbeam)
  • Configuration point for @ember/test-waiters for non-ember projects

Non Blocking

  • replace @ember/debug with something driven by our own config
  • replace @ember/string usage in builders with something lighter of our own
  • eliminate use of Ember Inflector in the core (almost done, currently approved RFC deprecations once implemented will result in removal). Make inflection in builders either configurable or use something lightweight of our own.
  • eliminate adapterFor/serializerFor resolver lookups
    • note this is already "done" for any app using RequestManager only
  • eliminate modelFor resolver lookups
    • note this already "done" for any app not using @ember-data/model

Updated Tests

  • remove runloop usage in tests
  • remove A usage in tests
  • convert classic syntax usage in tests to native syntax
  • remove RSVP usage in tests
  • remove EmberObject get/set etc. usage in tests
@fivetanley
Copy link
Member

What is RSVP timing?

@runspired
Copy link
Contributor Author

@fivetanley RSVP promises resolve in coordination with each other and the runloop in ways that native promises do not. They also do not interop with async/await in ways you might expect (the timing of the flush is different). Many of our tests rely on this and will need fixed, and user's apps may see unexpected errors where they were unknowingly benefiting from one outcome of a race condition being more common.

For the deprecation bit, I suspect we need a global flag that switches which promise we use from RSVP to native, deprecate the non-native flag-state, and let apps manage the migration, with native being the only thing used in 5.0.

@acorncom
Copy link
Contributor

acorncom commented Dec 8, 2022

and let apps manage the migration, with native being the only thing used in 5.0.

@runspired I assume you mean "in 6.0" here, with the migration between promise libraries occurring during the course of the 5.x series?

@runspired
Copy link
Contributor Author

@acorncom depends on when the work is done. The list in this ticket is non-essential for 5.0 unless also mentioned in the embroider or 5.0 roadmaps. More than likely this will happen post-5.0 and of course we could implement now and not deprecate till 5.0

@runspired runspired added this to the Polaris milestone Sep 11, 2023
@runspired runspired removed the Polaris label Sep 11, 2023
@runspired runspired modified the milestones: Polaris, πŸ”Œ Unplug Sep 11, 2023
@runspired runspired removed this from the πŸ”Œ Unplug milestone Sep 11, 2023
@runspired runspired changed the title Quest: πŸ”Œ Project Unplug πŸ”Œ tracking: universal support for all JS Applications Sep 16, 2023
@runspired runspired changed the title tracking: universal support for all JS Applications πŸ›€οΈ tracking: universal support for all JS Applications Sep 17, 2023
@runspired
Copy link
Contributor Author

closing in favor of the tracking in the mega-list for Polaris #9337

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

No branches or pull requests

3 participants