AW: jf2 vs. AS 2.0

>From my perspective the idea to move a few steps towards the different communities is worthwhile. However, I agree with James that a second serialization in JSON is not really helpful. 
My proposal would be to show mappings of the AS 2.0 JSON-LD representation to a MF2 syntax. This is already done to a certain extend in the examples, if I understand it correctly. 
Having a strong XML background I would argue this is definitely a case for XSLT. Anybody know of a similar mechanism based on JSON?

-----Ursprüngliche Nachricht-----
Von: James M Snell [mailto:jasnell@gmail.com] 
Gesendet: Mittwoch, 4. November 2015 01:52
An: Aaron Parecki <aaron@parecki.com>
Cc: public-socialweb@w3.org
Betreff: 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 07:28:38 UTC