We’ll also need someone to step up as spec editor. I thought I’d be able to do this, but my past month has shown me that I won’t have the bandwidth to do the job properly.
I think these are all great proposals.
+1 to everything proposed by Lane & Arne, and especially to Scott's
suggestion of a designated spec editor. The current version reads
like a bit of a patchwork (not for no reason, I know). Some clean-up
would be greatly appreciated. I've got some notes on the gadgets spec
in particular that I need to type up into a patch.
One thing that I think needs to be decided is the future of gadgets as
a separate spec. Right now it's kind of implied that the gadgets spec
is independent of the rest of OpenSocial, but there are subtle
dependencies and inconsistencies between the two. Each spec refers to
concepts that are only defined in the other, so neither one can really
be said to be more "core" with the other extending it. And there are
often multiple, incompatible ways of doing the same things, such as
makeRequest vs. osapi.http and UserPrefs vs. AppData. It would be
good to clarify the direction this should go in and restructure the
documents accordingly.
I've been talking offline with Lane about what we wanted to see from this revision and wanted to summarize my points for the rest of the community.I started thinking about the problems with the spec and the specification process as I saw them during the 0.9 phase:* Spec complexityThe spec has too many dependencies right now. The RPC spec refers to the REST spec which refers back to the core spec. The osapi spec claims to map 1:1 to the RPC spec, but has contradictory examples and documentation. Finding out the complete parameter set accepted by a single RPC, REST or osapi call requires flipping through three documents.
* Arbitrary timelinesWe wound up having to cut a lot of functionality for proxied content because of an arbitrary deadline. Why? When did pushing a new version of the spec become more important than having a really useful specification for proxied content?
* Prototyping chain of responsibility was undefinedFeatures were dropped because nobody bothered to prototype them. That doesn't make a lot of sense to me - if an application developer wants a change to the way apps work, why do they have to make modifications to server code for it to be included? If you need to get buy-in from a container to get a prototype made, why bother going to the spec group first, then?
* XXXL ScopeSome people wanted REST and others wanted RPC. Some people wanted XML, others JSON, others ATOM. Instead of compromising and coming to an agreement, we have 6 permutations of the protocol and content-type for servers and client libraries to support. Few, if any, suppport all of these.
* "Mix & match" attitude to the specBecause of the way that features get woven into many different portions of the spec, it becomes very difficult to determine the entire scope of any given feature. For example, osapi.* has been working in some form on PHP and Java shindig, but osapi.http was overlooked in both versions because it didn't have a corresponding RPC endpoint defined in the spec anywhere. Because the spec is difficult/impossible to comprehend fully, it is almost required to pick and choose portions of the spec to implement.
These issues are significant, but I believe they're quite solvable, even in the next (1.0) iteration of the spec. If I were king, I'd love to see the following:1.) To address complexity, we need to "refactor" the spec into something that can be more easily read and understood by a single person. Lane and I have started brainstorming what that could look like, and hope to have a sample available for review here soon. The biggest change will be to pull together REST, RPC, osapi, and Data Pipelining definitions into one consistent data access portion of the spec.
2.) Because of the large number of text changes needed for #1, I believe that this revision should not change anything specified by the 0.9 spec. Keeping track of stylistic changes in a document is possible, and keeping track of semantic changes to a document is possible, but doing both at once is asking for trouble. We want changes to the spec to be well reviewed, but making the changes to complex is a good way to make sure mistakes make their way in.3.) We should divorce the timelines for the core spec and logical blocks of changes, or extensions to the spec. The example I like to use the most is OAuth's body signing extension: http://oauth.googlecode.com/svn/spec/ext/body_hash/1.0/oauth-bodyhash.html. This extension was allowed to come to maturity on its own, isolated from the timeline of the OAuth core spec. It was written in a response to a problem which manifested on some OpenSocial containers, iterated on, and implemented quickly. OAuth 1.0 did not need to be versioned or changed in any way. Eventually, when OAuth v.NEXT comes out, maybe this extension will be seen as important enough to roll into the core spec. At that point, it will be a mature proposal with several production implementations and strongly defined language, making incorporation so much easier.
I believe that those features (and a couple more) could be rolled up into an extension proposal. There's also another option we could discuss - to make Templates an extension doc by itself. The number of extensions to OS templates currently in production seems to indicate that that feature could likely benefit from iterating on its own for a while longer.
Evan,
One of the themes that came up at the Enterprise OpenSocial summit was
having a bit more predictability in the spec time lines. This will be
a huge help in terms of planning et. One thing I suggested is that as
we layout the time line for 1.0, we establish a high level target date
for 1.1. For example if we want to get 1.0 out the door in November,
then we could establish March/April as the target for 1.1. This way,
if you have a feature that you are working on that isn't quite ready
for the current version, you have an idea when the next opportunity
will be. Maybe this is more important this round because there won't
be new features in 1.0.
Thoughts?
Not when you're versioning software - and since we've modeled spec development after software development, I certainly understand the 0.9 --> 0.10 progression.
By the same token, 0.10 would indicate an incremental change. However, many of the proposals suggest fundamental changes (redefining compliance, formalizing extensions, etc.), hence the 1.0.
-Lane
On Oct 1, 2009 1:48 PM, "Lev Epshteyn" <le...@google.com> wrote:
Isn't 0.10 less than 0.9? :)
On Thu, Oct 1, 2009 at 3:41 PM, Randy Hudson <randy....@gmail.com> wrote: > > > Why not call th...