Standards

NAVIGATION
CATEGORIES
REFERRENCE
LINKS
  • Versioning of CSS

    8 answers - 1473 bytes - related search similar search Add To My Delicious Add To My Stumble Upon Add To My Google Mark Add To My Facebook Add To My Digg Add To My Reddit

    Dear CSS WG,
    In the Abstract, I can read
    [[[
    CSS 2.1 is derived from and is intended to replace CSS2. Some parts
    of CSS2 are unchanged in CSS 2.1, some parts have been altered, and
    some parts removed. The removed portions may be used in a future CSS3
    specification. Implementations may refer to CSS2 for the definitions
    of features that have been removed, but for other features CSS 2.1 is
    the normative reference.
    ]]] - #abstract
    There's no way in CSS to have a versioning information.
    The Conformance model of CSS was correct until a previous version of
    CSS was fully nested in the new version. So it was sure that all
    features of the previous version were included in the new version.
    The CSS WG intends to replace CSS 2.0 by CSS 2.1 and then change
    - the properties acceptable in this generation of style sheets
    - the behavior of some of these properties
    The CSS WG doesn't specify error handling, Cf
    #q3
    It means for style sheets authors, that when CSS 2.1 is out, their
    style sheet becomes not correct with regards to the new version of
    the 2nd generation of CSS.
    It means that a user agent is unable to know which behavior is
    expected for the style sheet.
    It means that the expected behavior might change if implementations
    choose to implement CSS 2.1 instead of CSS 2.0
    This is a formal objection to CSS 2.1 without versioning information.
  • No.1 | | 5036 bytes | |

    Thursday 07 July 2005 22:48, Karl Dubost wrote:
    Dear CSS WG,

    In the Abstract, I can read

    [[[
    CSS 2.1 is derived from and is intended to replace CSS2. Some parts
    of CSS2 are unchanged in CSS 2.1, some parts have been altered, and
    some parts removed. The removed portions may be used in a future CSS3
    specification. Implementations may refer to CSS2 for the definitions
    of features that have been removed, but for other features CSS 2.1 is
    the normative reference.
    ]]] - #abstract

    There's no way in CSS to have a versioning information.

    The Conformance model of CSS was correct until a previous version of
    CSS was fully nested in the new version. So it was sure that all
    features of the previous version were included in the new version.

    The CSS WG intends to replace CSS 2.0 by CSS 2.1 and then change

    - the properties acceptable in this generation of style sheets
    - the behavior of some of these properties

    The CSS WG doesn't specify error handling, Cf
    #q3

    It means for style sheets authors, that when CSS 2.1 is out, their
    style sheet becomes not correct with regards to the new version of
    the 2nd generation of CSS.
    It means that a user agent is unable to know which behavior is
    expected for the style sheet.
    It means that the expected behavior might change if implementations
    choose to implement CSS 2.1 instead of CSS 2.0
    --
    This is a formal objection to CSS 2.1 without versioning information.

    I think the versioning question has been beaten to death. Versions in
    document formats are undesirable in general. In particular, if there is
    a need for a new style sheet language, we will make one, but it won't
    be called "CSS version 2." That would be just confusing. It will be
    called KASWI or HAPA or TUBIU or something else that can't be confused
    with "CSS."

    You (Karl) can read the minutes of the last CSS face-to-face meeting[1],
    where we tried to lists all the reasons why people asked for versioning
    information and found that they fall into two categories:

    1) To be sure that the style sheet works on a particular browser.

    2) To be sure that the style sheet conforms to a some policy, e.g.,
    company policy or school assignment.

    In case 1, what you want is the version of the browser. What a browser
    supports has little to do with what the spec says, especially if the
    spec is a complex one. the browser makers themselves are not
    aware of all the things a browser does not support. Some bugs may not
    be discovered immediately. And for marketing reasons, they may not even
    want to tell you the bugs, even if they know them. That's why proposals
    such as "!required" or @feature won't work in practice.

    In case 2, you are talking about how to tell a validator what profile to
    test against. interesting idea is to express the policy (usually
    called "profile") in a machine-readable way: sort of like a DTD, but
    more detailed. That's too much work for now, but the W3C validator
    knows a number of predefined profiles. Hopefully it will be updated
    this summer to conform to the latest specs for those profiles.

    In neither case do you need the name of the profile inside the file
    itself. It will be ignored anyway. The browser will handle what it can.
    It doesn't even know what it can't handle. The validator's task is to
    check everything in the file and to trust nothing; it will validate
    against whatever profile you give it out of band.

    CSS is too big to develop in one go. Also, to get it accepted 10 years
    ago in the midst of the browser wars, it had to be very simple. That's
    why we have levels. But levels are just conceptual distinctions, meant
    for us, the developers. You can see them as profiles, if you wish, just
    like the mobile profile or the print profile, but in reality they
    aren't even that.

    The fact that some features were previously thought to be in level 2 and
    are now reclassified as level 3 reflects their complexity, not their
    validity.

    If you think it is useful to put the level of CSS inside the file,
    nothing stops you: /* This file is meant to use nothing outside of CSS
    level 2 */

    We just haven't found any kind of software yet that needs such
    information.

    And we don't want redundant information to be required. The smallest
    valid CSS file is an empty file. The smallest non-trivial one is only
    one line.

    People have asked for all kinds of other metadata at the top of the file
    as well: author, copyright, date, version (of the file itself), editing
    history, language (of the comments), etc. If there is a need we can
    recommend some convention for it, for example XMP[2] or JavaDoc, but
    it'll be an orthogonal spec. No need to complicate the CSS spec with
    it.

    [1]
    #item17
    [2]

    Bert
  • No.2 | | 2001 bytes | |

    I think the versioning question has been beaten to death. Versions in
    document formats are undesirable in general. In particular, if there is
    a need for a new style sheet language, we will make one, but it won't
    be called "CSS version 2." That would be just confusing. It will be
    called KASWI or HAPA or TUBIU or something else that can't be confused
    with "CSS."

    You (Karl) can read the minutes of the last CSS face-to-face meeting[1],
    where we tried to lists all the reasons why people asked for versioning
    information and found that they fall into two categories:

    1) To be sure that the style sheet works on a particular browser.

    2) To be sure that the style sheet conforms to a some policy, e.g.,
    company policy or school assignment.

    3) Allow for deprecation or the obseleting of grammar elements,
    properties or values.

    I actually agree that one and two aren't good arguments for
    versioning. However three is something that I've raised on this list,
    but haven't felt was sufficiently delt with.

    To not allow deprecation or for the obseleting of certain elements
    (normal English usage) in the language feels to me that it is being
    declared that every structure in CSS is optimal. Even if it could be
    garunteed that everything that has been moved to REC status is
    optimal, one cannot ensure that it will always be so. Some decisions
    will be bad decisions. They will get to the REC stage; they will be
    implemented and in some cases it will be bad. I need only point to
    <i>, <band <fontin HTML to present cases where the ability to
    obselete elements (HTML usage) and attributes has been invaluable.

    There are already elements in CSS that I'd like to see go. They are in
    dispute and have been argued. And while my call for deprecation for
    specific elements hasn't succeeded here, there may be others where it
    should (at least in the future).
  • No.3 | | 2936 bytes | |

    Adrian wrote:

    >There are already elements in CSS that I'd like to see go. They are in
    >dispute and have been argued. And while my call for deprecation for
    >specific elements hasn't succeeded here, there may be others where it
    >should (at least in the future).


    First of all, CSS can deal with such problems as they arise, why create
    such facilities now while they are not necessary? An @version "6.0" can
    be introduced anytime, and all versions without such a version can be
    considered "5 or lower".

    Secondly, as Bert Bos said earlier in that message, changing one of the
    fundamental principles of CSS, which would warrant such versioning, will
    make it another language. So for changes on such a broad scale, s
    just not call it CSS anymore. For example, your proposal, it was another
    language too: something like XFrames.

    changes can usually be dealt with by e.g. setting different modes
    (think: proposed box-model property), turning properties into shorthands
    (numerous occasions of this in CSS3), and finally, exactly *because* CSS
    has such a process of publishing working drafts and asking for input
    (which you so critisised) from both the public as the working group
    members with various industry experts from various companies, the CSS
    specifications are considered carefully and I think it is indeed
    possible to state that yes, every structure in CSS is optimal, and those
    which are not are not set in stone just because there is no versioning.

    In a proprietary s process, as you vouched so much for,
    versioning might be necessary (I sure know it is necessary for my
    s product, we improve many things with every new version!), but
    for a language that has been developed in a standardizing process with
    such broad input, the need for that is much much less, and given some of
    the unique properties of CSS (cascading, strict error recovery rules),
    can be avoided at all.

    You might think that different modes means that certain features can be
    deprecated, but the thing is: they have to be supported anyway! Existing
    CSS on the web t disappear for a long long time! Adding versioning
    will only mean that implementors have an additional complexity to deal
    with, disabling certain features/changing their behavior for different
    versions. As mentioned before that is horrible to create good tests for
    and to maintain properly. It will also complicate the story for people
    who want to incrementally upgrade their CSS with new features.

    So, CSS is *by design* quite back- and forward-compatible, and there are
    plenty solutions when a problem arises (I mentioned two above, and many
    more creative ones can undoubtedly be devised). So if there is currently
    *no need* for versioning. Which brings us back to my first paragraph.

    ~Grauw
  • No.4 | | 7880 bytes | |

    Sat, 2 Jul 2005, Adrian wrote:

    Due to the excessive length of this, I'm going to cut it down a bit
    and deal with major issues.

    Ditto.

    JS versioning has been more explicit but again has been an annoyance
    more than anything, requiring implementations to have multiple code
    paths and making it harder to debug implementations.

    HTML 4.0 has a lot of elements and attributes deprecated, eventually
    removed entirely from the spec in XHTML 1.0 Strict.

    Actually they were removed from HTML 4.0 strict. But that's irrelevant. It
    doesn't make user agents not support them -- you can still use all the
    deprecated features and they'll work regardless of your DCTYPE.

    Under the CSS model, the addition of <B>, <I>, <U>, <FNT>, etc could
    never be removed. It would still be in HTML 5.0, 6.0 and so on.

    Not at all. You simply remove them from the new version of the spec and
    you're done. For instance, the way that 'display: marker' has been removed
    from CSS. It existed in CSS2, and no longer exists (it is permanently
    removed from CSS, not just moved to CSS3 like 'display: compact').

    What is the mechanism to remove bad design decisions from the language
    in CSS?

    We remove them. Done. Where's the problem?

    So you kind of maintain them like they're maintained now, but you
    concentrate on moving forward.

    And where would the extra resources come from? Browser vendors are
    completely swamped with bug fixing _today_, in the one-version world.
    There is *no way* that multiple versions as you describe could
    possibly be implemented -- we just do not have the resources for it.

    What extra needed resources? I'm confounded by the scenario you've put
    together. Are we saying that major changes will have to be maintained
    for CSS 1.0 renderers? No. you finish getting it done, you package
    up the renderer as a plugin and ship it with your product so that when a
    resource specifies 1.0, it uses the 1.0 renderer.

    What about bugs in the 1.0 renderer?

    It may be "easier" but it isn't "easy".

    Did I say easy?

    If you didn't mean "easy" then I fail to see your point. We don't have
    the resources to create the test suites _today_, in the one-version
    world, and you are suggesting a world needing more test suites.

    Is not easier a good thing even if it's not easy? I don't understand how
    you can say, if your suggestion only improves my life a little, it's not
    worth it. It must make my life easy. Easier isn't a good thing?

    Your suggestion does not make it easier. It makes it harder. We'd have to
    created more test suites. (Your "easier" was relative to testing
    methodologies, not relative to how versioning would help.)

    Use whatever terminology you want. If I were to ask someone what version
    HTML 3.2 was, I'd bet 99 out of a 100 times they'd say 3.2.

    Just like if you ask people what version CSS 2.1 was, they'd say 2.1

    CSS1 will not be updated, no. Implementors only refer to CSS2 at this
    point, so there is no need to update CSS1 (which is a subset of CSS2).

    Why not? What if I bring up an issues with CSS 1? What would I be told?
    That the current version is 2 or that's it's fixed in 2?

    Yes.

    Incidentally, both the layout and the structure can change
    dynamically. The structure can change through DM calls, the layout
    through those and even simpler things like:

    td:hover { display: table-row; }

    How about this? Prevent reassignment of display in in pseudo-element or
    pseudoclass. Doesn't the ability cause problems anyway with things like
    ::first-line { display: none }?

    What properties apply to an element or pseudo-element depends on things
    like the 'display' property and the pseudo-element itself. So no, you
    can't prevent assignment of 'display' in pseudo-class cases.

    As I see it, :column() only makes sense on display: table-* so it has to
    cover the presentational case and not the semantic case. the
    display: change is removed, the threat seems to be gone and now it's
    possible to check to see what column you're in since you know the
    display classes of all your parents before hand.

    That simply isn't how CSS works at the moment, and as I've described
    before, the change to a two-pass cascade is not a change the working group
    feels comfortable with requiring (mostly for perf and complexity reasons).

    Versioning doesn't break backwards compatability. It does break forward
    compatability which I say is a good thing since forward compatability
    was a pretty silly concept.

    Forward compatibility is one of the main reasons for the success of the
    Web. Documents and stylesheets written for the new browsers still work in
    the old ones (albeit with reduced functionality). This is the main thing
    that has allowed the deployment of new technologies in a world where
    browser upgrades take years to propagate across the market.

    Has anyone thought of maybe finding a better process.

    Certainly one has thought about it. has not found any good
    solutions.

    If you have any ideas, I'm sure we'd love to hear them.

    Sure. Where can I get detailed information on the processes currently in
    use and can I have time to do interviews to see how the individuals
    using the current processes actually use them.

    I guess you'd have to pay $50,000 to join the W3C, then join the CSSWG
    and come to our meetings.

    Actually I'm of the mind that the specs have to move forward even at
    the cost of the current ones.

    IMH new specs are irrelevant if old specs are not well implemented.

    a spec is released, is there a reason it doesn't move into the
    errata portion of maintenance? Shouldn't corrective work be done on the
    new version so that the version being commented on can be stable?

    CSS2 was released (in 1998) and has been in errata mode ever since. When
    the errata document reached epic sizes, we merged it into the CSS2
    document (it was getting hard to remember what was errataed). This caused
    a large number of new errata to be raised, and we've been dealing with
    those since.

    What you seem to not realise is that "stable" does not mean "no work
    required". If anything, the work of maintaining a spec is more than the
    work of writing it in the first place.

    What about non-working groups? I'm free to develop my own XML
    grammar, but I'm not free to develop my own styling properties.

    Yes, you are, so long as you use a vendor prefix, e.g.
    -orion-layout: rect(0,0,100%,100%);

    or whatever. Mozilla, , Apple, Microsoft, YesLogic, and MA
    have all done this already. It is even semi-legitimised by the spec.

    But then the only way to remove the -orion- part is to get it approved
    by the W3C.

    Yes. That's a feature, not a bug. We want to promote the use of
    interoperable, standardised properties.

    Bert wrote:
    You (Karl) can read the minutes of the last CSS face-to-face
    meeting[1], where we tried to lists all the reasons why people asked
    for versioning information and found that they fall into two
    categories:

    1) To be sure that the style sheet works on a particular browser.

    2) To be sure that the style sheet conforms to a some policy, e.g.,
    company policy or school assignment.

    3) Allow for deprecation or the obseleting of grammar elements,
    properties or values.

    How would versioning do this?
  • No.5 | | 9157 bytes | |

    HTML 4.0 has a lot of elements and attributes deprecated, eventually
    removed entirely from the spec in XHTML 1.0 Strict.

    Actually they were removed from HTML 4.0 strict. But that's irrelevant. It
    doesn't make user agents not support them -- you can still use all the
    deprecated features and they'll work regardless of your DCTYPE.

    Deprecated yes, obseleted no. At least it's my understanding you're
    not supposed to be able to use them when you specify a DCTYPE that
    doesn't allow them. At a mimimum it's non-conforming right?

    Under the CSS model, the addition of <B>, <I>, <U>, <FNT>, etc could
    never be removed. It would still be in HTML 5.0, 6.0 and so on.

    Not at all. You simply remove them from the new version of the spec and
    you're done. For instance, the way that 'display: marker' has been removed
    from CSS. It existed in CSS2, and no longer exists (it is permanently
    removed from CSS, not just moved to CSS3 like 'display: compact').

    This response facinates me. Display: marker was never really
    implemented so removing it wasn't that big a deal, but I'm referring
    to things actually in browsers and in use in web pages. You say you
    just remove them, but user agents cannot stop using them can they?
    They must implement all properties that have had some level of use.
    So, regardless, the set of properties that need to be supported grows,
    does it not?

    My understanding of this is that a browser must have one engine that
    supports all properties that have ever been used significanty. That or
    attempt to calculate what historical point in the spec the user was
    targeting (defacto versioning, but harder).

    What extra needed resources? I'm confounded by the scenario you've put
    together. Are we saying that major changes will have to be maintained
    for CSS 1.0 renderers? No. you finish getting it done, you package
    up the renderer as a plugin and ship it with your product so that when a
    resource specifies 1.0, it uses the 1.0 renderer.

    What about bugs in the 1.0 renderer?

    First it depends on what market share you have and how long it's been
    since release of the renderer.

    Given that web developers tend to work with what's out there more than
    what the specs say, many products will be produced and many pages will
    have been written with certain buggy behavior in mind and there may be
    merrit in not fixing bugs or fixing bugs in such a way that pages that
    relied on buggy behavior still work.

    Your suggestion does not make it easier. It makes it harder. We'd have to
    created more test suites. (Your "easier" was relative to testing
    methodologies, not relative to how versioning would help.)

    I'm confounded by the mechanism the W3C has put together for browsers
    to test against their specs. The necessity of such a mechanism should
    have long been a flag that the design of CSS (or HTML) wasn't
    sufficiently componetized. In the world of software validation, we
    clamor for systems that garuntee output for a given set of inputs by
    testing for edge cases.

    CSS, however, doesn't work in that way. Every property has the
    potential it seems to manipulate the output not only in its existence,
    but also in its relationship to other properties. This to me has
    always been the core flaw of CSS.

    Rather than one set of tests per property (the set consisting of the
    edge cases), the tests must be written as if all the properties were
    inputs to one big function that must be tested. Now we have a
    permutation of test cases. We must test every property value and how
    it affects every other property value.

    While interconnectedness facinates me in history, here it is just a bother.

    Use whatever terminology you want. If I were to ask someone what version
    HTML 3.2 was, I'd bet 99 out of a 100 times they'd say 3.2.

    Just like if you ask people what version CSS 2.1 was, they'd say 2.1

    So at a minimum if there is no versioning, giving it numbers was
    probably a bad idea given people's proclivity to ascribe numbers with
    versions.

    That simply isn't how CSS works at the moment, and as I've described
    before, the change to a two-pass cascade is not a change the working group
    feels comfortable with requiring (mostly for perf and complexity reasons)

    I can appreciate this statement as I would imagine it would be a major
    change for the purpose of adding color-coding to columns. That doesn't
    seem a big enough reason to do so. I'm not above understanding that
    radical solution must only be attempted to deal with complex problems
    that affect everyone or prevent progress on a larger scale.

    Versioning doesn't break backwards compatability. It does break forward
    compatability which I say is a good thing since forward compatability
    was a pretty silly concept.

    Forward compatibility is one of the main reasons for the success of the
    Web. Documents and stylesheets written for the new browsers still work in
    the old ones (albeit with reduced functionality). This is the main thing
    that has allowed the deployment of new technologies in a world where
    browser upgrades take years to propagate across the market.

    After thinking about this some, I have to agree that forward
    compatibility is key and is one of the major factors for the success
    of the web.

    This hasn't really happened though. Many features being developed now
    and almost all of the non-trivial layout features are not forwards
    compatible. They could have been, but they really aren't.

    This is exacerbated by dual mode properties. If margin, border and
    padding weren't using in layout calculations then setting browsers
    that supported them wouldn't break pages that didn't support
    non-static layout. It is this dual role problem that I see and I have
    brought up in at least 3 or 4 messages recently and I feel it hasn't
    been addressed. If I specify display: absolute; and use a margin to
    move it to the proper location then there's a decent change that when
    a browser comes across it and doesn't support position: absolute I'm
    going to end up with a broken page, but no other mechanism has been
    suggested to fully get around the need for margin in layout.

    I guess you'd have to pay $50,000 to join the W3C, then join the CSSWG
    and come to our meetings.

    So what you're saying is that I have to pay $50,000 to help you with
    the process you said you'ld love to hear ideas about. Yeah, not gonna
    happen.

    CSS2 was released (in 1998) and has been in errata mode ever since. When
    the errata document reached epic sizes, we merged it into the CSS2
    document (it was getting hard to remember what was errataed). This caused
    a large number of new errata to be raised, and we've been dealing with
    those since.

    What you seem to not realise is that "stable" does not mean "no work
    required". If anything, the work of maintaining a spec is more than the
    work of writing it in the first place.

    No, I understand pretty well that "stable" means "work". What I
    disagree with is the idea that the priority is always refinement over
    invention and not some happy medium.

    I don't recommend new specs because there's some product to push. I
    recommend it because advances in understanding come more often from
    invention than refinement. Refinement is good for making something
    very good at what it does, but it very rarely opens up new
    possibilities.

    Refinement can also be very bad reducing your mental model to the
    status quo and preventing you from getting away from it.

    Refinement makes something practical (e.g. making polio vaccines cost
    0.03 USD) and invention allows entirely new opportunities (e.g. cures
    cancer).

    Both are necessary and I wouldn't want all progress to stop on CSS 2.1
    revision, but let's start thinking about new models from which to
    work.

    But then the only way to remove the -orion- part is to get it approved
    by the W3C.

    Yes. That's a feature, not a bug. We want to promote the use of
    interoperable, standardised properties.

    I'll be dealing with this in a separate e-mail as it deserves its own
    discussion.

    3) Allow for deprecation or the obseleting of grammar elements,
    properties or values.

    How would versioning do this?

    By creating safe havens for old content. Web authors could reference
    specific versions of a spec and know that even if later on those
    elements were removed, their code would still work. This is the
    primary functioning of versioning today. To produce concrete groupings
    that allow for advancement by decoupling old work from new work.
  • No.6 | | 726 bytes | |

    Adrian wrote:
    You say you just remove them, but user agents cannot stop using them can they?

    In light of you using HTML as an example of desirable versioning earlier in this
    thread, this is interesting. For example, HTML 4.x no longer has a <plaintext
    tag, but user agents cannot stop supporting it, because it's actually used
    So this is a problem whether or not you have a document level version indicator
    (the doctype in HTML).

    Not only that, but other HTML 2.0 tags have indeed been removed, and content
    that uses them (and the HTML 2.0 doctype) no longer works "right" in modern
    browsers. That's not what you want out of versioning, from what I gather.
    -Boris
  • No.7 | | 1799 bytes | |

    7/12/05, Boris Zbarsky <bzbarsky (AT) mit (DOT) eduwrote:
    Adrian wrote:
    You say you just remove them, but user agents cannot stop using them can they?

    In light of you using HTML as an example of desirable versioning earlier in this
    thread, this is interesting. For example, HTML 4.x no longer has a <plaintext>
    tag, but user agents cannot stop supporting it, because it's actually used
    So this is a problem whether or not you have a document level version indicator
    (the doctype in HTML).

    Not only that, but other HTML 2.0 tags have indeed been removed, and content
    that uses them (and the HTML 2.0 doctype) no longer works "right" in modern
    browsers. That's not what you want out of versioning, from what I gather

    No, it's not, but that's because HTML didn't enforce it's versioning.
    Even an element once removed could still be used or at least that's
    why I'm hearing. HTML has been the king of resilient, but
    unmaintainable. An HTML file is almost impossible to kill, but then
    again during that time period the UA's were impossible to maintain.

    What I'm looking for is versioning enforced. If you specify a 1.1 DTD,
    then don't allow elements that have been obseleted for 2 versions. But
    do allow someone who has specified a 2.0 DTD to use elements from a
    2.0 spec and have the browser still work.

    This means content never dies because it didn't update itself. This is
    akin to good url's don't change. But that doesn't mean that future
    versions of the spec or the renderer should have to maintain that 2.0
    spec. The 2.0 renderer should be automatically downloaded or a
    converter used the first time it's encountered.
  • No.8 | | 8914 bytes | |

    Tue, 12 Jul 2005, Adrian wrote:

    HTML 4.0 has a lot of elements and attributes deprecated, eventually
    removed entirely from the spec in XHTML 1.0 Strict.

    Actually they were removed from HTML 4.0 strict. But that's
    irrelevant. It doesn't make user agents not support them -- you can
    still use all the deprecated features and they'll work regardless of
    your DCTYPE.

    Deprecated yes, obseleted no. At least it's my understanding you're not
    supposed to be able to use them when you specify a DCTYPE that doesn't
    allow them. At a mimimum it's non-conforming right?

    You can use features that are obsolete -- heck you can use features that
    never made it into any spec at all, like <marqueeor <embed>, both of
    which are used on millions of pages world wide -- and they will work.

    Your document will be non-conforming, of course. But we're talking about
    implementation requirements, not document conformance requirements. My
    point is that versioning in HTML doesn't help implementors because they
    still have to implement obsolete features since documents depend on them.

    Under the CSS model, the addition of <B>, <I>, <U>, <FNT>, etc
    could never be removed. It would still be in HTML 5.0, 6.0 and so
    on.

    Not at all. You simply remove them from the new version of the spec
    and you're done. For instance, the way that 'display: marker' has been
    removed from CSS. It existed in CSS2, and no longer exists (it is
    permanently removed from CSS, not just moved to CSS3 like 'display:
    compact').

    This response facinates me. Display: marker was never really implemented
    so removing it wasn't that big a deal, but I'm referring to things
    actually in browsers and in use in web pages. You say you just remove
    them, but user agents cannot stop using them can they? They must
    implement all properties that have had some level of use. So,
    regardless, the set of properties that need to be supported grows, does
    it not?

    Yes. Just like with HTML (which you said was versioned). Just like with
    codecs, for that matter. A video player can't just stop supporting old
    video codecs, otherwise old video data will stop playing.

    My understanding of this is that a browser must have one engine that
    supports all properties that have ever been used significanty.

    Yes. And my point is that doing this is orders of magnitude easier than
    maintaining multiple engines that each support their own set of
    properties.

    What extra needed resources? I'm confounded by the scenario you've
    put together. Are we saying that major changes will have to be
    maintained for CSS 1.0 renderers? No. you finish getting it
    done, you package up the renderer as a plugin and ship it with your
    product so that when a resource specifies 1.0, it uses the 1.0
    renderer.

    What about bugs in the 1.0 renderer?

    First it depends on what market share you have and how long it's been
    since release of the renderer.

    to the extent that if you have a high market share and have not
    released a browser for a long time, you could decide to give up on being
    compliant to the previous version of the spec and just arrogantly assume
    that people will use you as the de facto standard instead of the spec.

    Believe me, as far as the other UA implementors are concerned, that is
    highly anti-social behaviour.

    Given that web developers tend to work with what's out there more than
    what the specs say, many products will be produced and many pages will
    have been written with certain buggy behavior in mind and there may be
    merrit in not fixing bugs or fixing bugs in such a way that pages that
    relied on buggy behavior still work.

    And then you result in quirks mode, which has no specification and which
    is therefore a nighmare to work with.

    It seems unlikely to me that you are advocating a world where quirks mode
    scenarios are the by-design endgoal, but it sure sounds like you are.

    Your suggestion does not make it easier. It makes it harder. We'd have
    to created more test suites. (Your "easier" was relative to testing
    methodologies, not relative to how versioning would help.)

    I'm confounded by the mechanism the W3C has put together for browsers to
    test against their specs. The necessity of such a mechanism should have
    long been a flag that the design of CSS (or HTML) wasn't sufficiently
    componetized. In the world of software validation, we clamor for systems
    that garuntee output for a given set of inputs by testing for edge
    cases.

    That works well for simple systems, but is completely impractical for
    real-world complex systems like the Web, operating systems, graphical
    renderers, interactive multimodal user interfaces, etc.

    I would be very interested in seeing a (formal) proposal for a system that
    could be tested as you describe while still providing medium to high
    quality typesetting on multiple platforms, media, devices, and user
    modalities, while still being very fast to render, while still allowing
    for user overrides, while still catering for highly interactive
    applications, and while still being simple enough to author that it could
    get the formidable level of uptake seen by HTML, JS, and CSS.

    This hasn't really happened though. Many features being developed now
    and almost all of the non-trivial layout features are not forwards
    compatible. They could have been, but they really aren't.

    If you believe this, please raise such issues when the relevant documents
    are in Last Call (or earlier), by concretely pointing to specific features
    that are not forward compatible. It is certainly the intent of the WG to
    specify new features in such a way that they are forward-compatible.

    I guess you'd have to pay $50,000 to join the W3C, then join the CSSWG
    and come to our meetings.

    So what you're saying is that I have to pay $50,000 to help you with the
    process you said you'd love to hear ideas about. Yeah, not gonna
    happen.

    Well you're the one who said you thought it was broken; I don't have a
    problem with it (And note that I didn't make up the W3C membership fees
    nor the confidentiality rules, so it's not my fault.)

    CSS2 was released (in 1998) and has been in errata mode ever since.
    When the errata document reached epic sizes, we merged it into the
    CSS2 document (it was getting hard to remember what was errataed).
    This caused a large number of new errata to be raised, and we've been
    dealing with those since.

    What you seem to not realise is that "stable" does not mean "no work
    required". If anything, the work of maintaining a spec is more than
    the work of writing it in the first place.

    No, I understand pretty well that "stable" means "work". What I disagree
    with is the idea that the priority is always refinement over invention
    and not some happy medium.

    It is a happy medium. The changes we are making to CSS (even the changes
    we discussed today at our teleconference, for instance) are changes I
    would consider important changes for ensuring interoperability. If they
    weren't, I would agree with you.

    3) Allow for deprecation or the obseleting of grammar elements,
    properties or values.

    How would versioning do this?

    By creating safe havens for old content. Web authors could reference
    specific versions of a spec and know that even if later on those
    elements were removed, their code would still work. This is the primary
    functioning of versioning today. To produce concrete groupings that
    allow for advancement by decoupling old work from new work.

    CSS achieves this without versioning. Implementations continue supporting
    old features even after they are obsoleted. For example, the CSS2 System
    Colours have been deprecated (in CSS3) and will probably be obsoleted
    altogether (in CSS4) yet implementations will always support them.

    HTML has the same thing. HTML has no feature-wise versioning (it only has
    interpretation-wise versioning, and even that isn't officially in the
    specs), yet it has deprecated then obsoleted some features (e.g. <font>),
    without authors having to worry about their old documents failing
    (implementations will continue to support <fontfor decades to come).

    This is all possible without having to ship multiple rendering engines,
    with all the bloat, testing cost, implementation cost, maintenance cost,
    and documentation cost that that would imply.

Re: Versioning of CSS


max 4000 letters.
Your nickname that display:
In order to stop the spam: 3 + 3 =
QUESTION ON "Standards"

EMSDN.COM