Ember.js: Octane Tracking Issue

Created on 28 Nov 2018  ·  33Comments  ·  Source: emberjs/ember.js

Summary

The purpose of this issue is to provide an overall issue to track the status of the work necessary to ship the Octane Edition of Ember.js.

If anyone wants to work on any of the items in this list, please check in the #st-octane channel of our Discord chat first.

The following to-do list will be updated to include links to individual issues as they are created. The issues themselves will contain more details for each item on this list.

Goals from Roadmap RFC

Finish What We Started (Part 1 of 2)

As per the 2018 Roadmap RFC, there is commitment and focus to finishing the things we've already started.

Octane Edition Features (Part 2 of 2)

As per the roadmap RFC, these are the goals for the Octane edition; however it should be noted that
"the final timeline and feature set of Ember Octane will be determined by the core teams and are not set in stone in this RFC."

  • No jQuery by default
  • Svelte Builds (moved to next edition)
  • Native JavaScript Classes
  • Glimmer components
  • Incremental rendering and rehydration (moved to next edition)
  • Treeshaking (moved to next edition)
  • Eliminating the runloop (removing the need for developers to use Ember.run)
  • Stabilizing Ember Data (moved to next edition)

Practical Implementation of Roadmap RFC

Decorators

Core Team Champion: Tom Dale | Status: completed 🎉

  • [x] RFC emberjs/rfcs#408

    • [x] Supplemental RFC - Decorator support - [RFC #440]

  • [x] Implementation
  • [x] Documentation
  • [x] enable feature flag

    • [x] ember-cli-babel needs to transpile them by default

Glimmer Components (as the default component API)

Core Team Champion: Tom Dale | Status: completed 🎉

  • [x] RFC emberjs/rfcs#416
  • [x] Implementation [PR]
  • [x] Documentation (PR'd to Octane guides)

### Tracked Properties

Core Team Champion: Tom Dale | Status: completed 🎉

  • [x] RFC

    • [x] [[Issue]](https://github.com/emberjs/rfcs/issues/404)

    • [x] written [RFC #410]

    • [x] reviewed

    • [x] FCP (1/25/19)

    • [x] merged

  • [x] Implementation (POC in-progress, @pzuraq)
  • [x] Documentation

    • [x] enable feature flag

    • [x] fix the infinite render CP bug #17799 (https://github.com/emberjs/ember.js/pull/17835)

    • [x] observer interop compat

    • [x] performance tests

### Element Modifiers

Core Team Champion: Tom Dale | Status: completed 🎉

  • [x] RFC

    • [x] written [RFC #415]

    • [x] reviewed

    • [x] FCP

    • [x] merged

  • [x] Supporting RFC: Forwarding Element Modifiers with "Splattributes" [RFC #435]
  • [x] Implementation (as an addon) [ember-render-modifiers]
  • [x] Documentation [tracking issue]

    • [x] API docs (@GavinJoyce)

    • [x] guides (@wycats - interacting with the dom guide)

Editions

Core Team Champion: @tomdale | Status: on track ✅

  • [ ] RFC

    • [x] written- [RFC #371]

    • [ ] reviewed (in-progress, @tomdale champion)

    • [ ] FCP

    • [ ] merged

  • [ ] Documentation

Remove jQuery by Default

Core Team Champion: Robert Jackson (@rwjblue) | Status: completed 🎉

  • [x] RFC

    • [x] written [RFC #386]

    • [x] reviewed

    • [x] FCP

    • [x] merged

  • [x] Implementation
  • [x] Documentation

Native JS Classes

Core Team Champion: Robert Jackson | Status: completed 🎉

  • [x] RFC

    • [x] written [RFC #240]

    • [x] reviewed

    • [x] FCP

    • [x] merged

  • [x] Implementation

    • [x] (shipped in 3.6)

    • [x] Migration codemod [ember-es6-class-codemod] (in-progress @rwjblue @pzuraq)

    • [x] Update blueprints for each object type to use native JS classes:

    • [x] route

    • [x] router [tracking issue]

    • [x] component

    • [x] controller

    • [x] service

  • [x] Documentation [tracking issue]

Broccoli 2.0

Core Team Champion: Robert Jackson (@rwjblue) | Status: on track ✅

  • [x] Implementation
  • [ ] Documentation

    • [x] Broccoli website for more in-depth guides (@oligriffiths - https://broccoli.build/)

    • [ ] Broccoli basics added to Ember guides [Tracking issue] (in-progress, @oligriffiths)

Ember Guides Updates

Core Team Champion: Jen Weber (@jenweber) | Status: on track ✅

Website Re-design

Core Team Champion: Leah Silber (@wifelette) & Mel Sumner (@melsumner) | Status: delayed

Scope Creep

These are new items that we discovered were necessary to add while implementing Octane features.

on modifier

Core Team Champion: Robert Jackson (@rwjblue) | Status: completed 🎉

  • [x] RFC emberjs/rfcs#471 [tracking issue]
  • [x] Implementation (polyfill complete, implementation in Ember in-progress)
  • [x] Documentation (@pzuraq )

fn helper

Core Team Champion: Robert Jackson (@rwjblue) | Status: completed 🎉

  • [x] RFC emberjs/rfcs#470 [tracking issue]
  • [x] Implementation (polyfill in-progress)
  • [x] Documentation (@pzuraq )

Injection Parameter Normalization (owner tunnel/class portal)

Core Team Champion: Robert Jackson (@rwjblue) | Status: completed 🎉

  • [x] RFC emberjs/rfcs#451 [[tracking issue](https://github.com/emberjs/rfc-tracking/issues/34)]
  • [x] Implementation (in-progress, PR https://github.com/emberjs/ember.js/pull/17858)
  • [x] Documentation

@classic decorator

Core Team Champion: Robert Jackson (@rwjblue) | Status: on track

  • [x] RFC emberjs/rfcs#468
  • [x] Implementation (will be an addon)
  • [ ] Documentation (WIP being documented in Ember Atlas instead of official guides) (@pzuraq )

Ember Inspector

[Tracking Issue]

Supporting TODOs

  • [x] Contextual Helpers and Modifiers RFC (FCP - 1/25/19](https://github.com/emberjs/rfcs/pull/432) (@chancancode)
  • [x] Implementation: Octane Blueprint for ember-cli
  • [x] Documentation: CLI optional feature flags introduced by new features in Octane edition (documented in regular guides, not CLI guides)
  • [ ] (optimization) Guarding the optional feature flags for file size savings

Stretch Goals/De-scoped items

These are items that were de-scoped from Octane and are now being tracked as stretch goals.

  • [ ] Svelte Builds (the last code cleanup easily allowed this item to become a stretch goal)
  • [ ] Stabilizing ember-data
  • [ ] [Router Service](https://github.com/emberjs/rfcs/blob/master/text/0095-router-service.md)

    • [x] Related: RouteInfo Metadata [RFC #398]

    • [x] Related: Router Helpers [RFC #391]

    • [ ] Implementation: router helpers

    • [ ] Documentation

  • [ ] Publishing packages (from roadmap)
  • [ ] Incremental Rendering (de-scoped as of 2/19/19)

    • [ ] RFC

    • [ ] Implementation

    • [ ] Documentation

  • [ ] Removing Synchronous Rendering from Tests (will be released as an addon)

    • [ ] RFC [Issue]

    • [ ] Implementation

    • [ ] Documentation

  • [ ] Incremental Rehydration/ Rehydration

    • [ ] RFC (in-progress, @rondale-sc )

    • [ ] Implementation

    • [ ] Documentation

  • [ ] Template imports

    • [ ] RFC emberjs/rfcs#454

    • [ ] Implementation (POC in-progress, @wycats)

    • [ ] Documentation

  • [x] Decorators polyfill addon (no repo yet)

    • [x] Implementation

    • [x] Documentation

  • [ ] Implementation: Embroider (packaging spec) (@ef4 ) (update: we anticipate this to be usable but in a BETA state for Octane release, in order to better ensure stability)
  • [ ] Native JS Modules: Importing NPM Packages

    • [x] Implementation: importing from NPM packages - [ember-auto-import]

    • [ ] Implementation: ember-auto-import into default blueprint [Tracking Issue]

    • [ ] Documentation (in progress, @NullVoxPopuli)

Project Management

Details

  • [x] set up octane strike teams in each of the relevant Ember orgs:

    • [x] [ember-cli](https://github.com/orgs/ember-cli/teams/octane-strike-team)

    • [x] [ember.js](https://github.com/orgs/emberjs/teams/octane-strike-team/discussions)

    • [x] [ember-learn](https://github.com/orgs/ember-learn/teams/octane-strike-team)

  • [ ] discussion: ember wizard (like ember-cli-create)

    • [ ] @rwjblue to discuss with ember-cli team

  • [x] discussion: track stretch goals?
  • [x] discussion: track de-scoped (and why) items - yes
  • [x] discussion: tracking the website update project
  • [x] discussion: what scope creep items are we noticing? what should be included in the next edition of Ember?
  • [x] need: call for more community members to join in on Octane work
  • [x] figure out how to track Inspector work
  • [x] plan: documentation concern: how to track the old and the new in the guides and API while folks are transitioning.

Upgrading Apps to Octane

Required

Dependencies

  • ember-source@3.??.0
  • ember-data@3.??.0

Optional Features

  • application-template-wrapper to false
  • jquery-integration to false
  • template-only-glimmer-components to true
.ember-cli
  • Default ember generate component to include (per RFC #481):

    • --no-component-class

    • --component-structure=flat

Optional / Incremental

  • Migrate Ember components to Glimmer components
  • Migrate from EmberObject.extend() to native classes
  • Migrate from computed properties to tracked properties

Final Checklist

  • [ ] Add Octane blueprint as the default to ember-cli (once it's determined that it works as intended)
  • [ ] Publish blog post & include: render modifiers clarification, codemods, upgrade guides
  • [ ] Remove blueprint references from the Guides and tutorial
  • [ ] Merge guides into master
Meta Octane

Most helpful comment

@melsumner https://broccoli.build and https://github.com/broccolijs/broccolijs.github.io for the new broccoli site and docs

All 33 comments

@MelSumner We should track the build pipeline improvements in https://github.com/embroider-build/embroider as well.

@melsumner https://broccoli.build and https://github.com/broccolijs/broccolijs.github.io for the new broccoli site and docs

Tracked properties RFC can be checked off and link updated.

We talked about auditing what gets included in the default app blueprint. See related issues:

  1. https://github.com/ember-cli/ember-cli/issues/6294
  2. https://github.com/ember-cli/ember-cli/issues/7760

FWIW, @tomdale that seems quite orthogonal to the Octane Edition to me (not saying we shouldn't be more careful and have better checks/balances, just that its not related to octane at all)...

its not related to octane at all

My reasoning for bringing this up recently is that a default blueprint that supports multiple programming models (i.e., a future default octane blueprint) may include extra cruft that a pure "classic" app or pure "octane" app doesn't need at all.

If we can validate that this is not a concern, I agree that this isn't very closely related to octane

imo, the octane blueprint, https://github.com/ember-cli/ember-octane-blueprint should be the _ideal_ brand new / shiny app. I don't think the old programming model should be involved in the blueprint. :-

@MelSumner - I think we need to get some MU related things here in this checklist (I don't spot any, but AFAICT MU is still considered part of the octane feature set...).

It's already been called Octane layout instead of MU layout ... and the more I think about it the more it makes sense!

@MelSumner - I think we need to get some MU related things here in this checklist (I don't spot any, but AFAICT MU is still considered part of the octane feature set...).

@rwjblue we linked to the MU quest issue in the first section- "Finish What We Started" - is there more that you think we should track?

Regarding ember-cli-create I put this issue together: ember-cli/ember-cli#8343. Depending on how much of the embroider spec will be implemented as part of octane (= _publication_ format), the issue I linked is mainly speaking about the _authoring_ format which can be complementary to the publishing format.

Personally, I wouldn't see ember-cli-create as part of octane while the authoring format _could_ be (which basically sets the foundation for ember-cli-create).

Let me know, if that would make a good addition or better postpone it to post-octane release or how I can help with that.

octane blueprint > move addon to ember-cli org can be checked off :)

Update, here's a quest issue for tracking the Angle Brackets conversion in the guides https://github.com/ember-learn/guides-source/issues/139

The Remove jQuery RFC can be checked off! ✅
I also created a tracking issue, which we can link to maybe: https://github.com/emberjs/ember.js/issues/17476

User story around feature flags and optional features, as it pertains to the octane blueprint

As a workshop instructor, I need to know the default values for various optional/feature flags in the octane blueprint, in order to understand concretely what my students will get when they run ember new, and build material around ember new that remains valid over a significant period of time.

FYI - I just published @ember/render-modifiers 1.0.0 with support back to Ember 2.12 (by way of ember-modifier-manager-polyfill). There is still a bit of work to do (need tons more documentation), but its a good start...

@MelSumner I will work on the Native JS Classes blueprints.

Has anyone put thought into what should happen for https://github.com/ember-cli/ember-new-output in the Classic+Octane world?

The output in that repo will match the output of ember new, which according to our current plans will change to octane blueprint “when it’s ready”.

It looks like module unification is missing from the "Practical Implementation of Roadmap RFC" section.

It looks like module unification is missing from the "Practical Implementation of Roadmap RFC" section.

I believe that Template Imports are the major piece that hasn't shipped yet, so that's the bit that we're tracking in this issue. Does that help, @michaelrkn ?

@MelSumner Got it, thanks!

Hey everybody, the implementation of the "Remove jQuery" RFC is mostly done (at least as far as the first Ember 3.x stage is concerned, see https://github.com/emberjs/ember.js/issues/17476). What's still open and blocking the (default, non-octane) blueprints to switch to no jQuery by default is the built-in ability of ember-data to work with fetch instead of $.ajax (without having to apply the ember-data patch mixin), see the WIP PR: https://github.com/emberjs/data/pull/5386.

Just to let you know... maybe this should be addressed at one of the next core team meetings, to help bring this over the finish line?

a couple things related to ember-cli that I would like to be added to the list:

  • addons need some hooks for installing custom types, for example
moduleConfig.collections = Object.assign(moduleConfig.collections, {
  // ember-simple-auth
  authenticators: {
    types: ['authenticator'],
    defaultType: 'authenticator'
  }
});

(the above, courtesy of @sly7-7 :D )
and

moduleConfig.types = Object.assign(moduleConfig.types, {
  // ember-intl
  'ember-intl@adapter': { definitiveCollection: 'main' },
  'ember-intl@translation': { definitiveCollection: 'main' },
  translation: { definitiveCollection: 'main' },
  formats: { definitiveCollection: 'main' },
  cldr: { definitiveCollection: 'main' },
  'util:intl': { definitiveCollection: 'utils' },
  'intl:util': { definitiveCollection: 'utils' },

  // ember-gestures
  'ember-gesture': { definitiveCollection: 'main' },
});

and then the other thing also related to ember-cli is supporting multiple dummy apps.
So far we have some design proposals here:

Also, not sure how to track this, but with @miguelcobain 's ember-paper library, I'd like to coordinate with getting the octane setup process super simple (currently it's not simple to use ember-paper in octane apps)

seems like it mostly has to do with there styles get exposed to the host app. idk if there is something simple we can do so that existing style addons can "just work", or if we're going to make all the style addons add an octane / isModuleUnification condition?

@NullVoxPopuli

  • the lack of hooks should be filed as a bug (as detailed as possible) (and we can add the octane label to it)
  • we don't intend to track specific addons here (this issue is trying to stay focused on tracking the items listed in the roadmap RFC), but maybe we can figure out a way to share an "upgrade your addon" guide? Maybe we could convince @miguelcobain to write one for the emberjs.com blog. ;)

Hey everybody, the implementation of the "Remove jQuery" RFC is mostly done (at least as far as the first Ember 3.x stage is concerned, see #17476). What's still open and blocking the (default, non-octane) blueprints to switch to no jQuery by default is the built-in ability of ember-data to work with fetch instead of $.ajax (without having to apply the ember-data patch mixin), see the WIP PR: emberjs/data#5386.

Just to let you know... maybe this should be addressed at one of the next core team meetings, to help bring this over the finish line?

@dgeb / @igorT can you help with this blocker?

@MelSumner Yup, brought this up at the ED meeting, we are gonna follow up and refactor the ember-fetch PR https://github.com/emberjs/data/pull/5386

@MelSumner

Update blueprints for each object type to use native JS classes has been merged at #17621. Initially, the blueprints will generate Native Classes only when using the octane blueprints.

@tomdale, @MelSumner, @rwjblue

Template Imports ( Working Draft )

https://github.com/crashco/ember-template-component-import/issues/10

FYI, the Component Templates Co-locations RFC is not on this tracking issue yet. :)

https://github.com/emberjs/rfcs/pull/481

@Panman8201 correct- it's outside of the scope for Octane. :)

I think this need to bee updated with ember octane 3.15+ release :)

Since we've shipped Octane, going to close this issue.

Was this page helpful?
0 / 5 - 0 ratings