Re: jf2 vs. AS 2.0

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.

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 <http://twitter.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:46:41 UTC