- From: Neil Soiffer <soiffer@alum.mit.edu>
- Date: Mon, 18 May 2020 15:41:57 -0700
- To: public-mathml4@w3.org
- Message-ID: <CAESRWkB=0bmvb3jmUo8U9C6c8tm6Kh58rvC6-P2d53ethsuKEA@mail.gmail.com>
MathML Core Meeting of May 18, 2020 Attendees: - David Carisle - Neil Soiffer - Brian Kardell - Murray Sargent - Rob Buis - Bruce Miller Regrets: Frédéric Wang, Patrick Ion Agenda: https://github.com/mathml-refresh/mathml/issues/8#issuecomment-626909097 The meeting was recorded: https://benetech.zoom.us/rec/play/6ZwlI-7-qDI3H9LBsASDBf99W9Tpfa-sgSAYrPsMyUnnWnFVMwX3YOBBZLfPru5TFmCYyrknai_vopka?continueMode=true&_x_zm_rtaid=NsUsUT2FQcyJIBoqs9tqTw.1589839319611.b9d4ee6bd9bcde9de18ba74f30d76fe5&_x_zm_rhtaid=118 Need resolution for implementation - From Rob: The issue is about mroot. The spec says that base and index can only be one child. However last year we experimented with the index consisting of more than one child, and this is the current situation in the internal branch. RB: We tried an experiment with mfrac and mroot. This is the state in the internal branch and is at the experiment the spec has not changed. BK: This is issue #15. DC: What happens now if the expected number of children is wrong? RB: it becomes an mrow BK: can you be more specific. What are children here? Box children? Do text node children count? Only element children? For example: What about if an element child is display:none? RB: we don’t count out of flow children BK: so box children, not elements. RB: Yes. We probably need some more tests. MS: I tried it in MS Word. It works by boxing up the extras into the last child NS: What happens with too few children MS: You get an “empty” box. NS: Is this a implementation problem to make it work with all elements with fixed number of children? RB: No, it is easy. NS: Do you create an merror or write a console message. RB: A console warning seems good. DC: Does this change things in the DOM? RB: No, this is only affecting rendering DC: With my XML hat geek on I want to say it should crash and burn, but I am actually kind of ok with this because they shouldn't make mistakes. The one interesting thing here is that it does something else, more forgiving - which is maybe the more modern way, but it might actually do something 'useful' and people will then write invalid markup on purpose in order to achieve the useful result. NS: I understand what you mean, and I have not dissimilar feelings. On the other hand if we are trying to fit this into the HTML world, that seems to be the way. If people do want to follow suit in the XML world, it shouldn't be too hard. So… is there a resolution here? What is the status to #15? It's open, it has a lot of labels. It sounds like we did have a resolution, it looks like Rob did some experiment and it was successful -- I think we decided that if that experiment was successful then that is what we should do. David seemed to express some reluctance DC: No, I think the HTML way is to be kind to people and this seems quite natural. I don't think there are compatibility issues - this is fine. NS: OK, objections? …. No? Ok, let's call that consensus. Rob, you have already done some upstreaming, will you have to change this? RB: Yes, I think the thing to do is to explain to google this is the approach we'd like to take and why and see how that goes. DC: A little off topic. When you upstream…. What's the current situation with what we can look at with the implementation. Last time I looked, I think only mspace and mrow were there so not very interesting. RB: it should be in the build (you need to enable chrome://flags/#enable-experimental-web-platform-features) DC: From the public canary build on windows: <math><mfrac><mi>a</mi><mi>b</mi></mfrac><mo>+</mo><msup><mi>x</mi><mn>2</mn></mo></msup></math> RB: Also look at BK’s twitter: https://twitter.com/briankardell/status/1253675060520419330 or igalia’s twitter: https://mathml.igalia.com/news/2020/04/23/forty-two-mathml-patches-upstreamed/#new PolyfillsShort term strategy (what we can/should do now): - work onload/manually callable? MutationObserver? - use ShadowDom? - a good method for someone to choose the ones they want -- just script elements that load each individual polyfill or something simpler? BK: We have a couple of challenges. If you are writing a polyfill today, what are you using to make sure it does the right thing. The igalia build is probably the best bet. NS: Does the build work on windows? BK: No. BK: next one is how to do the polyfill. Some should use shadowdom and some should be in the lightdom. We should have some framework for thinking about that. BK: I’d like someone to work with me and come up with an idea of how we would do this and come up with advice on how to do it. Then NS: there are three polyfills there now. Fred wrote one for mfenced. It changes the DOM to the mrow equivalent. I just added one for ms that adds the quotes and backslashes/escapes and changes the content of the ms because core doesn’t handle the attributes or escapes. The other one is a big elementary math polyfill. It changes the DOM and replaces it with an HTML table that represents the elementary. I experimented with wrapping a div around the MathML and putting the table in the shadowdom, but I don’t think that is the version that is up there. There are real issues doing this with shadowdom because there is all this structure that blown away and can’t be pointed to by the children of the toplevel elementary elements. So several different things are happening in those implementations and we should try to unify them if possible. BK: there are three categories of things. One uses the shadowdom to its full effect. It is closest to what the browser can do and is the most efficient. Then there are ones like the elementary math that are complicated but can be in the shadowdom so that the lightdom is there and can be reasoned about. Finally, there are ones like ‘ms’. They need to disconnect the mutation observer before then make their changes, make the changes, and then reconnect. BK: I think we need a plugin manager that handles these three strategies. NS: that makes sense to me. Maybe there are other styles at there. NS: what about mirroring the children elements into the shadowdom like what happens with elementary math. NS: Are there examples out there where people have more complicated examples than just one element and no children. BK: Fred’s latex example is maybe such an example. NS: But that has no structured content. BK: there's only the case that you hit the exact sweet spot of your elements. Children are like DOM representations into something deeper. There’s only that and not that. BK: you can’t observe the children, you can only observe the content. NS: the thing I was thinking about is that for accessibility is that you have a carry in the elementary math and you want to point to that and say, “I want to highlight that carry”. But there is nothing that connects that carry with what is in the shadowdom. BK: I don’t think we can do this, but maybe there is a way. Maybe something react-like thing. NS: If someone changed the background color of a carry, the polyfill could carry that background color into the color. Maybe a faithful polyfill would do that if the lightdom. BK: Let’s say we have a media query and change the orientation of the phone. How will you know. Or light theme or dark theme changes due to the time of day change. We don’t have the insights we need into all the changes. That’s why we have resize observers. If you hook into the previously unobservable deep aspects... BK: That doesn’t mean we can’t figure something out. Let’s create a task force, have the discussion and come up with a documented resolution. NS: Who’s willing to do this? Members: BK, NS, RB. Ask Fred. NS: If anyone else wants to join, send me email. Long term strategy - in an ideal world (but one that still requires polyfills), what would we like them to look like? - what "asks" do we have of other committees so that we can get to the ideal world NS: one problem is that you can only do a shadowdom on certain elements, but that doesn’t allow shadowdom on mathml elements. NS: park until the task force comes up with recommendations. BK: MathJax solves the full problem, but doesn’t use core. Need to wait for DOM to be available to use a polyfill. NS: what do existing polyfill do BK: they tend to use feature detection, but also need to figure what the page really needs. DC: there are different use cases. I have tons of pages, but I generate them every night so I can rewrite them to use core. BK: I think that will be common. People use MathJax. Maybe 60% of the time MathML core will work. But there are alot of people like David, they can change things. NS: There is a tool chain that will take a while to change. BK: ... NS: I doubt people will use core until it is all browsers. Maybe they could do feature detection. BM: Everyone has some stuff at the top of the page that calls MathJax or checks the browser. Maybe a better way to think of it as “failure sniffing”. NS: Not sure how that is any different from checking the DOM because how else would you know it wasn’t handled? NS: People who use MathJax now have to wait. With core, hopefully most stuff renders right away and the polyfills will fix up a few things slightly later on. That might not be too bad. NS: Topics for next week? BK: DOM Core level 1? Currently we have limited developer resources and some things just won’t get into the first implementation. We should think about what comes next -- what is level 2. Other groups do this. Let’s go through the issues and see if we can decide on what level they will be.
Received on Monday, 18 May 2020 22:42:09 UTC