TC39 Committee Panel
>> Hello! Wake up after lunch my name's Rachel White. I'm going to be your emcee for the next three-ish hours or so.
>> I am the developer experience lead at American Express. We are hiring, if you're into that. Talk to me later. The next panel that we have today is going to be the TC39 committee panel, and I'm going to let them handle their intros. Thanks.
>> Hello, everyone. Welcome to the third and final, for the time being, TC39 panel we are doing at JSConf. It's always a pleasure to come back. We will introduce ourselves as we speak.
We collected your questions in the last couple of weeks. A little bit differently, we are going to ask questions from the past years, so, that's how the panel's going to work.
Let's give a round of applause for the panel members. [Applause]. As we get started, not everyone knows how the committee works or what the committee is. There was a question that was asked in person at one of our prep events that seemed quite obvious, but it is a great question to start with: what is the organisation behind TC39 in ?
>> Hi, I'm Aki, part of the chair group for TC39. I work for PayPal in Braintree. TC39 is the 39th technical committee by the name of a committee called Ecma International, a standards body, like ISO, or that sort of thing, and they publish the standard that we work on as a committee. That's the organisation behind TC39. The committee itself is made up of people who are sent by member organisations that are companies and non-profits who are part of Ecma.
>> Yeah, I was quite lucky to meet a lot of people on the committee last year in London. I felt a lot started off with a conversation, and talking to various members of the committee, if there was an appetite for such a proposal. It turns out there was. That was a good thing. Daniel, he has been helpful in putting me in contact with the right people.
Not only that, but people who come from different backgrounds as well. That really helped. It started off by a "straw person proposal" which is a state zero which is a GIT repo with identifying the problem space. Then we managed to get a champion here, Matthias, V8 - and stage one is identifying what is the problem here? What is the limitation and you and how we can fix it.
It's not too important to have a solution at this point. We managed to craft something up that worked. We had a small proposal that went through - Matthias championed it. For stage 2, myself and Rob from Bloomberg both worked together on some of the specification, and also getting more ideas from people as well.
Also, another good thing is after stage 1, we had implementation from Babel which is really good which helps as well when you get feedback. Stage 3 is getting even more feedback and thinking about a candidate release, and luckily, I don't think there were too many sort of rejections or limitations, and most people seemed happy with it, and very recently, we made stage 3 as well, and so now, I think it's just getting some implementations in browsers, and people can try it in Chrome and Canary, and nightly. Yes, hopefully stage 4.
>> You made this proposal not as a member of the committee but as an independent contributor, right?
>> And I'm going to ask you to introduce yourself?
>> Yes, Jason Williams, software engineer at Bloomberg.
>> So, another question that we get sometimes is we've got this whole proposal structure, but how do we know it's implemented correctly in browsers? What is going on there? I'm going to hand this over to Valerie, and, if you could introduce yourself, and how we do that?
Each test is a test file which has some metadata about what line it tests in ECMAScript itself. Each test is run twice. There are really 70,000 tests, once in strict and this is non-strict mode.
>> Thank you, Valerie.
>> And can you introduce yourself?
>> Oh, yes, I'm Ross Kersling and I work at PlayStation on our WebKit team.
>> Thank you. So, this sort of rounds off our introduction to how TC39 works, and we're going to be moving on with community questions that you folks asked, and we will start with one from last year, asked by Sam Basson. He asked, "I notice the committee's very heavily dominated by Americans and American companies, particularly Google. Do you have any plans to become more representative of the world, and only give certain companies so much power?"
>> We're looking at how individual companies and specifically individual spaces where we get together in person are impacting those contributions, and Ecma International, which is the organisation we're part of, in fact, is currently put an effort into helping us find a way to be more inclusive internationally in future years. The 2019 meetings are already scheduled, but 2020 is being scheduled right now, and we are going to work on finding a way of being more inclusive.
>> Thank you. That was a nice answer.
>> I'm based in Germany and Berlin, so, if you have any complaints, you know where to find me! Thanks for that answer. Moving along into more specific questions about the standard, we have had several questions about how long it takes to standardise things and when do things come out? Like how long does it take for a proposal to go from stage zero to stage four?
>> I will take that one. It can take a very long time. The simple answer is years. If you were to essentially - essentially, you wouldn't really expecting to through our staging process more than one per meeting, and we do meet every other month, but, you know, there's a lot to do in that time frame.
Implementing in Babel may take time, for instance. The problem space you're addressing might be quite clear but the solution may not be.
Maybe you need to revise that ultimate times. Decorators might be a great example. Finally, at the end of it all, before we can say that we are all said and done, we need this to be implemented - and shipping - in at least two of the major engines, and you, unless you want to implement that yourself, might not have control over that time frame. It can take a very lock time, and discussions can get very heated, and so unless you have a very simple, very uncontroversial proposal, it will probably take on the order of years.
I am Dominic from the Chrome Team at Google. Thank you. And I want to mention our colleagues at Apple have focused, adding these new standard library features as built-in modules rather than built-in globals.
>> We're looking into several concrete proposals in TC39 about features to add to the standard library. You heard in Tara's talk earlier today about recent additions like object from entries, and there are other things that we are considering putting in maybe built-in modules, or maybe in the traditional way as properties of objects that are connected to the global. We're looking into Temporal which is a date-time library which could make it so that you don't need to use moment, looking into possibly new ID standard library, or a library for iterator helper methods, as well as methods on set and math. I think we are missing a bunch of things that would be useful to have in the standard library, so it would be great to have more help from contributors about this.
>> Thank you, Dominic and Dan. Moving on to our next question. we have a question that's been given to us anonymously, asking: often we are having discussion that are related to proposals and larger questions than TC39. Yet Discuss is not being used. Is there any plan to improve this?
>> Funny you should mention! We are currently working on having a new discourse instance. It gives us an opportunity to be able to figure out what people really are talking about so that delegates who have limited time - and we also have day jobs, we do this in addition - can really engage with what the community wants to talk about, and it will give us the ability to have those conversations in public, and hopefully be less of a black box to people, because we really do want to engage with people. It's just hard to find each other when what we talk about can be so esoteric.
>> Actually, we have another slide here. If you want to check that out, here's a QR code, and you can go to that directly. I will leave that on for a second. Thank you, Aki.
Moving on to the next question, and we have had this the last two years, which is on the pattern-matching proposal.: I've not seen any movement on the pattern-matching proposal. Is it in an idle state? If it lands as a statement, what will be the heuristics to decide when using it or a chain of if-else? Do you think having pattern-matching as an expression would be more beneficial?
>> That's a big question. I'm Cat and one of the co-champions and co-authors of the pattern-matching proposal. The proposal has stalled right now. These things take a lot of time right now. Sometimes, what is hot right now - what is at right now, it's waiting to be proposed for a stage 2.
As soon as I get lead to show up for a meeting and - get is ready for a stage 2. As far as the statement versus expression thing, that's a much harder problem. We have Dan, actually, proposed a really interesting solution to the statement and expression problem. For those of you who don't know, like the pattern-matching proposal currently is only a statement, so it doesn't allow you to directly assign from the pattern-matching theme because it was it has ergonomics that are more spectacular to other things like if, and else, and that stuff.
>> We have a second question about this from last year. Leonard Koch asks what are your thoughts on reducing the capabilities of the pattern-matching proposal expression to statement in favour of cohesion?
>> So, I guess I kind of answered this already, didn't I?
>> You might have. Sorry.
>> I think I might have answered this already. You know, the idea is I don't like the idea that it's a statement. I want to get something out there because I would rather have a statement than no pattern-matching at all, and my hope is that once we have it as a statement, we can use that as justification to bring more conditionals into expressions, so that maybe we can start discussing, say, bringing if-else into bringing an expression, and then the trouble it's like the semantics in the language don't make it particularly easy to say what the result of a statement-like thing will be if used in an expression position. And kind of like there's one proposal that is out there answering those questions, and I kind of wanted that proposal at least to start exploring that before giving us a solid answer. That's an expressions proposal, whether or not it's required to wrap it with "do" is up to the future, but we need to answer the same problem regardless of these.
We have different personal visions and aesthetics to what we want the language to be, and perhaps we are also constrained by what our companies would like the language to be for its use case. It is a committee language, so it's not a one-author language where it's much easier to kind of exercise your singular vision for better or for worse.
>> I work on Babel. I think it is what it is being able to use features before they're implemented, an opportunity for all in the community to work out involved, testing them out in the early stages, although we warn against doing that in production, and just being able to be a part of - you don't have to be on the committee, but being able to be involved - yeah.
>> Thank you. And moving on to the next one from Soran: when writing new features, where do you look most for inspiration? Other languages? Which ones, in that case? Or is it mostly driven by requests from the community?
>> Very quickly, again was the answer is many things to many people, but for me personally, I've always very much wanted to bring new capabilities to the language on the web that it could not do before, like what we have done with shared array buffers to bring shared memory programming to the web, and as we hope to do soon, ...
>> I will try to answer this as quickly as possible. We do this strongly with each proposal. We have a notion of a syntax budget which simplifies the idea that there is only so much syntax you can take before being overwhelmed in using a language, so we want that to be comfortable. We don't want to overshoot that, but we do want to make use of new syntax where it really is worthwhile.
>> We will have a couple of quick back-and-forths.
>> Sometimes, adding just a little bit of new syntax can make programming easier. Like a lot of programmers are exciting about the optional chaining proposal where you use question mark dot. Even if it is undefined, it still works. Adding new syntax can make things easier to programme. We consider this as a trade-off, not an absolute.
>> Thank you. So thank you very much to everyone who is on the panel, and thank you all for being such a wonderful audience. As always, we are looking for different ways to help people participate in the process and also help us get the best data. One thing that we are doing right now is an experiment that's currently running.
I forgot that side was there. We currently have an experiment running. If you want to participate in it, here, this is very finicky, here is -- please feel free to go to the URL and take the survey.
It will help us whether or not experimental data works for the committee process. That's all for our panel. Thank you so much, everyone. [Applause]. Oh, one last thing: anyone who has further questions and didn't manage to get their questions in, we will be in the corner over there taking more questions if you want to talk to us directly.