- From: James M Snell <jasnell@gmail.com>
- Date: Tue, 3 Nov 2015 16:51:58 -0800
- To: Aaron Parecki <aaron@parecki.com>
- Cc: "public-socialweb@w3.org" <public-socialweb@w3.org>
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