- From: James M Snell <jasnell@gmail.com>
- Date: Tue, 3 Nov 2015 17:16:45 -0800
- To: Aaron Parecki <aaron@parecki.com>
- Cc: "public-socialweb@w3.org" <public-socialweb@w3.org>
Btw, Some additional comments based on looking at the current version of jf2 JSON-LD @context definition here: https://github.com/dissolve/socialstream/blob/master/jf2.php 1. You map "url" to "@id". This is likely to interact badly with other JSON-LD vocabularies that have their own definitions of "url" already. The best practice is to map "@id" to "id". 2. You map both "type" and "content-type" to "@type". This means that "@type" will be aliased to "content-type" and the information will be lost after JSON-LD processing. Also, the @type keyword is specifically limited to URL's, not media types. See: http://tinyurl.com/p6y59lm and http://tinyurl.com/pwmyd2q for examples that show how this mapping is a problem (yes, I see that you map a couple of the media types to terms in the context but the way this is defined, you'd have to map EVERY possible media type in a JSON-LD @context in order for it to work reliably unless you're strictly limiting implementations to these two media types) 3. You map "lang" to "@language". Your draft currently does not define how "lang" would be used but if the intent is for "lang" to be used to establish a global default language context, it doesn't work that way in JSON-LD and this mapping will lead to problems. 4. You have two separate aliases defined for "adr": - "adr": "mf:h-adr" - "adr": "mf:microformats2#p-adr" 5. You've duplicated the definition of "author": - "author": "mf:microformats2#p-author", - "author": "mf:microformats2#p-author", 6. You have two separate aliases defined for "item": - "item": "mf:h-item" - "item": "mf:microformats2#p-item" 7. Keep in mind that because you do not define @vocab in the context to set the default vocabulary, any property not defined in the @context will be silently dropped after JSON-LD processing and any vocab value (such as "content-type" as you've currently defined) will be resolved as relative URL references. - James On Tue, Nov 3, 2015 at 4:51 PM, 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. > > - 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 01:17:36 UTC