I think one of the things we are trying to do is provide a framework
in which new capabilities for OpenSocial can evolve at different
rates. For example, we've already started working with the OpenAjax
guys to integrate the OA Hub technology into OpenSocial. What we'll
need to provide to the community is, ultimately, an official proposal
that can be reviewed and approved. This proposal will have with it
some modifications for the spec and some code that demonstrates its
feasibility. Since we are trying to scope 1.0 to have no new features,
this is already targeted at 1.1.
So right now, I think of pub/sub as incubating. We want to work on it
in the open, with as much help/support from the community that we can
get. When we are done, and comfortable with what we've got, and the
spec process for 1.1 officially opens, THEN we will submit a proposal
and prototype. Your idea of a draft life cycle may help here:
Something like:
* incubating: as it's being worked on, ideally, in an open manner
within the community.
* draft: submitted to the specification process for inclusion in
OpenSocial. Expected to have prototypes with spec changes et.
* provisional: approved and accepted by the community. APIs are stable
with expected level of support from the community.
* Final/Offical/: Officially part of the spec. APIs are stable. Fully
integrated into the spec's programming model et.
So the creation of the proposal for a new capability to be added to
OpenSocial can occur in the community outside of the specification
process. This allows new capabilities to evolve at their own rate.
This also allows the "prototype" stage to let the community focus on
validating the work versus developing the work.
So back to the question of what does "MAY" mean?
Going back to my pub/sub example, we're going to document the
semantics of the capability and the requirements of a developer who is
coding to the defined APIs. It is likely that there will be some
things the developer is required to do, i.e. MUST. Other things
regarding pub/sub they could choose to do, i.e. MAY. Going further,
there are things that perhaps they don't have to do, but it's highly
recommended, i.e. SHOULD. These are very specific words that we've
decided to use relative to how we describe the capability we're
proposing be added to OpenSocial.
Which brings us to the question of if a provider is required to offer
this new capability. Here, there seems to be a logical layering of
capability. For example, as we see the rise in importance of
integration, it seems perfectly reasonable for a provider to offer
only the REST APIs, e.g. no gadgets. It also seems reasonable that
some providers want to offer a capability like Micropayments while
others do not. I think we can define a set of capability that in order
to call yourself an OpenSocial provider, you have to provide. Whatever
this is, it should map to a set of specifications that have been
approved by the OpenSocial Foundation.
In addition, we should also be able to have community added
capability, e.g. micropayments, with a well defined set of semantics,
that might be used by providers. The OpenSocial community should
ensure, as part of the specification development process, that their
APIs and semantics are consistent with the fundamental programming
model defined the specifications that a container must provide. These
should be discoverable in a well defined manner. A provider could
choose to implement this capability. I don't think there is one main
document that says, as a provider, you MAY do micropayments. Rather, I
see a primer of some sort that says something like...
If you want to do integration based on OpenSocial, then you use this
set of specs (e.g. REST + OAuth). If you want to offer the ability to
host gadgets that use the OpenSocial APIs then use these specs
(OpenSocial, Gadgets, OSML, et). If you want to add micropayment
capability to your web site, use these specs (OpenSocial, Gadgets,
OSML, Micropayments). This is sort of like a set of OpenSocial
"application profiles".
OK. So this post turned out a bit longer than I initially expected. I
hope it all makes sense given that it's 6pm on the east coast--way
past Miller Time.
-Mark W.
On Sep 18, 1:40 pm, Arne Roomann-Kurrik <
kur...@google.com> wrote:
> I'm less excited about treating extensions as "experimental" features.
> There very well may be very mature extension documents that are in
> production use but simply too specific to include in the core spec. I would
> caution against associating instability with extensions for this reason.
> Extension documents should probably have an agreed upon labeling system to
> indicate the level of maturity of the extension itself. Off the top of my
> head, this could be something like:
>
> - draft - proposed feature without any implementors
> - prototyped - working implementation available
> - production - in production on at least one container
>
> Of course, this doesn't answer the question of what the difference between a
> MAY in the spec and an extension is. To me, an extension is an optional
> portion of the specification which iterates on its own timeline. An
> extension may go from draft to production in a much shorter time than a spec
> MAY feature.
>
> Ultimately, there should be very little difference between a "production"
> extension and a spec MAY feature. The separation is more of a clerical
> necessity to keep things clean and organized for implementors.
>
> ~Arne
>
> On Mon, Sep 14, 2009 at 10:55 AM, Lane LiaBraaten <
api.lliab...@gmail.com>wrote:
>
> > Thanks for the feedback, Mark.
>
> > Open Question: "What is the difference between a MAY in the spec and an
> > extension?"
>
> > I think the answer here will greatly affect a lot of the decisions w.r.t
> > the spec. In the other thread (Proposal for 1.0 [1]) there's an issue
> > raised about "too many MAYs" in the spec that may be at odds with the
> > current extensions proposal [2].
>
> > The current proposal basically says that once an extension gets to a
> > certain point of maturity it is added (probably as a MAY) to the spec. So
> > if there's an issue with having MAYs in the spec then we need to tease it
> > out. I have a feeling that the issue is not so much with having MAYs in the
> > spec but more related to two things:
>
> > - particular features being MAYs as opposed to MUSTs (e.g. RPC)
> > - the desire for Shindig, being the reference implementation, to
> > implement all the MAYs
>
> > My current answer to the open question above is that an extension should be
> > treated as an experimental feature (i.e. the APIs are subject to change, so
> > if developer's use it, they should expect high maintenance costs). On the
> > other hand, a MAY in the spec means that the API is stable and developers
> > can use it without worrying that they'll have to update their code.
>
> > -Lane
>
> > [1]
> >
http://groups.google.com/group/opensocial-and-gadgets-spec/browse_thr...
>
> > [2]
http://wiki.opensocial.org/index.php?title=Extensions