Re: jf2 vs. AS 2.0

On Tue, Nov 3, 2015 at 4:46 PM, Aaron Parecki <aaron@parecki.com> wrote:
> Thanks for looking over this, but please don't make assumptions about what
> the purpose of jf2 is. I tried adding it to the agenda for today's call, but
> it was continually pushed down in the list to make room for all the AS2
> issues and we didn't get to talk about it at all.
>

Fair enough. I'm responding to what I've already been told about it's
purpose. Harry indicated previously that it was intended as an
alternative to AS 2.0 and, from what I understand, there's been some
discussion/disagreement among the chairs about considering it as an
alternative to AS2 that ought to be considered a parallel work item of
the working group. My analysis is based on that information. If you
(as the author) have a different point of view on it, then fantastic,
and I certainly hope you take no offense to the analysis.

- James

> The real goal with jf2 is to show an attempt at bringing the microformats
> community closer to what the AS and other JSON-based communities expect from
> a syntax. I know there's been a lot of talk about "compromising" and
> "convergence" between the three communities, and that's exactly what this is
> an exercise in. I'm sorry you are seeing it as a thread/competitor to what
> you are doing, but that was not the intent. The intent is to bring
> everything closer in line like we have all been talking about for such a
> long time. If you are seeing similarities between jf2 and AS2 that is great,
> because that is literally the goal of converging.
>
> I won't be able to make the call next week, but I will continue working on
> jf2 with others in the mean time and hope to get it on the agenda for the
> call on the 17th.
>
> ----
> Aaron Parecki
> aaronparecki.com
> @aaronpk
>
>
> On Tue, Nov 3, 2015 at 4:29 PM, James M Snell <jasnell@gmail.com> wrote:
>>
>> There has been some discussion of whether an alternative JSON
>> serialization should be considered by this WG. The proposal that has
>> been put on the table is currently being called "jf2". The current
>> draft can be found here:
>> https://github.com/w3c-social/Social-Syntax-Brainstorming/wiki/jf2
>>
>> I cannot speak to the motivations for why folks feel this second draft
>> would be necessary or even remotely beneficial to the WG's efforts but
>> I can do a side by side comparison with the syntax spec we already
>> have.
>>
>> Going through the current draft of the jf2 draft on the wiki:
>> https://github.com/w3c-social/Social-Syntax-Brainstorming/wiki/jf2...
>>
>> 1. Post object ..
>>
>>    a. effectively the same as Object in AS2. Calling it something else is
>> not a
>>       worthwhile "improvement"
>>
>>    b. "type" is essentially the same function as AS2's "type". No real
>> benefit
>>       gained. The write up proposes using the Microformats list as the
>> "full"
>>       list but doesn't indicate anything about extensibility.
>>
>>    c. Overall, doesn't seem to buy us anything different than current
>>       AS2 Object definition.
>>
>> jf2 example:
>> ```json
>> {
>>   "type": "entry",
>> }
>> ```
>> AS 2.0 example:
>> ```json
>> {
>>   "@context": "http://www.w3.org/ns/activitystreams",
>>   "type": "Note"
>> }
>> ```
>>
>> 2. URL values
>>
>>    a. "Every value that is a URL is in an object with a property of url"
>> ...
>>       This statement is not clear.
>>
>>    b. This is generally equivalent to the most common case in AS2. AS2
>> does
>>       have the additional bit that "url" can specify multiple urls
>>
>>    c. Overall, doesn't seem to buy us anything different than current
>>       AS2 "url" definition.
>>
>> jf2 example:
>> ```json
>> {
>>   "type": "image",
>>   "url": "http://example.org/foo.png"
>> }
>> ```
>> AS 2.0 example:
>> ```json
>> {
>>   "@context": "http://www.w3.org/ns/activitystreams",
>>   "type": "Image",
>>   "url": "http://example.org/foo.png"
>> }
>> ```
>>
>> jf2 example:
>> ```json
>> {
>>   "type": "entry",
>>   "video": [
>>     {
>>       "type": "video",
>>       "content-type": "video/mp4",
>>       "url": "sample_h264.mov"
>>     },
>>     {
>>       "type": "video",
>>       "content-type": "video/ogg",
>>       "url": "sample_ogg.ogg"
>>     },
>>     {
>>       "type": "video",
>>       "content-type": "video/webm",
>>       "url": "sample_webm.webm"
>>     }
>>   ]
>> }
>> ```
>> AS 2.0 Example:
>> ```json
>> {
>>   "@context": "http://www.w3.org/ns/activitystreams",
>>   "type": "Video",
>>   "url": [
>>     {
>>       "mediaType": "video/mp4",
>>       "href": "sample_h264.mov"
>>     },
>>     {
>>       "mediaType": "video/ogg",
>>       "href": "sample_ogg.ogg"
>>     },
>>     {
>>       "mediatype": "video/webm",
>>       "href": "sample_webm.webm"
>>     }
>>   ]
>> }
>> ```
>>
>> 3. Post properties
>>
>>    "The list of valid post properties is defined by vocabularies. This
>> allows
>>    new vocabularies to be developed outside the development of the syntax"
>>
>>    This is equivalent to AS 2.0's existing extensibility model.
>>
>> js2 example
>> ```json
>> {
>>   "type": "entry",
>>   "published": "2015-10-20T15:49:00-0700",
>>   "url": "http://example.com/post/fsjeuu8372",
>>   "author": {
>>     "type": "card",
>>     "name": "Alice",
>>     "url": "http://alice.example.com",
>>     "photo": {
>>       "type": "image",
>>       "url": "http://alice.example.com/photo.jpg"
>>     }
>>   },
>>   "name": "Hello World",
>>   "content": "This is a blog post"
>> }
>> ```
>> AS 2.0 example:
>> ```json
>> {
>>   "@context": "http://www.w3.org/ns/activitystreams",
>>   "type": "Note",
>>   "published": "2015-10-20T15:49:00-0700",
>>   "url": "http://example.com/post/fsjeuu8372",
>>   "attributedto": {
>>     "type": "Person",
>>     "displayName": "Alice",
>>     "url": "http://alice.example.com",
>>     "image": {
>>       "type": "Image",
>>       "url": "http://alice.example.com/photo.jpg"
>>     }
>>   },
>>   "displayName": "Hello World",
>>   "content": "This is a blog post"
>> }
>> ```
>> The examples are essentially equivalent. jf2 gives provides nothing new.
>>
>> jf2 example:
>> ```json
>> {
>>   "type": "entry",
>>   "published": "2015-10-20T15:49:00-0700",
>>   "url": "http://example.com/like/r23eugi02c",
>>   "author": {
>>     "type": "card",
>>     "name": "Alice",
>>     "url": "http://alice.example.com",
>>     "photo": {
>>       "type": "image",
>>       "url": "http://alice.example.com/photo.jpg"
>>     }
>>   },
>>   "like-of": {
>>     "url": "http://bob.example.com/post/100"
>>   }
>> }
>> ```
>> AS 2.0 Example:
>> ```json
>> {
>>   "@context": "http://www.w3.org/ns/activitystreams",
>>   "type": "Like",
>>   "published": "2015-10-20T15:49:00-0700",
>>   "url": "http://example.com/like/r23eugi02c",
>>   "actor": {
>>     "type": "Person",
>>     "displayName": "Alice",
>>     "url": "http://alice.example.com",
>>     "image": {
>>       "type": "Image",
>>       "url": "http://alice.example.com/photo.jpg"
>>     }
>>   },
>>   "object": "http://bob.example.com/post/100"
>> }
>> ```
>> The examples are essentially equivalent. jf2 gives provides nothing new.
>>
>> 4. Author
>>
>>    "An author is represented by the h-card vocabulary"
>>
>>    AS 2.0 refers to the standardized hcard vocabulary. jf2 is offering
>> nothing new.
>>
>> jf2 example:
>> ```json
>> {
>>   "type": "card",
>>   "name": "Aaron Parecki",
>>   "photo": {
>>     "type": "image",
>>     "url": "http://aaronparecki.com/photo.jpg"
>>   },
>>   "url": "http://aaronparecki.com/"
>> }
>> ```
>> AS 2.0 Example:
>> ```json
>> {
>>   "@context": "http://www.w3.org/ns/activitystreams",
>>   "type": "Person",
>>   "displayName": "Aaron Parecki",
>>   "image": {
>>     "type": "Image",
>>     "url": "http://aaronparecki.com/photo.jpg"
>>   },
>>   "url": "http://aaronparecki.com/"
>> }
>> ```
>>
>> 5. HTML Content
>>
>> jf2 example:
>> ```json
>> {
>>   "type": "entry",
>>   "content": {
>>     "content-type": "text/html",
>>     "value": "<b>Hello World</b>"
>>   }
>> }
>> ```
>> AS 2.0 Example:
>> ```json
>> {
>>   "@context": "http://www.w3.org/ns/activitystreams",
>>   "type": "Note",
>>   "mediaType": "text/html",
>>   "content": "<b>Hello World</b>"
>> }
>> ```
>>
>> 6. Collections
>>
>>    jf2 does not offer anything distinctly different from AS 2.0
>> collections
>>
>> jf2 example:
>> ```json
>> {
>>   "type": "feed",
>>   "url": "http://alice.example.com/collectionurl",
>>   "name": "Alice's Home Page",
>>   "author": {
>>     "type": "card",
>>     "name": "Alice",
>>     "url": "http://alice.example.com",
>>     "photo": {
>>       "type": "image",
>>       "url": "http://alice.example.com/photo"
>>     }
>>   },
>>   "children": [
>>     { ... },
>>     { ... }
>>   ]
>> }
>> ```
>> AS 2.0 Example:
>> ```json
>> {
>>   "@context": "http://www.w3.org/ns/activitystreams",
>>   "type": "Collection",
>>   "url": "http://alice.example.com/collectionurl",
>>   "displayName": "Alice's Home Page",
>>   "attributedTo": {
>>     "type": "Person",
>>     "displayName": "Alice",
>>     "url": "http://alice.example.com",
>>     "image": {
>>       "type": "Image",
>>       "url": "http://alice.example.com/photo"
>>     }
>>   },
>>   "items": [
>>     { ... },
>>     { ... }
>>   ]
>> }
>> ```
>> the only difference between these is that I renamed fields, added the
>> @context, and used different values for "type". jf2 offers nothing
>> different from what's currently in AS 2.0.
>>
>> 7. Summary
>>
>>     So far, jf2 offers nothing that isn't already covered by AS 2.0.
>> At best, it represents an exercise in bikeshedding over property names
>> and a handful of values. AS 2.0 does cover a broader range of use
>> cases than jf2 so an argument can be made that jf2 is "less
>> complicated". jf2 attempts to defer the complexity of that by
>> referencing out to individual microformats vocabularies. I would argue
>> that doing so actually does not reduce the complexity for
>> implementers, it simply shifts the problem do a different set of
>> specs.
>>
>> I would note that jf2 does not currently handle internationalization
>> concerns. Addressing such concerns would lead jf2 to duplicate more of
>> what is already in AS 2.0 today.
>>
>> Obviously, I'm leading in to this review with an obvious bias towards
>> the spec we've already been working on for the past year, that already
>> does everything we need, and that folks have already implemented. I'd
>> encourage the proponents and authors of jf2 to make specific change
>> proposals against AS 2.0 if they really feel that things can be
>> simplified further.
>>
>> - James
>>
>

Received on Wednesday, 4 November 2015 00:52:47 UTC