- 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