Re: 'initial' | 'inherit' inconsistency

At 8:27 AM -0700 10/29/10, Brad Kemper wrote:

>>    Actually it would be to add " | initial | inherit", but I 
>>understand your objection.  I disagree that doing as you suggest is 
>>a good idea, though.  It's all too easy to say, as a reader 
>>(whether you're a page author or an implementor), "Hmmm, what's the 
>>syntax of 'animation-timing-function' again?  Let me Google.  Okay, 
>>here it is."  And there's no indication of 'initial' or 'inherit' 
>>as possible values.  Even if you heard one time that those values 
>>are supposed to be accepted by all properties and remember that 
>>fact, in the effort to understand the actual syntax of the property 
>>it's easy to let the "universal" keywords slip your mind.
>
>  It does seem to me that we should at least add "initial" to the 
>blanket statement, like this:
>
># All properties defined in this specification also accept the 
>'inherit' and 'initial' keywords (individually) as their value, but 
>for readability it has not been listed explicitly.

    A couple (maybe as many as a few) modules do say that.  Others say 
pretty much that except only about 'inherit', making no mention of 
'initial'.  Others don't say anything at all about either.

>Beyond that, I'm not so sure having universal values slip the mind 
>is really that great a concern. How many times does a person need to 
>be reminded before they just accept that they are truly universal 
>unless noted otherwise?

    I think the best answer I could give is a statement from an 
implementor that the lack of explicitness lead to problems in a 
development cycle.  Which we've seen here already.
    But to further respond to your question, how many times will a 
person be reminded?  I certainly wasn't reminded as I combed through 
individual property definitions.  If anything, by their very absence, 
the message was reinforced that these values do not apply to all 
properties.  And I already knew about those keywords and their 
asserted universality.  How will someone who has not heard of them be 
reminded?  Again, very, very few people read an entire module from 
front to back.  They look up the properties.

>The statement at the top seems enough, since search engines don't 
>usually link to anchors within the page. Maybe the heading could be 
>"Values and Universal Values" so that you are reminded in the table 
>of contents at the very top, but that sounds a little weird.

    If we're going to go with blanket statements, which I still very 
much oppose,then they absolutely need to be in a consistent place. 
As things stand now, some of the modules with blanket statements put 
it in the Introduction, but others put it elsewhere.  Some put it at 
the beginning of the "Properties" section (which some modules don't 
even have) and others put it in the "Properties Index" section 
(ditto).
    Still, I'm of the opinion that making the expression of the 
blanket statement fully consistent isn't really going to address the 
problem.  Sure, search engines don't point straight to properties 
(yet), but that doesn't really matter.  Here, let's take an exercise 
I just tried:

    0. Googled "css border-radius", as though I'd just heard about 
this awesome new CSS property and wanted to know more.
    1. Checked out the first result (a "plug in numbers and get CSS 
back" tool).  Probably most people would stop here, having gotten a 
good feel for how the property works with pixels, but I assumed the 
role of someone who wanted to get the full story on what this 
property can do, and continued on to the next four Google results.
    2. On http://www.css3.info/preview/rounded-border/ there is no 
mention of 'inherit' or 'initial'.  The syntax listed is 
"border-*-*-radius: [ <length> | <%> ] [ <length> | <%> ]? " -- in 
other words, what's given in the module's property definition.
    3. On http://www.the-art-of-web.com/css/border-radius/ there's no 
mention of 'inherit' or 'initial'.  There's also no formal value 
syntax given.
    4. On http://www.w3.org/TR/2010/WD-css3-background-20100612/ (also 
http://www.w3.org/TR/css3-background/), there is the blanket 
statement that:

        All properties defined in this specification also accept the
        inherit keyword as their value, but for readability it has
        not been listed explicitly.

      This is found in section 2, "Values", which comes after the 
table of contents.  (And let's just assume that the text also 
mentioned 'initial' instead of omitting it AND linking to the CSS2.1 
definition of 'inherit' from a June 2010 document.)
      Since I was looking for 'border-radius', I scrolled down until I 
found the TOC, looked for the word 'border-radius', found it, clicked 
the link, and went straight to the property definition.  I thus 
skipped past the blanket statement; and what's more, I did not see 
the TOC entry that linked to the section that contains the blanket 
statement.  And had I been working in my usual flow instead of 
pretending to be a "regular reader", I'd have hit cmd-F as soon as 
the module loaded and searched for 'border-radius'.  First hit: TOC 
link.  Click and I'm at the property definition, where there's no 
mention of 'inherit' or 'initial'.
    5. On https://developer.mozilla.org/en/css/-moz-border-radius 
there's no mention of 'inherit' or 'initial'.


    And that's all with a very, very popular property.  So: how much 
confidence should I have that readers will be reminded of these 
universal keywords?  How much less confidence should I have that 
they'll even know about them in the first place?

-- 
Eric A. Meyer (eric@meyerweb.com)     http://meyerweb.com/

Received on Friday, 29 October 2010 16:27:08 UTC