- From: Scott Rowe <scottrowe@google.com>
- Date: Thu, 15 Nov 2012 09:12:07 -0800
- To: Mike Sierra <letmespellitoutforyou@gmail.com>
- Cc: "public-webplatform@w3.org" <public-webplatform@w3.org>, Alex Komoroske <komoroske@google.com>
- Message-ID: <CAHZLcPoP7sTnDT6F__kXC3wTvaQ1+b1_cq_eyafhnQKP5oD-nA@mail.gmail.com>
Thanks Mike! I'd like to add some clarification, if I may... On Thu, Nov 15, 2012 at 7:59 AM, Mike Sierra < letmespellitoutforyou@gmail.com> wrote: > Re "Action Item", Along with Julee, I plan to assemble a list of URLs > based on interface declarations in a generous sample of W3C specs, > with comments noting any items I run across that don't fit into the > structure discussed in the meeting. It appears throughout the > meeting, I was unclear about the purpose of <apilist>, which was > reflected in my notes for the action item. Let me clarify > terminology: > > /apis/apiName/apiInterface/(property|method|event) > Is this change in terminology necessary? We were working from this: apis/<apilist>/<apiObject>/<event|method|property> > > * The "apis" page would list available APIs by the spec-level > conceptual handler by which they're commonly referred. > Yes, under the terminology in the proposal, the apis page is just a category page that lists all of the sub pages. > > * Each "apiName" page lists available apiInterfaces. This page would > discuss how to use the API as a whole. > Yes, the <apilist> page describes the API by its common name, i.e. apis/webrtc > > * Each "apiInterface" would feature tables listing out... > Yes, the <apiObject> page provides an overview of the object and lists its events, methods, and properties. > > * ...properties, methods, and events. > Yes, these types describe the individual members of the API object. > > NOTE: open question whether to represent constants and exceptions on > separate pages? I tend to think they belong in tables on the > apiInterface page, partly because they're conceptually tied to the > interface as a whole & partly b/c I expect them to brief & easy to > scan at that level. > A certain amount of infrastructure needs to be built to support this. For now we can just include the constants and exceptions within the properties and methods to which they apply. > > Not sure if I missed this point earlier, but there are many cases > where the "apiName" would match one of the component "apiInterface" > items. Examples: File API defines File, FileList, FileReader, and > Blob interfaces; Geolocation API defines Geolocation, Position, > PositionOptions, PositionError, and Coordinates interfaces. I think > users would understand the distinction, but I want to make sure we're > aware of the issue. Was this the major concern about collisions? > The <apilist> namespace identifier is written in all lower case because it is only a namespace identifier. The <apiObject> is written in camel case because it is the proper name of the object. For example, apis/indexeddb/IndexedDB or apis/webrtc/MediaStream. > > I'd suggest a couple of template enhancements: > > * Specify when one API interface extends another. E.g., I set up a > page for CSSRegionStyleRule that inherits from CSSRule. Ideal if > one interface can slurp in the other's. > This is already in place. See apis/webrtc/objects/LocalMediaStream<http://docs.webplatform.org/wiki/apis/webrtc/objects/LocalMediaStream> . > > * Where appropriate, note the DOM node used to access each interface > object: document, navigator, window, video, audio, etc. Worth a try! If we can come up with something slicker than just a link in the description, I'm all for it. > > On this last point, perhaps remaining elements within dom/apis could > then link back? I understand this will be the place for the remaining set > of core DOM APIs. > I'm not sure what you mean here. > > --Mike Sierra > Thanks Mike! +Scott > > > > On Wed, Nov 14, 2012 at 6:12 PM, Scott Rowe <scottrowe@google.com> wrote: > > Thanks to everyone who particpated on the call today to discuss the > proposal > > and the apis architecture. Ahead of meeting notes, I'd like to review > some > > of the main points and revisit the issues that were not fully resolved at > > the end of the call. It's rather imperative that we be able to move > forward > > with the documenting the APIs, and I think we've resolved enough of the > > issues to be able to move forward without having to do too much revising > or > > reorganizing of our docs down the road. > > > > Could everyone please take a moment to read this and respond? Thanks! > > > > apis architecture > > > > We decided to remove the "intermediate" pages (objects, events, methods, > and > > properties) from the namespace to keep the URLs shorter and eliminate the > > need to fill these pages with queries or redirects. The new api namespace > > architecture is as follows: > > > > apis > > apis/<apilist> > > apis/<apilist>/<apiObject>/<foo-event> > > apis/<apilist>/<apiObject>/<bar-method> > > apis/<apilist>/<apiObject>/<baz-property> > > > > Note: further discussion about the <apilist> namespace identifier is > further > > on, but assumed here to be maintained. > > > > I will begin rewriting the proposal for this and reorganizing the webrtc > > docs. > > > > constants > > > > We discussed the possibility of providing for constants (enumerations) > that > > are shared across several methods within an object. I spoke with our own > > Dimitri Glazkov about this. Turns out that an API may provide for the > case > > where a property could use only part of the enumeration (values 1 and 2, > but > > not 3) while another property would use all values (1, 2, and 3) of a > given > > enumeration. Constants are defined for the object, so this scenario is > quite > > common. > > > > Now the challenge is how to represent the valid constants for a > particular > > property. We need a way to specify constants 1 and 2 (but not 3) for > > property A, and specify constants 1, 2, and 3 for property B. Probably > the > > best way is to follow the same approach we take with events, methods, and > > properties pages and the "Applies to" field. > > > > So, each constant would have its own page, i.e. > > apis/<apilist>/<apiObject>/<FOO-constant> and the properties page would > have > > a summary table listing each of the valid constants. The trick here > would be > > to provide each <FOO-constant> page with multiple "Applies to" fields so > > that these could be shared. > > > > This needs some thought and design expertise. For now, let's just move > > forward with constants listed per property. > > > > exceptions > > > > We need to describe the exceptions for a method. Same re-use scenario as > > with constants. So apis/<apilist>/<apiObject>/<Bar-exception> and the > > ability to "Applies to" to different methods. Note that often API methods > > use DOM exceptions, so this template needs to work for both dom and apis. > > Could get kind of hairy with multiple "Applies to" fields. > > > > Needs some thought and design expertise, too. For now, let's just move > > forward with exceptions listed per method. > > > > Move all apis under dom > > > > It was suggested that all of the api pages could be moved under the dom > > namespace. > > > > Early on we decided to keep the dom namespace separate from the apis > > namespace. The "non-dom" apis are more clearly defined on their own, and > > fitting them within the dom does not add any value. While it is true that > > most of the time an API is accessed within the context of a dom object, > i.e. > > navigator.getUserMedia() or window.indexedDB.open(), usually this > context > > is only necessary to create the initial object, i.e. a LocalMediaStream > > object or an IDBOpenDBRequest object. That much is adequately covered in > the > > documentation and needn't be spelled out in the URLs. And, as was pointed > > out in the call, our purpose is not to mimic the document object model in > > our URLs, but to provide for location and navigation. Furthermore, > nesting > > everything under a DOM object page makes the URL longer. > > > > API Listing pages > > > > It was suggested that we remove the API Listing pages from the apis > > namespace. I strongly urge us not to do so. > > > > The API listing pages describe the API by its common names - the names by > > which users search for information about the API. It provides for > > find-ability where an API has multiple "listing names" - as is the case > with > > the WebRTC API which is further sub-divided into the MediaStream, > > PeerConnection, and DataChannel APIs. These need to be included as > > sub-headings in the listing page to fully describe the API. > > > > The API listing pages provide an overview of how to use the API objects > > included in the specification. The best place to do this is within the > apis > > namespace, rather than a "concepts" or "guides" or other namespace. > > > > The API listing pages provide for disambiguation between like-named API > > objects. Consider two objects: > > > > The MediaStreamAudioSourceNode object from the Web Audio API > > The MediaStream object from the WebRTC API > > > > In fact, both of these are the same thing, as creating a > > MediaStreamAudioSourceNode is simply passing to that object an object of > > type MediaStream: > > > > MediaStreamAudioSourceNode createMediaStreamSource ( MediaStream > mediaStream > > ); > > > > If our URLs read, apis/MediaStreamAudioSourceNode and /apis/MediaStream > > without any context to differentiate them, users are likely to get > confused. > > > > Action Item: Proving out the apis architecture > > > > I'm concerned that there may have been a miscommunication about the > action > > item captured at the end of the meeting. This happened while the meeting > was > > adjourning, and may have been misconstrued. Here's the snippet from the > IRC > > channel: > > > > 9:57 AM <sierra_> TASK: someone sanity-check how actual APIs would work > > 9:59 AM <sierra_> in apis/<apilist>/objects/<apiObject>/properties , go > to > > apis/APIobject/properties > > 10:00 AM <sierra_> sorry, apis/APIobject > > > > What I heard was that the action item is to review the apis namespace to > see > > if there would be collisions between api objects without the intervening > > <apilist> object. First, it is unlikely that within our very limited apis > > namespace that this will happen (we currently have some 8 or 9 APIs, not > > counting DOM APIs); second, we can never fully prove the lack of > collisions > > because we don't have time to review the entire set of standard APIs - > and > > we certainly can't vet the ones that haven't been created yet. > > > > Perhaps someone could fill in here why this exercise is necessary and > what > > it hopes to prove? > > > > Would it not be more efficacious to simply proceed with maintaining the > > <apilist> namespace identifier - as in apis/<apilist>/<apiObject>/<etc.>? > > > > Thanks for helping out here! > > > > +Scott > > > > > > > > > > On Tue, Nov 13, 2012 at 12:23 PM, PhistucK <phistuck@gmail.com> wrote: > >> > >> I am planning on adding fields for constants within the API Object > >> template/form. It might take a few days, though. I hope to work on it on > >> Friday or Saturday. > >> > >> ☆PhistucK > >> > >> > >> > >> On Tue, Nov 13, 2012 at 9:06 PM, David Gash <dgash@google.com> wrote: > >>> > >>> Scott, > >>> For tomorrow's call, apart from the basic issue of the API content > >>> architecture, let's discuss the web audio list before I set off > creating > >>> ~150 pages. Also, I have a few questions about certain parts of the > >>> interface that you (or someone else) may be able to answer, below. The > >>> numbers refer to the W3C spec, and are linked to the specific sections > for > >>> easy reference. > >>> > >>> 4.3 AudioSourceNode > >>> Listed as an "abstract" interface, has no documented properties or > >>> methods. > >>> > >>> 4.11 MediaElementAudioSourceNode > >>> Created in an Audiocontext, has no documented properties or methods. > >>> > >>> 4.14.1 PannerNode Constants > >>> There's no API structure/path for constants. > >>> > >>> 4.18 ChannelSplitterNode and > >>> 4.19 ChannelMergerNode > >>> Also have no documented properties or methods. > >>> > >>> 4.24 WaveTable and > >>> 4.25 MediaStreamAudioSourceNode > >>> Also have no documented properties or methods. > >>> > >>> I'm not sure whether to create pages for the objects with no properties > >>> or methods, and whether to document the PannerNode constants as > properties > >>> or... something else. Any input appreciated. > >>> > >>> Dave > >>> > >>> > >>> > >>> On Mon, Nov 12, 2012 at 12:06 PM, Scott Rowe <scottrowe@google.com> > >>> wrote: > >>>> > >>>> Thanks Dave! Be sure to share any issues you encounter on this thread. > >>>> +Scott > >>>> > >>>> > >>>> > >>>> On Mon, Nov 12, 2012 at 11:16 AM, David Gash <dgash@google.com> > wrote: > >>>>> > >>>>> Scott / all, > >>>>> > >>>>> I'm starting to document the web audio API. Based on Scott's proposal > >>>>> doc and the W3C specs, the first few topics' URLs will be structured > thus: > >>>>> > >>>>> apis/webaudio > >>>>> > >>>>> apis/webaudio/objects/AudioContext/properties/destination > >>>>> apis/webaudio/objects/AudioContext/properties/sampleRate > >>>>> apis/webaudio/objects/AudioContext/properties/currentTime > >>>>> apis/webaudio/objects/AudioContext/properties/listener > >>>>> apis/webaudio/objects/AudioContext/properties/activeSourceCount > >>>>> apis/webaudio/objects/AudioContext/methods/createBuffer > >>>>> apis/webaudio/objects/AudioContext/methods/decodeAudioData > >>>>> apis/webaudio/objects/AudioContext/methods/createBufferSource > >>>>> apis/webaudio/objects/AudioContext/methods/. . . etc. > >>>>> > >>>>> apis/webaudio/objects/AudioNode/properties/context > >>>>> apis/webaudio/objects/AudioNode/properties/numberOfInputs > >>>>> apis/webaudio/objects/AudioNode/properties/numberOfOutputs > >>>>> apis/webaudio/objects/AudioNode/methods/connect > >>>>> apis/webaudio/objects/AudioNode/methods/disconnect > >>>>> > >>>>> apis/webaudio/objects/. . . etc. > >>>>> > >>>>> There are a lot more objects, properties, and methods in this API, of > >>>>> course, but Scott has reviewed this plan and, barring any > objections, that's > >>>>> the path structure I'll be following. > >>>>> > >>>>> I plan to outline the entire set before creating any pages, then > create > >>>>> all the stubs, then go back and fill in. > >>>>> > >>>>> Cheers, > >>>>> Dave > >>>>> > >>>>> > >>>>> > >>>>> On Thu, Nov 8, 2012 at 12:03 PM, Scott Rowe <scottrowe@google.com> > >>>>> wrote: > >>>>>> > >>>>>> When I sat down to document the process for creating API pages, > using > >>>>>> the WebRTC documentation as the poster child, I found more > questions than > >>>>>> answers. I realized that we did not have a good story here, so I > did my best > >>>>>> to fill in the holes with a methodology that attempts to solve the > problems > >>>>>> I found. > >>>>>> > >>>>>> You find this methodology described in WPD:Creating_API_pages. > >>>>>> > >>>>>> Note that it started out as a how-to for contributors, but quickly > >>>>>> became a proposal. So parts of it will read either way. Don't be > alarmed. > >>>>>> The purpose of the document is to provide you with a methodology to > try on > >>>>>> as you do what I did - test it out with your own API pages. > >>>>>> > >>>>>> As you do, please don't update the methodology in that page - let's > >>>>>> discuss it first. We can use this thread for the discussion. > >>>>>> > >>>>>> Thanks for your help! > >>>>>> > >>>>>> +Scott > >>>>>> > >>>>> > >>>> > >>> > >> > > >
Received on Thursday, 15 November 2012 17:12:36 UTC