Skip to content

Commit

Permalink
Add notes for October and early November.
Browse files Browse the repository at this point in the history
  • Loading branch information
Robert Jackson committed Nov 11, 2016
1 parent 246e923 commit 95165da
Show file tree
Hide file tree
Showing 5 changed files with 369 additions and 0 deletions.
51 changes: 51 additions & 0 deletions ember.js/2016-09/september-30.md
@@ -0,0 +1,51 @@
# Ember Core Team 2016-09-30

### Agenda

(please note (private) or (public))

- (public) Action items for pushing Module Alchemist forward (TD)
- (public) [Ember Inspector Video](https://www.youtube.com/watch?v=6Yl1j2thKac) feedback (LS)
- (public) Nesting Guides and/or API under Learn in website nav (LS)
- (public) ES6 Module API/RFC (TD)
- (public) ember-core package name (DG)
- (public) restart module unification FCP? (DG)
- (public) TC39 Update from the Gentleman from Portland

### Attendees

LS, YK, GC, EB, KS, RJ, EF, TD, MM, DG

### Minutes

#### Module Alchemist

TD: RFC for standardizing on layout and module format/builds. Are there open concerns on the core team or can I start moving this to FCP? [https://github.com/emberjs/rfcs/pull/155](https://github.com/emberjs/rfcs/pull/155)

RJ: I would like the RFC to specifically note that `dist/` does not get checked in.

#### Ember Inspector Video

LS: Feedback on Gavin's new video? [https://www.youtube.com/watch?v=6Yl1j2thKac](https://www.youtube.com/watch?v=6Yl1j2thKac). We want to start adding these videos to the website.

Everyone: Looks good.

#### Unifying Guides and API Links

LS: Learning team wanted to merge API and Guides link into a single "Learn" link, with API and Guides as sub-items. There was concern that people looking for the API specifically would be confused because it's somewhat unique terminology, and also that API is just very commonly what people are looking for. So the compromise position is that we'll nest Guides under Learn, so we have that main Learn directory page with resources and things, and while API will be one of the things that page directs to, API will still *also* maintain it's top level link in the nav bar. Thumbs up all around.

#### ES6 Module Public API

TD: I signed up for writing the RFC for what the module API is going forward (named exports, default exports, package names, etc.) Two proposals that people were against when we discussed informally at the F2F were:

``` js
import { Component, computed, get, set } from "ember";
```
and:

``` js
import get from "ember-get";
import set from "ember-set";
import computed from "ember-computed";
import Component from "ember-component";
```
133 changes: 133 additions & 0 deletions ember.js/2016-10/october-07.md
@@ -0,0 +1,133 @@
# Ember Core Team 2016-10-07

### Agenda

- (public) Issue triage policies: [emberjs/ember.js#14339](https://github.com/emberjs/ember.js/pull/14339) (RJ)
- (public) [ember-cli blueprint for computed macros](https://github.com/ember-cli/rfcs/pull/67) (RJ)
- (public) https://github.com/emberjs/ember.js/pull/14410 (RJ, GC, YK)
- (public) follow-up about convo with @locks (YK)
- (public) Review [RFCs in FCP](https://github.com/emberjs/rfcs/labels/Final%20Comment%20Period) (DG)
- (public) ember-source vs ember-core npm module (SP)
- (public) any opposition to ship ember-core/source? (SP)

### Attendees

YK, MB, TD, SP, RJ, MM, KS, GC, EB, DG, EF, LS

### Minutes

##### PR #14339, triage team policies

TD: I think it is good if we can have boilerplate responses. Not "we don't care" but it is in alignment with our policies.

RJ: I didn't want to merge w/o discussion but I'm in favor. We've tweaked the communication style with individuals in the past, but a policy is generally good. I will review the words again and make it look good. Does core want to be in the loop on the exact wording?

SP: I think we should do a FCP style thing confirming the form of the communication

YK: the rust project has been trying to automate the consensus process and such. I have a wycats dashboard where I am told where to look etc. I will share more in the chat.

#### Ember-CLI RFC #67, CP macro blueprint

RJ: We suggested before that new blueprints should do through the RFC process, the cli team discussed, stef?

SP: I do not have a strong opinion. Do we want to encourage people to create a custom computed property or not? I like CP macros.

TD: I don't love the term "macro" being part of the learning experience. They aren't part of the core ember learning experience. I would prefer that this be moved to the ember cpm addon instead.

SP: I find that convincing. Tom please leave a comment.

TD: Yes will do.

#### PR #14410 - Concept of "rendering" changing in 2.9

RJ: I want to apologize for using the word "bet" in this discussion.

YK: A difficulty is that when we use a poor term it is often taken up as more meaningful/intended than anticipated.

GC: I'll try to explain the technical side. Imagine we added a feature for a long time where when any shallow property changes an observer fires, imagine we use that in the template system. It isn't a feature that we have "star" observers, but for the purposes of this discussion you can think of the new rendering engine using them. The consequence is that if you have a component and you are pasing properties to a downstream child components and you set a property that is none of the properties you are pasing down, the rendering will fire although the properties passed didn't change.

YK: This was an intentional change. The React model is that you rerender every time, and that works to an extent. However Ember apps are bigger and we don't want to make people learn shouldComponentUpdate, so the solution is that when you `set` we bump the tag on the object and during rendering we do a comparison of the tag.

(further discussion)

KS: On this whole issue I want to give people workaround, but I could not always track what they were worried about. I went back to look at old behavior before 2.9 and it was sometimes the same. If you have an expensive thing, you should check it on your own.

MB: However this is a new challenge for Ember devs that didn't exist before. We've historically taken care of all the fine-grained observation ourselved, and there must be communication that the model is changing, and why.

RJ: We must decide if this is a breaking change or not. Right now the topics are potentially toxic, we need to collectively decide that the official explanation is.

TD: I think we need to pitch the benefits of the pull-based architecture. GC how is the book going?

GC: The book is more about the implementation of the reference system vs. the benefits. We also need to get specific examples of what issues are. We can make some cases faster, but we may regress real world cases where other work is being done.

KS: chaining through the hash object is probably messing people up. The only reason chains fire a change event when they don't change in value is b/c before it already promised that it will change. And the whole setup/teardown of the array proxy relies on this. If we can eliminate that case we can just remove the will/did and notification. And delete a lot of code that attempts to pair those hooks.

YK: I want to give some more precision about CPs. CPs do memoization, but they are doing an opportunistic thing. If I have thousand CPs Ember will try to not run all of them, but I should try to avoid those functions have side-effects are ensure they are relatively fast. It is about amoritzing cost. If I have a thousand and only a hundred run (though I cannot control what hundred) it was still good to save the 900.

RJ: Right but people think that the dependencies changing is the only thing that invalidates the CPs, even though we all know it has not been true. Ever. We need to make the docs clear to say it will be called when dependencies change, but it may *also* be called more often than just when they change.

(lots of comments on bloom filters and amortized cost)

TD: there is a narrative we have moved away from fine-grained observation and this fits in, but we need to communicate it beyond just docs (perhaps a blog post). I think we need to all be blogging more in general. So much of what we do is ephemeral, I think having to distill into a blog post is helpful.

RJ: Last time I tried to get into blogging I just ended up becoming a super involved contributor to a blogging framework....

(discussion)

TD: Standing offer to help people with perf or optimization hooks etc. Happy to help wordsmith. I think it just needs to be tag teamed.

KS: Generally I don't think we should merge this PR. I can't imagine it being faster if you benchmarked it.

RJ: I agree it is a lot of code. I think there are smaller things you can do in your code to protect against the issues caused by the new behavior.

GC: I don't know if you could actually do this, but I think yehuda and I need to do a thing.

TD: Can you benchmark it?

GC: There is a jsbin that shows it is actually slower, but I'm not sure even if you fix that if there is a global win. Basically there are pathological cases in the system and you can exaggerate them.

EF: Yeah there is a real problem in his app though, we should try to see what it is.

RJ: there are some observers etc

YK: Right, if we do all the bookkeeping to do this the problem is you regress the initial render. If you do it in a few hot spots it is fine though. We just can't do the fine-grained observation through the whole system, this is a thing we learned from looking at React comparisons where we used to be slower on initial boot and way faster on updates.

RJ: I think this dovetails with users wanting to use real getters etc.

YK: and we're not saying it is like react and we will rerender/run things all the time.

EF: I will craft a response, and I think some benchmarks will show the initial boot has a cost to it

KS: this is my gut feeling as well

#### shipping ember-source

SP: I want to ship and ember npm module we've talked about for months. It will be named ember-source, are we gtg?

RJ: I would like the next stable version of ember-cli to be able to ship with this.

SP: and the next version of Ember?

RJ: No I don't think we should backport it. 2.10 would be the ember version.

=SP: so ember-core is the current name, becomes ember-source

RJ: Right, ember-core is basically to be reserved for a future project.

RJ: I want to align travis builds for ember beta/stable and ember-cli beta/stable, we should sidebar.

#### three RFCs

RJ: No new information that changed things

YK: I have one thing- I disagree with the general purpose dynamic variable lookup thing in the routing service. I would accept another proposal and perhaps be convinced.

EF: We are covered, there is an alternative API in the RFC. Sound good.

KS: you think the commnunity was supportive of the titlebar thing?

RJ: right people have been working on the editor plugins etc

TD: right that is a sign they are supporting it

(some discussion over titlebar etc)
105 changes: 105 additions & 0 deletions ember.js/2016-10/october-14.md
@@ -0,0 +1,105 @@
# Ember Core Team 2016-10-14

### Agenda

(please note (private) or (public))

- (public) Review [RFCs in FCP](https://github.com/emberjs/rfcs/labels/Final%20Comment%20Period) (DG)
- (public) Glimmer 2 Status - Should we push 2.9.0 back a week (to 2016-10-24) or defer Glimmer in Ember until 2.10? (RJ, YK, GC)
- (public) `ember-welcome-page` (high priority Learning Team issue) (YK, LS)
- (public) Review ongoing Query Params cleanup work (RJ / AM)
- Targeting 2.10 - Add an assertion when using `(query-params foo="bar"` or `.transitionTo(..., { queryParams: { foo: 'bar' } })` if `foo` is ambiguous (either because two controllers use it as a local property alias, or because one is using a local `foo` property as an alias and there is also a URL key for `foo`)
- Targeting some future version (> 2.10) - add a deprecation when using anything other than a URL key with `(query-params` or `transitionTo`


### Minutes

#### Glimmer 2 and Ember 2.9 Stable

YK: Update on Glimmer 2 and beta. We moved Glimmer to beta because we had fixed compatibility issues in canary that we knew of and needed a bigger testing group, which beta got us. Since then, things have gone really well and compatibility has been exceptionally good.

YK: There are still two issues remaining that affect compatibility that we feel need to be addressed. The first issue is around dirtying. We implemented an optimization that improves first time render, but in some Ember apps can cause re-renders to get significantly slower in some cases. Initially we thought this was very rare and not worth giving up the optimization, but eventually everyone who saw it agreed that it could have a negative impact on many apps.

YK: Godfrey and I have implemented a fix, which causes a 1.5% dip in performance in our rael world app benchmark suite across the board. This seems worth it because it prevents many pathological cases that would be far more noticeable than 1.5%. However, we realized that our fix would not cover Proxy cases. Chad is currently working on fixing that now.

YK: The other issue is with ember-wormhole. Even though we had updated ember-wormhole to add compatibility for Glimmer 2, there were a few other cases discovered where wormholes would not work correctly depending on how they were used. There was an "intimate API" added in the last few days to address this, but Godfrey believes the fix is not correct and needs further work, and I am nervous about adding in an untested, intimate API a few days before cutting production.

MB: Stanley has raised an issue with helper destruction as well.

YK: If that is a blocking issue I would be nervous about putting the fix in for that right now as well.

YK: So it seems like we have three options. Say "damn the torpedos" and go full steam ahead with the release and deal with the compatibility fallout. Option 2 is to defer the release by a week, which I am not in favor of but am open to persuasion. Option 3 is to punt Glimmer to 2.10 beta, cherry-pick the most critical fixes into the 2.8 release version and that becomes 2.9 release.

YK: If we do do the "damn the torpedos" approach, we can tell people who care about stability to use the LTS. But I am very nervous about saying that non-LTS releases are not that stable.

RJ: We have shipped releases with regressions before.

EF: Let's not turn this into a meta-debate.

RJ: Regarding the wormhole fix, my understanding is that there is a specific case that it does not work in.

KS: If there is a `TryOpcode` before the wormhole, it will not work. We missed it because all of the wormhole tests are inside an element.

YK: The bottom line for me is that we can definitely find a fix for this, but we're only two days before the release.

RJ: I think the majority of users will be okay. A bunch of people are already running on the 2.9 beta today, and we have not received any reports of malfunctioning apps. The vast, vast majority of issues people have raised were due to the performance regression/property dirtying issue that we've already discussed. To me that is a way way bigger deal.

MB: If we do use the 2.8 release as the basis for the 2.9 release, what other things would we be giving up? Any of the router stuff?

RJ: All of the encoding stuff was already in.

RJ: If we decide to this, is anyone opposed to me resetting the beta branch to the 2.8 master, and then bring things back in? Then we will reset the new beta branch to canary for 2.10.

DG: Have we considered reducing the length of the next cycle so we have a Glimmer 2-enabled release sooner than 6 weeks?

TD: I am opposed to anything that pushes off the regular release train. The entire point of regular release cycles is so that if you miss one train you just catch the next train, and it shouldn't feel too emotionally bad. If people are feeling very emotionally bad about missing the train, we should either stop feeling emotionally bad or make the cycles shorter. But I don't think that's realistic.

RJ: Is anyone opposed to not deferring Glimmer 2 until 2.10?

*deafening silence*

MB: Addons will break if they are checking the Ember version string to determine whether Glimmer 2 is available or not.

RJ: Liquid Fire is one example of this, but there are probably other addons that have added Glimmer 2 compatibility using private APIs that will be affected.

RJ: Perhaps we should defer a week to allow addons that check the version string to update.

MB: I don't think it would even take a week to get it done. It's a handful of addons, but they are important ones.

RJ: Me and Martin have the top 1000 addons saved locally on our machines, we can take a look to see how bad it is.

YK: Me and Tom will work on how to communicate this to everyone.

EF: I don't think it's too hard to message; it's an example of the release train model working exactly as intended. People will be happy about compatibility.

YK: Maybe Matthew can do an initial draft of the release blog post and we can help massage the messaging.

MB: We need to communicate this before the release blog post. The next, last beta will not have Glimmer 2, and that could potentially break anyone using beta with addons that have the version check issue. That will happen before the release.

YK: Ah, yeah, you're right.

YK: I have another important topic to bring up. Are we all in consensus then?

*Yes, we have consensus on the plan.*

#### Helping the Learning Team

YK: There was an issue with the welcome page in a new Ember app and the `application.hbs` not being there. The last time we discussed this I thought we had consensus. Robert's objection to including the component in the `application.hbs` is that it would include the assets in production, which I agree is bad. Ed pointed out that if the user doesn't remove it, we can just not emit the assets in production builds. I also realized we could pretty easily lint for using this component. The bottom line though is that the time is ticking and I want to bring back the `application.hbs`. If we wait longer then tutorials will update to assume no template is generated, and then reverting the change itself becomes breaking.

RJ: I disagree. There are a few other issues with the addon today. These bugs can be fixed but so far no one has taken the time to fix them, although I have explained them to a few different people. But if we strip out the assets during production, then someone using the component will cause the app to crash in production but not in development.

TD: What is the case where someone would be using the welcome component in a production environment? You wouldn't accidentally leave it in because it will totally screw up your UI.

*YK angrily closes his Chrome tab*

YK: The high-level point is that people who know JavaScript but not Ember don't know where to start working. Having the first page that you load tell you where to go to start editing is incredibly important.

RJ: If the point is telling people where to start, why not just put that in the addon and make the instruction to remove the package from `package.json`?

#### Module Unification FCP

Are we ready to merge?

EF: Yes, no new objections have been raised since the last FCP process. There was a very robust community discussion and I am very grateful so many people gave us excellent feedback.

EF: The routing RFC has been relatively quiet.

0 comments on commit 95165da

Please sign in to comment.