#438: MathML Core
Discussions
Comment by @bkardell Oct 31, 2019 (See Github)
Note: For anyone who feels like they'd like more information that they can consume pretty easily, we have a ~30 min presentation from our recent hackfest where @fred-wang breaks a lot of this down in pretty complete and understandable ways (https://www.youtube.com/watch?time_continue=79&v=Q8Z1D2i61j8)
Discussed
Nov 1, 2019 (See Github)
Dan: I personally haven't done anything
Alice: Same... schedule breakout? Let's take it offline
Dan: Let me put it on for next week (breakout)
Hadley: I am on board
Comment by @torgo Nov 19, 2019 (See Github)
We will try to schedule some breakout time on this for this week. If not, this will have to get bumped to the f2f.
Comment by @torgo Dec 3, 2019 (See Github)
Discussed at our f2f with @bkardell. The hypothesis is that MathML core addreesses many of the issues raised by the previous TAG review. We need to do further work to confirm this.
Comment by @hadleybeeman Dec 3, 2019 (See Github)
Also, looking at this explainer -- it does a good job of explaining how you got to where you are, and how you've decided on the approach you took. It doesn't though explain concisely how MathML core works. It might be useful to add that in.
Comment by @alice Jan 28, 2020 (See Github)
Some progress on Hadley's comment happening in @bkardell's WIP gist. I've left some comments there.
Discussed
Feb 1, 2020 (See Github)
(Discussion on mixing layout and semantics, and legacy compat elements)
Alice to comment
Comment by @bkardell Feb 1, 2020 (See Github)
PR on the explainer in progress at https://github.com/mathml-refresh/mathml-core/pull/20 will be discussed in the next cg meeting
Comment by @bkardell Feb 3, 2020 (See Github)
The MathML-Core Explainer has been merged with suggested changes/based on discussions - would suggest using that rather than any gist..
Comment by @alice Feb 25, 2020 (See Github)
The explainer is in really good shape now, thank you!
A couple of general comments from discussions I've had with other TAG folks:
- Overall, there is some tension in the choice of core elements between whether the elements are expressing semantics or layout. e.g.
<mn>
,<mi>
and<mo>
seem to be expressing semantics, while<menclose>
is purely layout.<mrow>
is somewhere in between - mostly useful as a "group" directive, but the notation somewhat makes the intended use feel like a layout directive. Is there any chance that this could be generalized to something like<mgroup>
?
- What is the meaning of "legacy compat" in this context? It doesn't seem to be called out in the spec.
- How is this parsed? Do all the elements need to be explicitly closed?
Comment by @bkardell Feb 27, 2020 (See Github)
What is the meaning of "legacy compat" in this context? It doesn't seem to be called out in the spec.
Yeah, I guess this could have been clearer. Basically, they are things which, in an ideal world, would just be solved by existing platform answers. However, a significant amount of real world legacy content uses it, so we think the right thing to do is to not break that - to map to the existing and include it in the spec as deprecated. HTML has several similar things - <font>
and <center>
for example.
How is this parsed? Do all the elements need to be explicitly closed?
This is all specified in the HTML Parser itself - which is complicated, but I think the special cases you are probably interested in will be listed here: https://html.spec.whatwg.org/multipage/parsing.html#the-stack-of-open-elements
Overall, there is some tension in the choice of core elements between whether the elements are expressing semantics or layout.... [snip] Is there any chance that this could be generalized to something like <mgroup>
There are probably lots of choices that would be made differently if we were starting from nothing today - I think the challenge here is that the aims are to normalize and well-define what is necessary to keep millions of existing mathml contents in play - <mrow>
is pretty central to that. We could potentially propose to also have an <mgroup>
but so far we've tried to not add new invention of that sort here for the initial definition of core.
Discussed
Mar 1, 2020 (See Github)
Dan: Brian has answered 7 days ago.
Alice: What Brian is saying the whole idea behind the core concept, if you are going to strip down mathml so that most of the stuff will work, then you end up with mathml core. Plus this is more consistent (CSS cascade etc).
... legacy compat things will still be parsed and worked correctly but implemented by deferring to other mathml core part or css.
... I might suggest a rewording so make it a bit more readable.
Dan: So we can close as satisfied? please work on your documentation
... This is a good response from Brian.
Alice: What is left for us to do might be looking over the spec once more.
Dan: Writing a response
Comment by @torgo Mar 2, 2020 (See Github)
Hi @bkardell. Hadley & I just re-reviewing now in the context of our TAG f2f. Are you planning to issue any changes to the explainer based on what you've written above?
Comment by @hadleybeeman Mar 2, 2020 (See Github)
Hi @bkardell! The explainer has come a long way since we first looked at it. Well done from me too!
It occurs to me that the legacy situation you're dealing with here (and understandably! You've explained that well to us) may leave developers confused about when MathML will follow the web platform (like CSS) and when it won't.
Do you have any plans to produce developer-focused documentation? If so, can you cover that off somewhere, so that it's clear to them how to think about MathML?
Comment by @bkardell Mar 10, 2020 (See Github)
@torgo and @hadleybeeman
It occurs to me that the legacy situation you're dealing with here (and understandably! You've explained that well to us) may leave developers confused about when MathML will follow the web platform (like CSS) and when it won't.
Perhaps somewhere my emphasis has been misleading? MathML-Core aims to always follow the platform. I have added and linked a description/note in the explainer about this to hopefully be more clear.
Do you have any plans to produce developer-focused documentation? If so, can you cover that off somewhere, so that it's clear to them how to think about MathML?
The CG can help review and update documentation, yes. We will, for example, definitely link up the DOM interfaces, and add any deprecation notes and recommend the underlying CSS properties for things like legacy compat elements/attributes.
That said, I think it's worth to noting: the current state of things is simultaneously confusing, and neither documented, necessary, or even desirable by anyone. A lot of what MathML-Core is doing here is just making that better: Making the stuff that developers just assume by nature of being in the platform be true. MathML-Core doesn't add new surprise in this regard, it removes it.
Previously, for example, documentation didn't tell developers that they could set the color
property in CSS, and that that would work - but that attempting to set the color via the .style
property would throw (there are a lot of examples like this, this one is just easy to explain/point to). Developers just expect that to work on any element, really... a lot of documentation won't even mention it. It's just a given. Worse if it doesn't work, and that fact isn't written down or specified, which is the case now.
Similarly, a bunch of spec work in MathML Core is around actually just defining how MathML actually fits in CSS, so that it can work better (or, at all in some cases). @bfgeek especially has been really good about raising these issues and helping making sure we are resolving these things 'with the platform' so that we aren't adding new complexities or surprises, but removing them. As we complete, anything actually novel to MathML will certainly be added to MDN.
Comment by @alice Mar 17, 2020 (See Github)
Hi Brian,
Thanks for the clarification above.
The improved explainer gives us a lot more context, so we're going to spend a little time looking through the spec now that we have a better idea of what it's doing.
We'll ping this thread again if/when there are any questions from that.
Comment by @cynthia May 26, 2020 (See Github)
Non-technical, process question - why is this in a non-w3c controlled GH organization?
Comment by @alice May 26, 2020 (See Github)
We had a skim of the spec today in our virtual face to face.
The spec looks extremely thorough and well thought out!
Only a few things stood out to me (I didn't go into depth on each of the elements, or the box model):
- There are a number of open issues in the DOM and JavaScript section, which look interesting but seem to be mostly deferred. Are there any of those we should take a look at?
- The list of elements differs slightly from the list in the Explainer -
<maction>
,<mprescripts>
and<none>
aren't mentioned in the Explainer, and<menclose>
doesn't seem to be in the spec.
That said, there doesn't seem to be any reason to keep this review going, unless there are specific things in the spec or associated issues you'd like us to take a look at, so we're going to propose closing - please let us know if you want more feedback from us!
Discussed
Jun 1, 2020 (See Github)
All: Having a look at Brian's latest coment...
Sangwhan: tricky - leaning towards option 1
Alice: that was my gut instinct as well
Sangwhan: it feels like we don't know the exact usage patterns of an href in a mathml context well enough.
Alice: what would be the downside of option 1?
Sangwhan: people may not like it...
Alice: they can wrap it - put an a-tag around the number.
Sangwhan: option 3 is very unlikely to happen.
Yves: are mathml elements considered as a block or not?
Sangwhan: that's a big meta-question. Are components of mathml text-y or SVG-y ...? not sure it matters.
Yves: if you had a solution of a polynomial equation .. and want to link a whole part of the equation to something... is it possible or not?
Sangwhan: seems logical that you would like to hyperlink parts of an equation ...
Yves: ... and we don't know the constraints put by mathml itself...
Sangwhan: ... or the implementations....
Dan: So option 1 ...
Alice: [reviewing example given here]
Sangwhan: it will be painful in the way you do it there - where each and every variable gets its own annotation.... would have to define multiple text elements...
Alice: looking at the actual mathml... they've added hrefs to everything...
Sangwhan: this is one example but doesn't demonstrate anything that touches on grouped components for example...
Alice: all leaf nodes.
Sangwhan: yes. If you think of how href behaves in the web - it does not work only on bottom level leaf nodes. I don't think this (example) alone defines a representative usage pattern...
Alice: if i put an A around a ... will it mess up the rendering?
Alice: we could say "Our first instinct is that (1) would be the simplest solution and to guide any future investment in (2) or (3) it would be useful to have a better understanding of how people are using hrefs. The last comment gives one example but that example has all the links on the leaf nodes and may not be representative of how people are using links."
Sangwhan: for this case I don't think it's particularly useful...
Alice: not clear the value you get from it...
Alice: I can leave that feedback.
Alice: the stuff that we've deferred they were wondering if we had opinions.. If we can see any obvious "foot guns". If they do want to add custom elements later on and shadow dom have they done anything to make that not possible?
Alice: .. scrolling through integration to web platform section ..
[discussion of ins and outs of shadow-dom]
Alice: they would need to come up with their own safe-list. I agree they did the right thing to punt. Seems like a niche thing.
Discussed
Jun 1, 2020 (See Github)
Alice: Only remaining issue is what to do with links. Brian gave us 3 options.
- Punt for now
- chose a safe list for href - more in line with the original design of MathML
- add an
ma
element similar to link.
... we like option 1 since we don't know what the uses cases really are and that will give us time for arrive at the best solution for the long run.
Brian: My preference as well. Not the CG preference, but certainly mine. Being forward looking this seems to be the best option at hand and too many unknowns. ... There is lots of existing content using links and we need it for backwards compat.
Peter: Existing content is in XML?
Brian: All over the place, but yeah, mostly. MathJax too.
Alice: The MathJax stuff is not super relevant? Because it generates html?
Brian: Yes and SVG too. A lot of folks have XML and all they need to do is change their mapping and regen.
Alice: So in summary, Punt for now seems the best option and the one we all agree on? (summarizes more unknown behaviours - various modality of click etc.)
Tess: The idea behind Html.... was to fire the href on the element.
Peter: If we consider XHTML, any element with an href can become a link.
Alice: How feasible is it to embed HTML?
Brian: You can't
Alice: Because it breaks formatting?
Brian: Yes and it is weird.
Tess: Is that any worse than a tr
? The goal isn't to make any arbitrary HTML work inside MathML, but, make MathML as capable as HTML in terms of links at least.
Peter: Any use cases where an entire row is supposed to be a link?
Brian: Yes, not in the same was as a table row in HTML but mrow
can be a link.
... If we have a new math-link element in the future, it will make a lot of sense as it will be as useful as HTML and SVG.
Tess: If mrow
is supposed to be link-capable, I would expect the same effort will make tr
the same, right?
Brian: ack
David: Does option 1 mean there aren't problems for linking individual symbols? And using HTML doesn't interfere with MathML's formatting ??
Brian: No
Alice: Why can't we have links in the middle?
Brian: The parser as it will close everything in the current context.
Peter: ??
Tess: Use case question. I recall from school that, when you have an equation you've never seen before, the teacher used to point out particular parts of the equation - the numerator for example etc. I want such parts to be clickable and usable for such examples.
Brian: Right! This is definitely a use case that we're tracking and want to make possible. Hence the reason for links :)
Brian: What about Sangwhan's comment?
Alice: (summarizes Sangwhan's comment)
Brian: Honestly, don't understand the comment. I will ask for more details.
Peter: Just did some testing and it seems that Firefox is pretty happy with HTML links around mrow
.
Peter: So maybe you can just throw a
s randomly inside MathML?
Brian: Not sure what's up here. Will investigate more.
Rossen: So have we convinced ourselves that we should advice any other option than 1 at this point?
Alice: Perhaps not. We should continue working with the MathML folks and see if that'll work for them.
... (more discussion about Peter's example) Seems to work in Firefox...
Brian: I suppose the question still is - can we try to document what's happening with Firefox and seemingly Safari or go with option 1? FWIW, the CG is interested in the TAG's opinion.
Rossen: Would they be OK with Option 1?
Alice: (missed)
Brian: Sure. The CG will also be interested what the current browsers do and how to transition everyone to a compat state.
David: I'm OK with 1 as long as linking of tokens works reasonably and in interaction with other things...
Brian: For sure.
Alice: David, is the existing FF support of links (href
) everywhere, any thoughts?
David: Not sure.
Alice: Later if you decide you want shadow DOM, you will be OK to change?
Brian: Yes.
Peter: HTML5 dropped the ball on namespaces and made the situation confusing. There is no way to gracefully exit/enter between HTML, MathML, SVG. Transitioning between them requires closing everything and only then transition into another space.
Brian: Thank you for all the time spent on the issue. Sounds like there is agreement about use cases and the importance of linking, we just don't want to rush into the specification before we know more?
Alice: Yes, and unshipping such changes in engines will be complex.
Rossen: So recommend option 1?
Tess: Sure, we will summarize and recommend in the issue.
Brian: Having two shipping impls makes it difficult.
Alice: Yes, and unshipping is difficult. Also, we don't lose much by delaying a concrete specification.
... also, it will be important whether implementers are willing to remove the existing behavior of href
, or else we'll still have to deal with the disadvantages of it in the future.
Tess: Have we asked if unshipping the current href
behavior is something implementers would do?
Brian: Not formally. Happy to go ask around
Comment by @bkardell Jun 1, 2020 (See Github)
The spec looks extremely thorough and well thought out!
Thanks! It's had, and continues to have a lot of work, details, improvements like code examples added.
The list of elements differs slightly from the list in the Explainer
This is my fault, I let them get out of sync because of open issues on the spec from a while back. I believe we have correct those with a pull from this week.
There are a number of open issues in the DOM and JavaScript section, which look interesting but seem to be mostly deferred. Are there any of those we should take a look at?
Yes, we are very interested in ultimately aligning with the platform to the very greatest extent possible. As of our CG call today we have begun to label these things as specifically being deferred to next steps so that we can be clearer and the spec convey more properly about what the immediate goals of initial stable core implementations is. I think what is important to me, as I said when I met with TAG was in your opinion on how we have broken the problems out and are applying good principles and practical lessons here. We asked many critical questions here on DOM/JS early on. Some of these (shadow dom, custom elements) are deferred, but that served as guiding factors while we were doing other things: Making sure we had first steps (elements have IDL in the first place, we have a concept of identifiable unknown elements, we've considered a future with Shadow DOM in discussions where this would be important like linkable elements and so on). So, I am interested in whatever aspects of this TAG can provide thoughts on: Is the level of decisions appropriate? (IE, are there things that are deferred that shouldn't be or vice versa? Are there unreasonable answers?) Or, on things like wanting to explore custom elements/shadow DOM and things and normalize the platform -- are they reasonable aspirations?
Most obviously, of course, we are interested in whether there is anything actively concerning. If there is not and you'd like to close the issue, that is ok with us. However, we're very open to and interested in whatever additional thoughts the TAG is able or willing to comment on regarding the above.
Comment by @bkardell Jun 8, 2020 (See Github)
There is one thing that the CG would very much like TAG's input on: we are struggling with specifically what to do with links.
MathML was designed with an assumption that "someday, everything can have an href/be a link" was the future. So, the pre-core MathML specs allow any MathML element to have an href.
These days we understand that links are quite complex with regard to security, idl, integration with CSS, focus management, role, etc. In most browser implementations of MathML, token elements can be hyperlinks, and the vast majority of hyperlinks in existing MathML are on token element, or on mrow
.
We are struggling between 3 choices:
-
Simply say MathML doesn't have hyperlinking elements for Core Level 1, and take advantage of the ability of token elements to contain HTML by providing authoring advice to use an
<a href>
or write JavaScript code to handle the click event. -
Choose a safelist of MathML elements to support an
href
attribute. This would be either all token elements, or all token elements plusmrow
(together these are nearly all uses we could find).- This would involve a longer review process to reach consensus on things like what the default tab index of these elements should be and how it should be specced (would it entail a PR on the HTML spec to add these elements to the list of focusable elements?)
- It would also make it tricky to support Shadow DOM on these elements, since hyperlinks can't have a shadow root.
-
Add a new
<ma>
hyperlink element which ismrow-like
. The arguments here are more or less the same as for w3c/mathml#1, but they also solve for groups and still allowmrow
to support Shadow DOM someday.- This seems like a good trade-off, but how hard would it be to get implementers and authors to buy in to this change?
Comment by @NSoiffer Jun 15, 2020 (See Github)
To be more concrete about why leaf elements are common in MathML, take a look at the NIST Digital Library of Mathematical Functions (DLMF) which uses MathML. If you go to almost any page with math, many of the leaves are linked to their definitions (you need to mouse over to see that). E.g., on the page about binomial coefficients, the 'm' and 'n' point to a definition about integers and the 'z' to one about complex numbers. On other pages, function names for 'cos' and 'sin', along with esoteric functions point off to their definitions (and alternative representations). I believe the DLMF site's usage of links is pretty common for encyclopedic sites.
When the leaf element is not the appropriate place to put a link, mrow
is often used. mrow
is the span
of MathML. It would be really nice in the future to be able to attach a Shadow DOM to it. Ideally, I'd like to see attaching a Shadow DOM to mrow
when href
is not present and not allowing the attachment if it is present. However, I lack the expertise to know if such a conditional option is within the realm of possibility even if attaching a Shadow DOM to most MathML elements is deemed legal in the future.
Note: MathML is used in contexts outside of the web, so the MathML full spec allows a web schema or other schema to be defined. <a>
could be added to the full spec, but the name doesn't fit the existing naming scheme for MathML elements and enforces all of the web semantics attached to it on it, which is why ma
is the proposed new element name. The full spec would like want to mention only the use cases relevant to MathML. MathML Core, being tied to the Web would define ma
as being equivalent to a
.
Comment by @alice Jun 23, 2020 (See Github)
I'll leave some comments on https://github.com/mathml-refresh/mathml/issues/125 regarding our thoughts on links, just to keep that discussion in one place.
Regarding the other questions - we think you made good decisions about what to defer, and that in particular custom elements/shadow DOM would need some very careful thought about use cases and implications to guide design.
We're going to close this for now - thanks for your patience and please let us know if we can help in future!
Comment by @alice Jun 23, 2020 (See Github)
Just noticed https://github.com/mathml-refresh/mathml/issues/125 hasn't had any updates for a while, so to avoid zombifying that issue I'll just leave my thoughts here.
We talked about this as our breakout today, and generally felt like (1) sounded like the minimal option, assuming <a href>
can reasonably be nested within MathML.
We weren't sure exactly how that worked - is it limited to being on "leaf nodes", as @NSoiffer alluded to above?
It seems like, if that is the case, then at least the cases linked to in @NSoiffer's comment would still be implementable using HTML <a>
embedded in MathML?
To guide future work on option (2) or (3), it would be good to have a better understanding of how authors have used href
in MathML in the past - what are they linking to, and at what level, and why?
Comment by @bkardell Jun 23, 2020 (See Github)
We weren't sure exactly how that worked - is it limited to being on "leaf nodes", as @NSoiffer alluded to above?
That's right, these make up the vast majority of links in practice though (leaf nodes)
it would be good to have a better understanding of how authors have used href in MathML in the past - what are they linking to, and at what level, and why?
There are uses of links on mrow, which is kind of the generic grouping container for MathML. In the same examples @NSoiffer was mentioning - if you wanted to link to an expression rather than individual tokens, you need some other facility (like making mrow linkable or adding a link element for math that is dedicated specifically to linking instead of dual purposing mrow). Personally, while I am not keen on adding new elements, trying only to explain and subset in Core - I think in the long run a single dedicated linking element is the better/more consistent/least risk choice here.
Comment by @cynthia Jun 24, 2020 (See Github)
(Disclaimer: Math illiterate saying random things)
"mrow href" feels quite restrictive, due to the commutative property of equations. (The restrictiveness is based on the fact that it requires related parts of a given formula to be spatially adjacent) Instead of individual leaf nodes or tokens, it does feel like the long term solution might be to implement something like an image map equivalent that lets you hyperlink a given semantically related set of components of a formula rather than requiring authors to manually update n leaf nodes that point to the same link.
That said, we would like to see more complex use cases.
Comment by @alice Jun 24, 2020 (See Github)
Going to reopen this to keep talking about links - we are still happy with the rest of the spec!
Discussed
Jul 1, 2020 (See Github)
Alice: ...the story so far...
Sangwhan: Brian asked me about my question.
Alice: that's like an extra level of complexity I don't think we need to consider.
Sangwhan: something that isn't quite solved but might be useful.. math would suffer from this being not there - especially when moving symbols around...
Hadley: if the benefit of that is any instances of a variable resolve to some instance of the variable... doesn't feel that different from the rest of the web - to do it in a CSSey way or instantiate each time.
Sangwhan: My response to Brian was:
Okay, so imagine a simple equation like this: y = ax + b Where ax links to something. Now twist this a bit: y / a = x + b / a But you want to note that / a, x, and the other /a all link to ax, since the term is there - pointwise links for each of them is doable, but then the semantic group connection is lost. y ^ 2 = ([ax]) ^ 2 + 2[a]b[x] + b ^ 2 or something like this where the [] indicate the group
... I told them I don't want this solved now. But the example they linked was way too simplistic for common use cases for longer equations. Don't care if it's not solved right now. Feels like doing something premature would not be good.
Alice: but what do we do about what's already shipped with hrefs?
Sangwhan: un-ship?
Alice: breaks a bunch of existing content... Brian said towards the end of that call... a lot of people are saying "my code won't work in Chrome then.. oh well". This is supposed to be about creating an interoperable baseline standard.
Dan: We're not the ones controlling the code base. We could issue a recommendation...? We could do what Sangwhan said...
Sangwhan: ...that we already rushed out MathML and that's why interop is hard now. Maybe take it step-by-step and try to do it better this time. It's not interoperable right now. Safari, Chrome and firefox already have three different implementations. Not good.
Dan: Could we favour option 1 because there isn't enough consensus about the right answer? and if you ship anything other than that, make sure people know it's an experimental feature and not part of the spec?
Alice: but it's been shipping for decades. This is the thing, why they had to do this project so carefully. there is all this MathML out there, all edge-case-y and fragile. Do we break all that? What's the cost of that? Can we get the browser vendors that are shipping MathML to buy into unshipping it and breaking all of that content?
...Possibly shadow DOM is the most compelling reason. I linked in my comment to a discussion they were already having. Attaching shadow roots depending on whether there was an href. But that's funky, right? So maybe we should say for future compatibility with shadow DOM, option 1 is a very neutral option, and doesn't lock you into requiring special rules. Option 3 might be one possible future direction once we understand the use cases more fully — but it might be a good idea to revisit the use cases, and see if a more nuanced design can be reached. This does mean a lot of existing MathML won't work in chrome and will stop working in other implementations. That is regrettable, but — it will be trivial to write a little polyfill that at least repairs the functionality for leaf nodes.
Hadley: it feels like we need the working group to figure it out. I'm hearing the wg's work doesn't have buy-in from all the implementers. We could come up with a solution but we aren't the right people.
Alice: Implementers ... existing implementations in webkit and firefox that go back years - implemented in the early days - when blink forked from webkit we removed mathml. Not sure if the implementers already shipping would buy in to unshipping href everywhere. The folks who are saying "i don't like anything that doesn't involve href everywhere" are not implementers. They have content.
Hadley: both of those problems feel to me -
Alice: they've discussed it at length and that's why they asked us.
Hadley: our response should be: this is us operating in a perfect world vacuum but we feel like the implementers, authors and developers ideally should reach consensus. Our job should be to help them set boundaries. Feel this shouldn't be out responsibility.
Alice: what flavour of advice would be appropriate?
Hadley: level you were talking about is fine. Adding a line or 2 about how all of these points of view should come from implementers, browsers, authors, developers.. we are proxying for them. means that we encourage the WG think about bringing these views to the table.
Alice: value of option 1 is that it doesn't require extra work but gives you the capability to add links - and is future proofs; option 3 can be disregarded - can come later as an add on. Option 2 rules out option 1 and makes option 3 moot but it has the value of being backwards compatible.
Hadley: maybe share that feedback.
Dan: I feel like our response should lean towards option 1. And then see what happens in the implementation and content space and revisit.
Hadley: ... close to the way you do things in [html] content ...
Alice: option 2 is the href on every mathml element...
Alice: [on option 1] simplicity, doesn't put you in an awkward position re shadow roots, and it does put you in a position to come up with a more nuanced solution re: sangwhan's point.
Dan: I will come up with a proposed closing comment based on our discussion that we can agree on at the plenary call
Comment by @alice Sep 23, 2020 (See Github)
@torgo and I chatted about this just now in our virtual face to face.
We recall a discussion with @bkardell about link semantics, and the difficulty of weighing up the importance of backwards compatibility with existing code, and future-proofing for allowing attaching shadow roots.
It seems like backwards compatibility does need to take precedence here, i.e. the existing solution of "anything can have an href". This does mean there will be some extra work necessary at some point to explain when it is possible to attach a shadow root (since <a>
elements are not allowed to have shadow roots attached), and to explain what happens if someone tries to set an href
on an element which already has a shadow root.
We can see two options for the latter:
- the
href
takes precedence, and turns the element into a de facto<a>
element, causing the shadow root and any contents in it to be removed; or - whichever is attached first takes precedence, so if a shadow root was attached, the
href
attribute has no effect.
All that being said, we have seen that the MathML group has a much better knowledge of the domain than we do, so we would be happy to be guided by whatever decision they made on this topic.
Edit to add:
We could also imagine the "href on anything" being a legacy-only feature, with authors advised to use a new <mrow>
-like link element going forward.
OpenedOct 30, 2019
Hello TAG Friends!
I'm requesting a TAG review of:
Further details:
You should also know that...
MathML Core comes from previous TAG review of MathML specs/plans. Among our primary aims is to establish an interoperable and widely agreeable starting point for discussions that have been created by MathML's largely unique history. We've taken very much history, commentary (including TAG's) and challenges into account. We've taken great pains to balance many things: Making this as small as possible, align as directly as possible with the rest of the platform (including DOM and CSS), eliminate unknowns and surprises, apply learnings from actual implementations (firefox, webkit, office and TeX), rigorously specify and remain useful and compatibile, improving the many documents that already exist.
We'd prefer the TAG provide feedback as (please select one):
Security Questionnaire...
What information might this feature expose to Web sites or other parties, and for what purposes is that exposure necessary?
Is this specification exposing the minimum amount of information necessary to power the feature?
How does this specification deal with personal information or personally-identifiable information or information derived thereof?
How does this specification deal with sensitive information?
Does this specification introduce new state for an origin that persists across browsing sessions?
What information from the underlying platform, e.g. configuration data, is exposed by this specification to an origin?
Does this specification allow an origin access to sensors on a user’s device
What data does this specification expose to an origin? Please also document what data is identical to data exposed by other features, in the same or different contexts. * Nothing
Does this specification enable new script execution/loading mechanisms?
Does this specification allow an origin to access other devices?
Does this specification allow an origin some measure of control over a user agent’s native UI?
What temporary identifiers might this this specification create or expose to the web?
How does this specification distinguish between behavior in first-party and third-party contexts?
How does this specification work in the context of a user agent’s Private Browsing or "incognito" mode?
Does this specification have a "Security Considerations" and "Privacy Considerations" section?
Does this specification allow downgrading default security characteristics?