[CSSWG] Minutes San Francisco F2F 2016-05-09 Part IV: CSS Content, Testing [css-content]

=========================================
  These are the official CSSWG minutes.
  Unless you're correcting the minutes,
 Please respond by starting a new thread
   with an appropriate subject line.
=========================================


CSS Content
-----------

  - The conversation started based around an issue that, as written,
      cross-references have the potential to create infinite loops.
      - plinss suggested solving this using a similar approach to
          how footnotes are handled traditionally and Florian agreed
          to investigate it.
  - The group then moved onto a more philosophical discussion on the
      future of the spec. Topics discussed included:
      - How can we ensure that browser vendors are okay with the
          approach so that they can implement it in the future?
      - Is the spec too big to publish?
      - How much attention should this spec get as it's not likely
          to be prioritized and/or implemented by browsers? Or
          should browsers be more interested in this?
      - Should epub have a special time on a F2F agenda like the FX
          meeting slots?

Testing
-------

  - RESOLVED: Drop requirement for author or reviewer metadata
  - RESOLVED: Move to primary <link> to spec+section being inferred
              from directory structure. Supplemental <link>s must be
              inline.
  - RESOLVED: spec-shortname/N-levels-of-ignored-subdirectory-
              names/frag-id-of-section
  - RESOLVED: Remove any title requirement, other than having one
              (implied by validity of HTML requirement)
  - RESOLVED: testharness.js tests don't need a meta assert (but
              reftests still do)
  - Moving to Github, move all of our tests to WPT repo, and
      stopping future use of Shepherd were discussed, but tabled for
      future conversation.

===== FULL MINUTES BELOW ======

Agenda: https://wiki.csswg.org/planning/san-francisco-2016#proposed-agenda-topics

Scribe: fantasai

CSS Content
===========

Page Number References
----------------------

  Florian: With regard to cross-references
  Florian: It looks like this:
  <Florian> a::after { content: target-counter(attr(href, url),
            page); }
  Florian: Implemented in Antenna House, Prince, and PDFReactor
  Florian: Vivliostyle looking into implementing.
  Florian: Major issue right now is that as specified, it could be
           infinite passes.
  Florian: If you have something reference at the very end of 109
  Florian: You do re-layout, and then now it's at page 110.
  Florian: This goes back to page 109.
  Florian: In most cases you do N passes and it eventually stabilizes.
  Florian: 20 minutes is okay for print.
  Florian: 20 minutes is better than infinite minutes.
  Florian: I've never run into infinite loops in the wild, but
           multi-passes happens.
  Florian: It's already terrible.
  Florian: N passes of laying out several hundred pages is a bad idea.
  dauwhe: If N is 2 it's not too bad.

  <ojan> is there a spec for what we're discussing or just the
         mailing list threads?
  <fantasai> no spec for this issue
  <dauwhe> https://drafts.csswg.org/css-content/#cross-references

  plinss: It's only infinite if you allow the race condition to
          continue.
  plinss: There's other fun things in paged layout that can create
          race conditions.
  plinss: Can apply a generic solution, detect if you are racing and
          stop racing.
  Florian: Detecting a loop and stopping is one way out of the
           problem.
  plinss: Do layout, then check if it moved, then it stays there,
          don't bring it back.
  Florian: Problem is you end up with incorrect table of contents
           numbers.
  plinss: No, do second page layout. If it ends up on 110, you treat
          is as a widow.
  plinss: Leave it out at 110.
  plinss: Don't re-layout.
  dbaron: You do one pass, do references, say this has to be on at
          least this page
  dbaron: And shift things to later page.
  dbaron: But not earlier page.
  Florian: With a forced break priority.
  dbaron: Well, might want to do a priority with some ...

  Florian: Alternative solution, similar to manual fix-ups
  Florian: On first pass you have a placeholder.
  Florian: First do pass with a placeholder.
  Florian: Then do layout, fill in the text.
  Florian: If it's smaller, do some alignment within the placeholder
           space.
  Florian: If it's larger, might have ink overflow.
  [skepticism of this approach]
  ...
  plinss: This is a generic problem. Could have same problem with
          widows and orphans.
  plinss: This is a generic problem. Gonna run into the same problem
          in all sorts of other ways.
  plinss: Think we should have a generic solution.
  plinss: Not have an author-specified placeholder.
  dbaron: The solution is similar to standard solution to footnotes,
          which is if you push ...
  plinss: If your footnote grows, starts to push marker off, stop
          growing at that point.
  plinss: Same principle.
  plinss: Just before it would create a race condition, you stop.
  Florian: Okay, I hadn't thought about that one.

  Florian: We have this on our roadmap, not interested in infinite
           loop solution.
  Florian: We also think that having CSS properties that are
           acceptable for print formatters but not Web, is bad.
  Florian: Many passes is not good.
  plinss: There are other problems that require multiple passes.
  plinss: But most can be done in 2 passes, tops.
  Florian: So, way you suggested, no need to change syntax.

  Florian: One side advantage of placeholders, if you have long
           document and it takes awhile to render, have something to
           show in the meantime.
  dauwhe: Could do that as an author by putting placeholder content
          in HTML and then replace with generated content in CSS.
  [missed how]
  Florian: So most of the time you get 2 passes.
  plinss: Most of time you can do in 1 pass.
  plinss: Sometimes have to go back and do it again, then stop.
  plinss: You might have a rippling effect, but not a looping effect.
  plinss: Might have to do nlogn.

  ojan: We won't implement any of this, ever.
  ojan: It involves laying out the entire document in order to
        figure out what page something is on.
  ojan: Never doing that.
  esprehn: We treat generated content as DOM.
  esprehn: So this is going to be an infinite loop for us.
  ekimber: Certainly the case that in context of print, potential
           for infinite lops is unavoidable.
  ekimber: We might not be doing in this context, but then maybe you
           move stuff to a different page cuz not enough space, but
           that creates enough space, so move it back.
  ekimber: So only solution is to have a "stop trying" solution.
  esprehn: In our case, at a fundamental level layout can't affect
           DOM.
  esprehn: You can't say "do layout, and then set attribute based on
           layout"
  plinss: Layout should never affect DOM. But you don't have to
          implement this as modifying the DOM.
  ...
  plinss: It's not DOM tree, it's layout tree.
  plinss: You have some situations, but you deal with it.
  plinss: But this is implementation details.

  myles: We're all agreeing here.
  plinss: Nobody is saying that layout affects DOM. I'm saying you
          don't have to implement generated content by affecting the
          DOM. If you do, can't implement these kinds of features.
  gsnedders: If we have 2 implementations, we're fine.
  <gsnedders> (sidenote: I was mostly being sarcastic about the fact
              that no browser will support it and our 2 impl
              requirement, given minutes don't capture tone)
  Florian: We have 3.

  TabAtkins: How do we deal with things that will not be implemented
             by browsers, but are implemented interoperably by other
             engines?
  TabAtkins: How do we indicate to authors, that this won't work in
             browsers?
  Florian: Making clear to authors is useful.
  Florian: But one goals of what we're doing at Vivliostyle is to
           explicitly stop having CSS for Web and CSS for Print
           being two different things.
  Florian: Want to be integrated.
  Florian: We know browsers won't prioritize these features, but
           want to make sure they are implementable if they become
           prioritized.
  ...
  hober: Florian wants the solution to be something we could
         theoretically accept.
  tantek: We will never implement vs. this is not a priority, those
          are two very different things.
  esprehn: They should just do it in Houdini.
  Florian: Risking a longer debate.
  TabAtkins: Similar to static vs dynamic profile of Selectors.
  TabAtkins: We have something that will fundamentally not be done
             in CSS processing.
  TabAtkins: But works fine in batch processors and JS.

Ebooks vs. Web
--------------

  Florian: I'm talking about ebook readers.
  Florian: Not batch processors.
  TabAtkins: We've already made a somewhat principled split between
             main Web stuff for CSS and other stuff.
  TabAtkins: Speccing that, and doing it well.
  TabAtkins: Fine to do that for ebook or whatever.
  TabAtkins: As long as a) it's clear, as in Selectors, that it's
             not expected to work in Web pages right now (though
             could change in future)
  TabAtkins: and also b) scope amount of time we spend on this.

  Florian: Jen has some good talks about this, Web design now be
           incredibly poor and boring cmp print
  Florian: Fantastic design on magazines, not done on Web.
  Florian: Web designers should look for inspiration elsewhere than
           the Web.
  Florian: Maybe pagination isn't part of that.
  Florian: Maybe mostly print, but having on the Web might be fine.

  esprehn: We should provide primitives, so people can make
           libraries, and if it's super popular we can backport to
           the Web.
  esprehn: Core of Web should be small, and libraries should
           implement these things.
  Florian: That is okay, but saying " this is for print " don't want
           to do.
  esprehn: Should say "this is for libraries"
  ojan: Being a standard and a spec isn't coupled to whether shipped
        in Web or print formatters
  ojan: Being a spec doesn't say where it gets implemented. That's a
        good thing.
  ojan: If we treat the whole room as caring about all the issues [??]

  plinss: I think I agree with all of you guys.
  plinss: What products implement what features? Depends on the
          market.
  plinss: Doesn't mean we can't standardize how these things should
          behave.
  plinss: Whether implemented in browser vendors or libraries or
          whatever.
  ojan: Why have browsers in the room?
  astearns: Because the CSS expertise is in this room.
  astearns: We want to avoid the situation like EPUB 3 where they
            made up stuff for CSS that was badly designed.
  Florian: Also obvious that browser vendors get priority on topics,
  Florian: Then again, a whole bunch of people here who are not
           browser vendors.
  gsnedders: Also worthwhile to point out that a lot of people in
             this room have a good idea what can be performantly
             implemented within the larger CSS model
  gsnedders: regardless of whether implemented in browser or not.
  gsnedders: And that's a good thing.

  jensimmons: It feels like some of this also is about giant billion
              dollar companies saying "this isn't in our interest,
              therefore shouldn't be in wg"
  jensimmons: But there are smaller vendors, smaller groups that
              have other interests
  jensimmons: I don't think it's fair to say that if Google will
              never implement, we shouldn't spend time on it.
  jensimmons: There are some things that are super worth our time to
              make sure specced well.
  jensimmons: Things that epub and print needs, and a lot of other
              things.
  jensimmons: Tension between reality of who pays us and let's make
              it the Web. Web is cool.

  dauwhe: I would just drawing back and looking at question in hand,
          this spec is about generated content in general.
  dauwhe: Talking about the value of one particular type of counter.
          But this applies to a lot of different counters, and there
          are a lot of web stuff in this spec.
  dauwhe: We reach some resolution on the particular issue, might
          not end to specify width for placeholder for page counters
          in this circumstance.
  dauwhe: As we gain implementation experience we can perhaps
          revisit the issue.

  Florian: plinss suggestion is maybe a more interesting solution to
           explore.
  Florian: Given obvious priorities of browsers I think it's fair to
           timebox this type of non-browser discussion.
  Florian: But definitely don't want it to be on a separate track.
           That has been a disaster.
  Florian: When liam came to us to say that "I'm sorry to shut down
           XSL:FO, but would be ok if CSSWG takes on our use cases"
  ojan: Don't have a problem with CSSWG taking on these specs
  ojan: Do have a problem with having this whole room to discuss
        spec where only 5 people are talking.
  ojan: We need to fix that.
  dauwhe: General problem.
  tantek: That's a scheduling problem.
  Florian: Also, Tab and fantasai are always in the discussion.

  ojan: I would feel very differently if this was a javascript
        library.
  ojan: Forcing whole page to re-layout would be fine for a JS
        library.
  ojan: Fine feature, serves user purpose
  Florian: Our UA is a giant JavaScript library.
  ojan: Understand about tracks... but how about splitting such
        things off into a separate day... houdini ...
  astearns: Houdini topics [...]
  Florian: Some are native implementations, not JS.

  esprehn: What about the rest of the spec?
  esprehn: This spec contains a bunch of stuff. Datetime and
           document-url, leaders, etc.
  esprehn: From our perspective belongs in a library
  esprehn: Think it should be in a JS library
  esprehn: Be really nice to publish a spec that describes what
           browsers really do.
  fantasai: That was 2.1.
  esprehn: But it didn't.
  fantasai: What's missing?
  Florian: I put this one on the agenda because we want to
           implement, but not how it's been implemented by the other
           print formatters.

  dauwhe: I came into the WG just as Håkon was leaving, and took
          over editorship of GCPM.
  dauwhe: Much of it was a .. junkyard.
  dauwhe: Stuff just collected in GCPM.
  dauwhe: Over past few years, resolutions to move things into their
          respective specs.
  dauwhe: Moved GC features into GC.
  dauwhe: Also now a spec hadn't been published in 13 years, full of
          cool and interesting ideas from Håkon and Ian Hickson.
  dauwhe: Many things important to the Web, would like to publish.
  dauwhe: What we have now is an early-stage ED.
  dauwhe: fantasai and I did some work on this to bring it to state
          where we can present to WG and publish a new WD.
  dauwhe: Beyond that it really is WG decides.

  tantek: I'm agreeing what Elliott is saying, if we want to publish
          the WD, need to shrink it.
  tantek: If we want to publish REC track document, need to have a
          concerted effort to split the features that are being
          actively developed vs. junkyard features into next level.
  fantasai: This *is* a trimmed down spec, it's just not trimmed
            down to "browsers only" set of features.
  fantasai: If the working group is not taking that as being trimmed
            down then the WG is not browser only.
  fantasai: We're working towards trimming it to get it to REC.
  dbaron: We shouldn't look at Ebook things as being separate from
          browsers. Ebooks being in a browser is maybe a good thing.
  dauwhe: W3C and IDPF are working towards more integration.

  skk: We also creating epub viewer, based on Blink, creating page
       generation with C++.
  skk: I think generated content spec is not for web browsers, but
       for Ebook viewers.
  skk: But if we have a chance, but we are using Blink so we want to
       talk with Google web browser team to generate the page numbers.
  skk: Page numbers are async generated.
  skk: We already did the implementation now, but the collaboration
       API specified between Blink and us would be very useful.
  skk: Also Gecko, better if API is specified.
  skk: Such kind of discussion is productive between Web and Ebook.
  skk: From Ebook viewer implementer perspective.

Alt Text for Generated Content
------------------------------

  dauwhe: One thing in the spec that hasn't been implemented is
          trying to design a mechanism to make generated content
          more accessible.
  dauwhe: Which is a critical point.
  fantasai: Not about exposing generation content to a11y--that's
            already required.
  fantasai: but about some generated content is symbols or pictures,
            needs different text for speech.
  dauwhe: Our idea was that the content property takes this endless
          trying of various bits of strings or replaced elements.
  dauwhe: We're proposing that at the end you can put a slash and
          then alt text.
  dauwhe: Potentially empty, if the string is decorative (e.g.
          asterisks)
  TabAtkins: Previous proposal was an 'alt' property.
  fantasai: It was bad because it doesn't cascade together with
            'content'
  dauwhe: This would also allow us to provide alt text for images
          inserted via content.
  plinss: Instead of using URL, maybe using image function?
  plinss: ... and put alt text inside that function

Ebooks vs web cont.
-------------------

  ojan: Ebooks as part of the Web is a good future.
  ojan: That's why I think speccing these things is important.
  ojan: But think of it similar to SVG-CSS day.
  ojan: Where it's a special cross-functional meeting.
  ojan: To have an explicit Ebook Track, not necessarily in
        parallel, but be explicit about that section of the F2F.
  Florian: I think that's fine, a bit concerned about the boundary
           being fuzzy.
  ojan: I think being explicit about that might change what's
        plausible, practical to implement.
  ojan: E.g. target-counter() is great as a feature, but not as a
        built-in browser feature.
  TabAtkins: Could have JS api about getting the counter value.
  Florian: I'm happy about being explicit about scheduling this in
           sections, less happy about putting it into the spec.
  TabAtkins: I don't like specs that web authors look at but don't
             know what to use.
  Florian: caniuse.com
  TabAtkins: I think authors should know whether such features will
             ever be useful.
  plinss: I don't want to be picky about language, but going to be
          picky about your language.
  plinss: Have no problem with your fundamental point "this is
          what's expected to be in browsers today."
  plinss: But I have a problem with saying "this is never expected
          to be on the Web ever."
  plinss: Saying up front "We don't ever expect this to work in a
          browser", that's going to change the future.
  plinss: That's a bad way to scope the future.

  astearns: Has to be put in language that the current efforts are
            going to be in script, but that they may move into the
            browsers. And we don't have a good set of terms to talk
            about that migration purpose.
  Florian: I'm not sure it's bad to get peoples' hopes up.
  Florian: If there's a lot of people that think people really want
           it, then it pushes forward.
  esprehn: GCPM didn't move forward for many years.
  Florian: Because it was a lousy spec.
  Florian: I don't want to have that again.
  Florian: People just didn't pay attention to junky spec "for print"
  ...

Page Number References cont.
----------------------------

  Florian: target-counter(), when it doesn't refer to pages, I don't
           see any reason why it wouldn't be useful on the Web.
  Florian: Can do "See Figure 17", nothing wrong with having that on
           the Web.
  Florian: Until you care about pages, might not do page counter
           references, though.
  TabAtkins: Mark it at-risk
  ojan: What if we had two specs. "here's generated content as it is
        in browsers today" and "here's generated content for
        pagination"
  * fantasai thinks we're arguing over this wayyyy more time than
             we're spending on the technical work

  plinss: If you say never gonna implement this, I think you're
          going to be wrong. Can't tell your business interests 5
          years from now.
  plinss: But also, you're not the only browser.
  esprehn: If you have something doing layout totally different, e.g.
           mathml
  esprehn: We're not going to spec that, you can't do that.
  esprehn: I think making the string thing, take the text content
           value of a node, it's a cycle in algorithm, violates
           fundamental constraints of how the system work.
  Florian: I agree with that, and that's why I want this discussed
           here so that we spec it in a way that doesn't violate
           fundamental constraints.
  [repetition of existing points]

  fantasai: Also Elliot I think you're missing the point,
            target-counter() can be used for other things than page
            numbers.
  esprehn: We're not going to ever add more features to counters.
  esprehn: We want people to write JS for counters.
  plinss: CSS doesn't define what's implemented in C++.
  esprehn: HTML had a sorting algorithm, was never implemented, and
           it was removed, and people can implement it in JS.
  tantek: That was also before incubation and stuff.

  <leaverou> esprehn: Do you realize that there are tons of CSS
             authors that do not *know* JS?
  <leaverou> esprehn: you are complicating the web platform for
             authors with this kind of thinking.
  <shane> leaverou: implemented in JS won't mean unusable by CSS
          authors - the whole point of Houdini is to open CSS up to
          extensibility
  <leaverou> shane: Using libraries has a ton of overhead. First you
             need to find the best library, you need to bear the
             bandwidth cost, you need to learn its documentation,
             often switch to another library halfway through etc etc
  <leaverou> shane: Libraries are not the solution for essential
             functionality. Library authors are not spec writers and
             will often create worse APIs
  <TabAtkins> leaverou: Yes, of course we realize that. We also
              realize that the stdlib *cannot* be extended
              infinitely, nor do we want to forever hijack *every
              feature forever* on how quickly browsers can cycle
              their implementation.
  <leaverou> TabAtkins: Then allow people to conditionally import
             modules, but standardize said modules instead of having
             them hunt down libraries which could be terrible.
  <leaverou> it seems to me that Houdini is used as an excuse to not
             implement anything Google devs don't like

  fantasai: This is a draft, you can cut this down we get to the
            point that browsers need to consider implementing it.
  tantek: If that is true then call it something else.
  fantasai: We are replacing those drafts with something new, and
            we're going for a FPWD from the old scope of that module
            and should have the same shortname, etc.
  tantek: I want to suggest a path forward, if there's a dispute wrt
          implementability, indicate in the draft
  tantek: e.g. put a box explaining the implementation experience
  tantek: and caveat of whether it's stabilizing, or is very shaky
          etc.
  tantek: Give authors anyone else reviewing spec a chance of what's
          the context of evaluating this feature.
  tantek: This feature has some print implementation, but no browser
          implementations yet, pls send feedback, at least that's
          conveyed to authors.
  tantek: Rather than mis-conveying any intent.
  tantek: E.g. features that are widely-implemented vs not
          implemented at all labeled separately to help with
          reviewers.
  tantek: So my request is to put per-feature, implementation
          experience and suggestions for feedback.
  dauwhe: We have a mechanism for doing that already: test results
          per browser.
  dauwhe: If we extend that a little bit, can see that Prince/AH/etc.
          that are passing, that gives you the information you need.
  dauwhe: If you see that the tests pass in blink/safari/edge,
          useful information too.
  astearns: Script that does the annotations could be more verbose.
  dauwhe: You can filter on that information, all sorts of things.
          This is data we can get.
  dauwhe: Might make us write more tests, all sorts of things.

  dbaron: plinss said something earlier about not wanting the spec
          to say that a spec was intended for print.
  dbaron: My general feeling is that we do not write enough of what
          our intent was into the specs, and that hurts our ability
          communicate with the ppl reading the specs and trying to
          understand them.
  dbaron: I think we should have more informative text in specs
          saying why what's there is there and what it was intended
          for and so on.
  dbaron: And one of the other worries I have is, if we don't say
          that things are intended for print, then essentially
          there's an incentive for me to try and make things not be
          in the spec because I'm worried about the risk that some
          junior developer at Mozilla will try to implement a thing
          that they shouldn't spend time on.
  dbaron: But they saw it in the spec and thought we should
          implement it.
  <tantek> exactly the problem
  <tantek> or you get some advocacy groups pushing for something

  jensimmons: I just wanted to toss in that I think we should be
              careful not to assume what a browser is.
  jensimmons: Not say "there's real browsers and there's ebook
              readers, and there's print, and we don't care about B
              and C".
  jensimmons: There are lots of experiments happening around what is
              a browser.
  jensimmons: This is going to come up a lot. What a browser is
              is going to change.
  * ojan just wants to clarify that noone said "real" browsers or
         that we don't care about ebooks

  gregwhitworth: Lea commented in IRC.
  gregwhitworth: She was saying that there are a lot of CSS devs
                 that don't know JS, and we're over-complicating
                 things.
  ChrisL: Lea doesn't disagree with Houdini existing. Disagrees that
          Houdini should be used as a blunt hammer for everything.
  <leaverou> yup
  <leaverou> I've seen it used way too much as an excuse to not
             implement or spec things that authors need.

  TabAtkins: The circular ones should be dropped from expectation
             for browser implementations.
  <leaverou> TabAtkins: depends on what you define as a browser. Is
             a print formatter a browser?
  <TabAtkins> For the purpose of this discussion, "a browser" is
              "the things developed by the browser vendors here in
              the room".

  fantasai: I'm happy to keep discussing technical issues, but I
            would like to close the scoping issue.

  Florian: Other topic, not GC, is interaction between Media Queries
           and @page { size }
  Florian: Anyone want to discuss this now?
  Florian: Probably should talk about something other than pages,
           because everyone is hating on pages right now.
  dauwhe: 3D transforms? :)

Testing
=======

  gsnedders: We basically have consensus on getting rid of a lot
             flags.
  <gsnedders> http://testthewebforward.org/docs/css-metadata.html
  * fantasai wants a WG resolution on test metadata so to move
             forward with conversions
  gsnedders: If we want to get browsers actually running the test
             suite, then we need to get browser vendors to actually
             talk about this.
  gsnedders: The metadata thing is actually smaller bit.

  gsnedders: Big thing I want to discuss is stuff like how we want
             to deal with test review in the future.
  gsnedders: How we want to deal with issues on tests in the future.
  gsnedders: Because at the moment we have this weird split system
             with pull requests on GitHub which get reviewed before
             merging.
  gsnedders: Whereas other things are just pushed directly to
             Mercurial.
  gsnedders: In principle, sometime in the future, but realistically
             never, they get reviewed.
  gsnedders: In my opinion it makes sens to move everything to
             github PRs with review before merging.
  gsnedders: Realistically, there's no motivating factor for people
             to review tests before they're landed.
  gsnedders: We saw this with 2.1 as well.
  gsnedders: Just moved everything to approved, thousands of tests
             never gonna review.
  gsnedders: Would like to avoid ending up in that state again.

  <tantek> first piece of feedback, no content in HTML/SGML comments
           please. e.g. "<!-- YYYY-MM-DD -->" bad. Instead, slap it
           on the end of the title attribute, e.g.
           title="NAME_OF_REVIEWER, YYYY-MM-DD"
  <tantek> (kind of like how people sign documents)
  <tantek> could http://testthewebforward.org/docs/css-metadata.html
           cite the previous documentation of the CSS WG test suite
           documentation?
  <tantek> what happened to atomic vs basic tests as Hixie and I had
           distinguished so you could check whether something
           implemented anything at all?
  * tantek digs up https://www.w3.org/Style/CSS/Test/testsuitedocumentation.html
  <gsnedders> tantek: we badly need to sort out the fact we have
              contradictory documentation all over the place…
  <tantek> gsnedders: could you start by citing the previous
           documentation?
  <tantek> (I mean inline in the css-metadata doc)
  <tantek> ah this is the one I was looking for
           https://www.w3.org/Style/CSS/Test/guidelines.html is a
           good predecessor to cite for css-metadata.html
  <tantek> e.g. that guidelines.html has the rel=author, and
           rel=help aspects

  astearns: Got a bit of history because we had tons of tests
            waiting for review in Shepherd, that we new would never
            get fixed.
  astearns: Tests hanging as Github PRs isn't great either.
  dbaron: I don't think reviewing tests is particularly a good use
          of time. Particularly the way they have been reviewed so
          far.
  dbaron: Certain test reviewers have given feedback that ends up
          more or less meaning "go away".
  dbaron: Also best way to to review tests is to write an
          implementation, and to see if the tests pass.
  dbaron: And the important thing to check for is that the test
          tests what it thinks it's testing.

  fantasai: Three things to check:
            1) Test pass when it's supposed to pass
            2) Test fails when it's supposed to fail
            3) Tests what it thinks its testing
  Scribe: iank
  fantasai: I've seen some tests which only pass sometimes, for
            example when it depends on the width of the window.
  dbaron: Implementers are probably going to catch #1.
  fantasai: You can have tests which are mis-labeled.
  fantasai: I think that dbaron has a good point that (1) is going
            to be checked by browsers, (2) & (3) you should check
            for, you may as well check for everything.
  dbaron: I think that web platform tests have worked out a model
          that works here.

  dbaron: I'm pretty close to telling people to create a folder in
          the wpt repo at the moment. This is largely due to
          preprocessing issues.
  fantasai: In terms of review process to we review then land or
            visa versa?
  fantasai: Agree that this is an issue we should fix, but back to
            gsnedders issue on review.
  dbaron: For wpt as a Gecko dev, I can just check in the repo, and
          a Mozilla dev will deal with it working.
  <gsnedders> in w-p-t there's an extra motive to review: you start
              running them when they land
  <gsnedders> in csswg-test, there isn't that if the test is already
              in the repo
  ojan: We have chrome folks that are working on better wpt
        integration tests.
  zcorpan: WPT, review from the browser vendor means you just merge
           the tests.
  ojan: Doing future things in wpt will be good for us.
  <gsnedders> for w-p-t, the browser vendor review must be public
              for free landing.

  Florian: Simply the review process, decrease the amount of
           meta-data, remove the build system, and once we've done
           that we've done a lot. If we do this, then we can
           re-evaluate if we need to do other things. I would not
           want to start by dropping things that we know that have
           value.

  ChrisL: Should keep the metadata, as difficult for people to know
          what the test is testing.
Scribe: fantasai
  gsnedders: WPT has loose rule that the reviewer must be able to
             understand what the test is doing.
  gsnedders: How you communicate that to the reviewer, isn't really
             stated.
  gsnedders: Can put in an HTML comment.
  gsnedders: Could be completely obvious cuz it's a 2-line test
  gsnedders: No point in actually stating forms of how it must be.
  gsnedders: Merely gate it on the review
  gsnedders: but that only works if you do the review before merging.

  fantasai: For our purposes, having links to the sections test
            helps us a lot.
  fantasai: Not just for review, but also to generate test coverage
            reports, implementation reports, and to know which tests
            need to be updated when the spec changes.
  fantasai: So I think having this in a fixed format is useful and
            important to try to keep.

  fantasai: With regards to other metadata,
  fantasai: WPT have slightly different format because they use a
            lot of JS tests that are combined in one file, so having
            HTML comments etc. as documentation makes sense, per-
            file data is not going to be as useful.
  fantasai: Whereas in reftests, more granular per test.
  fantasai: I don't see a problem with pulling out the comment on
            the test, having it in a standard format rather than
            just in a random HTML comment somewhere.
  fantasai: Comment being the documentation of what it's testing.
  fantasai: Just as a function has a formalized comment at the top
            saying its purpose and its parameters,
  fantasai: So that it can be used and understood and reimplemented
            if necessary, so should a test.
  fantasai: This is independent of clearly-written code with good
            comments.

  Florian: On the assertion itself, I think that's one of the things
           that we may need to come back to later
  Florian: if it's getting in the way.
  Florian: But I don't think we should do this until we've cleared
           out all the other problems
  Florian: and have determined that it's still a blocker. Not a good
           place to start from.
  Florian: FWIW, this is less necessary in JS tests. Because you
           have an assertion written as code.
  Florian: But in CSS tests, that's not the case.
  Florian: We might need to drop that description eventually, but
           let's not start here.

  Florian: As for what we can do, with regards to links to specs, I
           think we can sort of have best of both worlds.
  Florian: You store your test in predefined directory structure,
           points to the right part of the spec.
  Florian: But should you wish to link to extra information to link
           to other sections of the spec, then you can add more such
           links.
  Florian: Not blocking.

  Florian: Another bit of metadata is the title;
  Florian: HTML requires a <title> so we have to have one, but can
           say put anything in it.
  Florian: With regards to author/reviewer, leave that to source
           control.
  Florian: With regards to flags, I think we can get rid of most of
           them.
  Florian: Make them a niche occurrence.
  Florian: Spending something like 10-15 min going through the list
           might be useful,
  Florian: but should do that.
  Florian: I think we do that for title, keep assert meta, get rid
           of author meta etc. simplify flags, simplify reviewer
           process.
  Florian: If we just do these bits then we'll have done a lot.
  Florian: Then we can discuss why not.
  Florian: But not to do more than that
  Florian: yet.

  <tantek> I don't think it's useful to brainstorm this realtime here.
  <tantek> I'd rather read a proposal, e.g. a delta on what
           gsnedders has already put forth.
  <gsnedders> tantek: as would I, but there's almost no replies on
              the mailing list to much of what I say :(
  <tantek> gsnedders, yes, I understand why you brought it to the
           f2f agenda, that part makes sense
  <tantek> my point is that if someone here wants to take the time
           to make counter proposals beyond "here's a simple fix"
           (e.g. see my suggestions above ;) ) then they can be
           actioned to write up a longer proposal

  zcorpan: In WPT, you can put link to the spec using <link> element
  zcorpan: But can also infer from directory structure
  zcorpan: by spec/id.
  fantasai: I'm ok with this, as long as that information is
            available and people writing tests for cross-section or
            cross-spec interaction are able to add <link>s.
  zcorpan: OK with requiring assert for reftests, but less so for
           testharness.js
  [Florian and fantasai agree]

  [discussion of where to track reviewer information]

  plinss: I would argue against removing any existing metadata, but
          remove requirement to put it in.
  <tantek> +1
  gsnedders: Question remains, how do we flag that a test has been
             reviewed?
  plinss: If there is a reviewer flag, shepherd will mark it
          reviewed. But otherwise Shepherd will track it.
  plinss: Merging GitHub PR also counts as a reviewer.

  RESOLVED: Drop requirement for author or reviewer metadata
  RESOLVED: Move to primary <link> to spec+section being inferred
            from directory structure. Supplemental <link>s must be
            inline.

  <tantek> not hearing consensus
  plinss: Do we have nested sections?
  fantasai: No. Just spec/fragID.
  fantasai: We move sections around or change their nesting level.
            But we keep the fragID stable.
  plinss: So I propose we have shortname + leafesectionid and N
          levels in between.
  plinss: We ignore the levels in between, they can be named anything.
  fantasai: I don't think there's a need for intermediary directories...

  RESOLVED: spec-shortname/N-levels-of-ignored-subdirectory-
            names/frag-id-of-section

  RESOLVED: for 2.1 use css2/filename/frag-id-of-section
  <dbaron> ?: or for 2.1 we can require help links
  (remove previous RESOLVED)
  plinss: If spec doesn't match this format (e.g. 2.1 which has
          chapters) then have to use <link>

  RESOLVED: Remove any title requirement, other than having one
            (implied by validity of HTML requirement)

  tantek: Want to say, don't keep content in HTML comments.
  <tantek> can we get a resolution on not putting content in HTML
           comments?
  * fantasai didn't understand your comment, tantek

  RESOLVED: testharness.js tests don't need a meta assert (but
            reftests still do)

  <tantek> PROPOSED: Drop any requirements or even suggestion to put
           test meta info into HTML comments
  <tantek> ^^^ yes this is about reviews

  gsnedders: Basic agreement on the flags to keep/drop on ML.
  ...
  gsnedders: For WPT, if there's a public review, you can use that
             to upstream it to WPT repo.
  gsnedders: I think that only affects Edge now :)

  Florian: I'm in favor of that, one thing that we're losing if we
           move away from Shepherd way of doing things.
  Florian: If you are using Shepherd to review, you have access to a
           view of tests,
  Florian: You don't have that view in GitHub,
  Florian: We're assuming people will be diligent and look at the
           test on their own machine.
  ....
  fantasai: I think the biggest thing is being able to understand
            the test when reviewing it.
  fantasai: For me at least, I understand better when I can see the
            output and try to connect that to the code I'm looking at.
  fantasai: So it's much harder for me to review tests from a GH PR
            than to pull down the repo and look at the test locally.

  gsnedders: For WPT, PRs by some people ...
  zcorpan: I'm on the whitelist, so if I make PR, my PR gets
           mirrored on w3ctest.org
  zcorpan: In a subdirectory, where I can run it.
  zcorpan: Right now there's no automatic link in the PR itself, but
           we could add that.
  zcorpan: So could add a link directly.
  zcorpan: I agree it's useful to be able to easily run the tests
           without having to checkout.
  Florian: So you can also whitelist PRs from other people.
  zcorpan: The whitelist is there to avoid security problem
  astearns: So it wouldn't be a problem to take anyone that's
            interested in reviewing tests on the whitelist.
  Florian: I think having a system like that is valuable, not sure
           about blocking on it.
  Florian: gtalbot feels pretty strongly against a system which
           doesn't have that (ability to easily run the tests).
  gsnedders: I think that's fine, practically already have it for
             WPT, should make it explicit.
  zcorpan: Should make it easier to get there, from the PR,
  zcorpan: e.g. have a bot add a link.

  Florian: Are we resolving to move to GitHub, review then merge,
           and also to merge the system?
  Florian: Or is the system a dependency on moving to GitHub?
  gsnedders: Should be easy to set up as long as don't need to build.
  fantasai: Shouldn't need to build except in [weird very rare cases].
  astearns: So seem to want to move to GitHub.

  plinss: Suggestion to move all of our tests to WPT repo.
  gsnedders: That's a long-term goal shared by browser vendors
             (except Microsoft hasn't said anything).
  Florian: Short term or long term goal?
  plinss: Long term goal since beginning of WPT.
  plinss: Block has been our dependency on build system.
  plinss: If we eliminate that, then no reason not to move to other
          repo.
  plinss: I'm happy doing that. Takes Shepherd out of the feature. I
          can maintain the historical data, but won't run against
          WPT for a long time if ever.
  plinss: Would need to keep build system and parts that help us
          generate implementation reports.

  [Meeting closed.]
  [discussion deferred to later]

Received on Tuesday, 24 May 2016 23:36:39 UTC