Re: jf2 vs. AS 2.0

OK awesome. Given how well the examples I posted align, it would seem that
the majority of what the jf2 exercise is looking to tease out is already
covered.

Looking it over, positioning jf2 as an extension context on top of AS2
makes the most sense. I've taken a first stab at fixing up the jf2 context
here: https://gist.github.com/jasnell/5daa485e56440779b557

I've fixed a number of errors in the context definition and removed the
bits that would conflict with the normative AS2 context definitions. The
end result looks pretty good as an extension I think.
On Nov 4, 2015 4:35 AM, "Harry Halpin" <hhalpin@w3.org> wrote:

>
>
> On 11/03/2015 10:24 PM, Melvin Carvalho wrote:
>
>
>
> On 4 November 2015 at 01:51, James M Snell <jasnell@gmail.com> wrote:
>
>> 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.
>>
>
> Not I did not say that it meant as an 'alternative', but as a
> proof-of-concept that a simple JS feed could be done and thus AS2.0 should
> be simplified along the lines put forward by Aaron. Minus the complexity
> added by JSON-LD, I think this general trajectory makes sense and that we
> should try to keep a simple JSON core, with JSON-LD features being
> optional. That seems to be the way we are converging currently.
>
>          cheers,
>              harry
>
>
> Thanks for going thru these points.
>
> I do see progress towards convergence here.  Im glad the two of you are
> discussing it here, we need not view all work as competitive.
>
> Similarly, I think James' efforts towards convergence between AS2 and JSON
> LD were a great gesture this week.  This kind of goodwill motivate
> participation, and as we're a small group compared to the social web
> incumbents, working together constructively is all the more important.  I
> see good progress!
>
> From the mf2 work I was able to cut and paste some of the mf2 / jf2 work
> and convert it to jsonld (on github) in a matter of seconds
>
> http://melvincarvalho.github.io/data/ns/mf.jsonld
>
> That's not normative, just the result of some cut and paste.
>
> I do feel we're inching closer to convergence here.  I hope it continues!
>
>
>>
>> - 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 14:08:56 UTC