Changes between Initial Version and Version 1 of WebKitStandardsPositions


Ignore:
Timestamp:
Jan 5, 2021 2:54:07 PM (3 years ago)
Author:
Jon Davis
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WebKitStandardsPositions

    v1 v1  
     1== Standards Position Discussion ==
     2''by Tess O'Connor (@hober), Apple'' [https://tess.oconnor.cx/2020/11/WebKit Slide Deck]
     3
     4Let’s figure out how the WebKit community can come to consensus on web standards and communicate that consensus to the world & our colleagues from the other engines.
     5
     6''hober:'' Coming to consensus and communicating that consensus externally
     7
     8''hober:'' Right now, folks ask the community for positions on webkit-dev because there is no other place to ask
     9
     10''hober:'' We should publish our positions on webkit.org
     11
     12''hober:'' jond has a prototype, similar to Mozilla's standard's positions
     13
     14''hober:'' Difference is that Mozilla is a single organization, but WebKit is multiple organizations, how do we come to consensus, and what happens if we cannot come to consensus?
     15
     16''hober:'' Let's keep the process as light-weight as possible
     17
     18''hober:'' We should create a new GitHub repository under WebKit, folks can request a position by filing an issue
     19
     20''hober:'' Community can come to a consensus and make comments on the issue
     21
     22== Questions & Comments ==
     23
     24''noam:'' Can we have this a year ago?
     25
     26''sam:'' Paragraph lines in the json is a problem with Mozilla, would probably be a problem for us too
     27
     28''hober:'' There is pressure to keep it short, maybe we should use a different backing store
     29
     30''smfr:'' Maybe link back to the GitHub issue?
     31
     32''Eric Carlson:'' You skipped over what happens if we can't come to a consensus
     33
     34''hober:'' We want to introduce as little process, not trying to describe a solution to that beforehand.
     35
     36''rniwa:'' I think we've come to consensus about most of those requests, but how do we know that? How do we know enough time has passed for folks to comment?
     37
     38''hober:'' We need to wait long enough, can also re-open issues if they're closed pre-maturely. People need to show up to have a conversation, none of this is set in stone
     39
     40''hober:'' These wouldn't be unchangeable positions, ones that are issued can be revised
     41
     42''rniwa:'' Email to say "we have reached a consensus, please comment within the next 5 business days to object"
     43
     44''hober:'' Would make a lot of sense to do something like that
     45
     46''John Wilander:'' Differentiating between standard and doing something
     47
     48''hober:'' Differentiating between published standards, things being worked on by one individual or one organization
     49
     50''rniwa:'' How do we handle when a standard substantially changes and our position changes
     51
     52''hober:'' Communicating is easy, noticing might be hard. Answering that question probably requires vigilance
     53
     54''rniwa:'' Maybe specify a date when the review happened
     55
     56''noam:'' Will this be connected to MDN/can I use?
     57
     58''hober:'' Existing feature status page is a source of information, but I don't think it makes sense sense to link to MDN
     59
     60''Jen Simmons:'' Seems like developers won't really use standards positions or find them relevant
     61
     62''noam:'' it has "under consideration" which has link to somewhere where it is considered
     63
     64''hober:'' We do have under consideration on our status page
     65
     66''rniwa:'' Concerned about unhelpful noise from developers
     67
     68''hober:'' Inclined not to worry about this at the beginning
     69
     70''smfr:'' Is it a non-goal to prepare for the scenario where different ports have different opinions?
     71
     72''hober:'' Let's worry about that when we get to it
     73
     74''hober:'' Maybe should reflect a per-port stance on the feature page?
     75
     76''Ross:'' I think we had a successful contributing with standards and trying to be as conformant as possible.
     77
     78''Ross:'' We have had a more balanced participation in Source/JavaScriptCore in 2019-2020 in the last year. In the last year more contributions have been done by non-apple contributors. Slack has been great for our communication on the JSC part of the project. There’s also a biweekly OSS staff meeting.
     79
     80''Ross:'' The rest of the presentation is focused on standards-related work in the JSC team.
     81
     82''Ross:'' But there are cases where we use our knowledge and work in JSC to help contribute to standards work.
     83
     84''Alexey:'' Today we have an all time high on test262 (JS spec test suite)
     85
     86''Alexey:'' Overall we have an 85% pass rate up from 80% in 2019
     87
     88''Alexey:'' There have been a number of notable fixes in the last year. Keith (me) fixei unescaped astral literals in indentifiers. Saam fixed Array.prototype to work with indicies beyond 2^32
     89
     90''Alexey:'' ProxyObject has been improved such as trap failures, relection, in the prototype chain, etc.
     91
     92''Alexey:'' Early errors for unicode RegExps
     93
     94''Alexey:'' [[DefineOwnProperty]] no longer corrupts property name order (for-in)
     95
     96''Alexey:'' Classes no longer rely on `_proto_ ops handle [[IsHTMLDDA]] correctly
     97
     98''Alexey:'' Array.prototype.sort was aligned with the new tightened spec.
     99
     100''Alexey:'' Ross aligned TypedArray internal and prototype methods with the spec (while at the same time fixing the spec)
     101
     102''Caio:'' Public and private fields are currently a stage 3 proposal in TC-39
     103
     104''Caio:'' In the last year Safari shipped with public fields
     105
     106''Caio:'' With fields the constructor of a class will install each of the fields in the class onto the object it creates
     107
     108''Caio:'' Private fields are a bit different because the identifier is only accessible from inside the lexical scope of the class definition
     109
     110''Caio:'' Igalia has been working on this and has also been working on other class features.
     111
     112''Ross:'' Were you also gonig to tell us about BigInt?
     113
     114''Caio:'' Robin and I have been working on BigInt over the last year
     115
     116''Caio:'' BigInts are similar to numbers in JS but they have infinite precision. i.e. when you go over 2^53 with BigInt you will not lose precision.
     117
     118''Ross:'' New 262 features.
     119
     120''Yusuke:'' WeakRef and FinalizationRegistry, implemented by Keith (me)
     121
     122''Yususke:'' With WeakRef, it’s now possible to create a weak map where the values are held weakly
     123
     124''Yusuke:'' In fact we are already using WeakRef in the WebInspector
     125
     126''Ross:'' Short-circuiting assignment operators.
     127
     128''Ross:'' This proposal was delayed until the nullish coalesing feature has been shipped.
     129
     130''Ross:'' short ciruiting assignment was implemented by Devin
     131
     132''Ross:'' String.prototype.replaceAll does what you would have expected replace all along.
     133
     134''Ross:'' Previously if you didn’t use the global flag on a regexp or used a string regexp replace would only replace the first occurrance
     135
     136''Ross:'' Array.prototype.at (originally, proposed as Array.prototype.item)
     137
     138''Ross:'' has an advantage for access because it works with negative indicies
     139
     140''Yusuke:'' Intl
     141
     142''Yusuke:'' We went from 37% conformance to 98% conformance
     143
     144''Yusuke:'' Ross and I worked closely on getting everything working
     145
     146Included work with ICU, perf, and new feature work.
     147
     148''Yusuke:'' * describes all the new Intl features we have shipped *
     149
     150''Yusuke:'' New Webassembly features this year are mutable Globals
     151
     152''Ross:'' Looking ahead to 2021 we want to get to 90% pass rate on test262
     153
     154The important part here isn’t just to get 90% but rather that we want to establish 90% as our new baseline and continually improve on that
     155
     156''Caio:'' We also want to continue our class properties work to implement private methods
     157
     158''Caio:'' Not limited to just functions but also can include private getters and setters
     159
     160''Caio:'' Last but not least we also want to add static class fields and static private methods
     161
     162''Yusuke:'' We have also re-enabled SharedArrayBuffer and Atomics in the build and in testers\
     163
     164''Yusuke:'' We also want to add Top-level await. This lets us put the await expression at the top level of module code.
     165
     166''Yusuke:'' Another module feature we want is to have modules in workers
     167
     168''Yusuke:'' And many more features all coming soon!
     169
     170''Yusuke:'' We also hope to have more collaboration and build on the progress we have made this year
     171
     172''Jen:'' Questions?
     173
     174''Saam:'' Where are we at in test262 conformance again?
     175
     176''Ross:'' Roughly we are at 85%
     177
     178''Ryosuke:'' Is private class fields enabled in safari 14
     179
     180''Yusuke:'' Private fields just landed a few minutes ago so no
     181
     182''Ryosuke:'' I’m excited for this feature so I hope we can get it done soon
     183
     184''Caio:'' We still needed to add some JIT work for private fields and hopefully we can get that done soon
     185
     186''Saam:'' We should just turn it on
     187
     188''Yusuke:'' This is a good time to enable it because it gives us a chance to get feedback
     189
     190''Caio:'' We need to do some work on field initialization but it shouldn’t block private fields because it didn’t block public fields
     191
     192''Ryosuke:'' In order for the fuzzer to run with it we need to enable it somewhere e.g. WebKitTestRunner
     193
     194''Yusuke:'' We need to add support private fields syntax in the fuzzer but shouldn’t be too hard
     195
     196''Ryosuke:'' For each JSC feature we now want to have significant fuzzing for each new feature before shipping
     197
     198''Yusuke:'' We can also enable the feature in our fuzzers without enabling by default
     199
     200''Ryosuke:'' To clarify on what we want to fuzz we want to fuzz everything that could be used to exploit JSC
     201
     202''Saam:'' Fortunately, for most features outside syntax, fuzzer will just test it
     203
     204''Yusuke:'' Yeah, for things like changes to DFG the fuzzer will find it because it will build off all the JSC tests