[webkit-dev] Implementation thoughts on HTML5 elements
Maciej Stachowiak
mjs at apple.com
Wed Aug 26 00:17:05 PDT 2009
On Aug 26, 2009, at 12:04 AM, Leo Meyerovich wrote:
> These are unnecessary features wrt accessiblity tools and search
> engines; data mining techniques can easily handle them already. More
> strongly, for legacy and advanced UI reasons, the data mining should
> happen anyways, further questioning their merit. That's been my
> experience in this area (from the analysis side). Features that
> provide actual functionality would seem more pressing.
Can you please clarify what features you have in mind? Most of the new
elements I mentioned do provide substantive functionality.
Regards,
Maciej
>
> - Leo
>
>
>
>
> Maciej Stachowiak wrote:
>>
>> On Aug 25, 2009, at 11:21 PM, Maciej Stachowiak wrote:
>>
>>> Hi everyone,
>>>
>>> Recently at Apple we've been considering our plans to implement
>>> new HTML elements from HTML5. I'd like to share our thoughts with
>>> the WebKit community and see if we are in sync before passing this
>>> on to the HTML Working Group. Does anyone have thoughts to add to
>>> the below:
>>>
>>> ----------
>>
>> I realized I forgot to cover <command> and <menu>.
>>
>> - <menu>
>> The list form of a menu seems straightforward enough, it is good
>> to have a list type specifically for popup menus. The toolbar form
>> does not seem fully baked. First, it seems weird to think of a
>> toolbar as a kind of menu. Second, the rendering is too inflexible
>> and underspecified for the real Web content authoring use cases for
>> toolbars. And finally, an important point of toolbars in many
>> applications is that they can embed custom controls in a flexible
>> layout that also includes some standard buttons, but <menu
>> type="toolbar"> does not seem flexible enough to handle this. The
>> context menu form does seem genuinely useful. But it also seems
>> like a lot of complexity for the somewhat marginal case of
>> overriding the context menu. It seems like about a dozen different
>> elements are allowed, all with different processing requirements.
>> This seems like overkill for the use case of a context menu. It
>> doesn't even make much semantic sense for a context menu to contain
>> a button. Overall, it doesn't seem like the cases of menu list,
>> toolbar and context menu really share enough behavior or
>> appropriate content model to make them use the same element.
>>
>> - <command>
>> It's unclear if this element is worth having without the use cases
>> for toolbars or menus, and it also has 0 implementations so far and
>> seems like it might not be fully baked.
>>
>>>
>>> - Sectioning elements: <section>, <article>, <aside>, <hgroup>,
>>> <header>, <footer>, <nav>
>>> These seem useful - they give a way to represent the semantics of
>>> many Web pages nicely, and could work well with accessibility
>>> features for navigating around the page, as well as other clever
>>> ways of processing Web content. They are also trivial to implement
>>> (I already did <nav>). We're fairly interested in doing the rest
>>> of these.
>>>
>>> - <dialog> element
>>> This essentially gives the same behavior as <dl> but with
>>> appropriate semantics for logs of conversations. It seems useful
>>> and easy to implement.
>>>
>>> - Elements requiring changes to <legend> parsing: <figure>,
>>> <details>
>>> These elements seem quite useful, but they will be unusable on
>>> the public Web until all browsers are updated to change how they
>>> parse <legend> and the new versions are widely adopted. Pretty
>>> much all current browsers do something idiosyncratic when parsing
>>> a <legend> element outside of a <fieldset>, which makes it
>>> impossible to make <figure> or <details> degrade gracefully via
>>> script or style. We are hesitant to implement elements that
>>> authors would feel they are unable to use, or to lead authors
>>> astray, so we are hesitant to implement the new elements until
>>> either the <legend> parsing issue is widely fixed or HTML5 uses
>>> some element other than <legend> for the caption on these
>>> elements. We will consider fixing our parsing of <legend> outside
>>> <fieldset> soon, though, so that we're not the blocker.
>>>
>>> - New media elements: <audio>, <video>
>>> We love these and have them implemented. We don't see any
>>> implementation issues in the current spec.
>>>
>>> - <canvas>
>>> We like this and we have it implemented. We don't see any
>>> implementation issues in the current spec.
>>>
>>> - Newly standard legacy elements: <keygen>, <embed>
>>> We had these for a long time before they were in HTML5. It seems
>>> like a good idea to cover them in the spec.
>>>
>>> - <mark>
>>> The basic idea for this element seems good, but the suggested UI
>>> for exposing it does not seem to entirely match the use cases, and
>>> may not be practical to deploy. Having tick marks in the scrollbar
>>> for every <mark>, and UI to cycle between them, seems too
>>> heavyweight for some of the suggested uses. We are interested in
>>> implementing the basics of <mark> soon, but probably not the
>>> requirements.
>>>
>>> - <time>
>>> It seems useful for use cases like Microformats to have a clean,
>>> unambiguous way to represent a specific time. It seems odd that
>>> there are ways to get Date objects to represent the date, time and
>>> time zone separately, but no way to get a Date representing the
>>> combination of date/time/timezone. Wouldn't the latter be a common
>>> use case, and doesn't the JavaScript Date object give sufficient
>>> APIs to unpack a Date into its components as needed?
>>> - New interactive controls: <meter>, <progress>
>>> These elements seem useful and a good idea. These controls are
>>> useful in native UI and often get hand-rolled by JavaScript
>>> libraries. We would like to expose a default native look, but with
>>> full author stylability for these. The only odd requirement is the
>>> use of inline text content in the elements to represent the state
>>> of the control. Specifying inline textContent may be a clever way
>>> to pass the initial state, but it seems very clunk as an interface
>>> for dynamically updating the state of the progress bar. Using the
>>> max and value IDL attributes of <progress> seems like it would be
>>> much easier for authors, and it seems like a problem that these
>>> only reflect the markup attributes and not the full state of the
>>> control (if the state is currently defined by text content).
>>> Likewise for the 6 attributes on <meter>. Assembling up to 6
>>> numbers into a textContent string, which then does not cause the
>>> convenient DOM attributes to update, seems very clinky.
>>>
>>> - Ruby elements: <ruby>, <rp>, <rt>
>>> / We think these are useful. Google engineers are actively
>>> working on the WebKit implementation and some initial patches have
>>> landed./
>>>
>>> - <datalist>
>>> Work on this is in progress. We think it is a good idea to offer
>>> a way to do true combo boxes, including ones with a dynamic source
>>> of filled-in values.
>>>
>>> - <output>
>>> This seems relatively simple to implement and worth implementing.
>>>
>>> - new <input> element types
>>> These seem generally useful, and we already have some implemented
>>> to various extents (search, range, email, url tel). The only
>>> concern is the sheer number of date and time controls. 6 of the 13
>>> new input types are for dates or times. Are there real use cases
>>> for all 6? Do all 6 exhaustively cover the types of time and date
>>> input you may want to do in forms?
>>>
>>>
>>>
>>> _______________________________________________
>>> webkit-dev mailing list
>>> webkit-dev at lists.webkit.org <mailto:webkit-dev at lists.webkit.org>
>>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev at lists.webkit.org
>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>>
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
More information about the webkit-dev
mailing list