That helps, thanks. It's still unclear to me that this is important enough 
to worry about. What application or service is hindered by string encoding 
a date in JSON? An example would really help. It's not compelling to assert 
or imagine some hypothetical application that benefits from knowing a field 
is a date without having any other knowledge of it. I would guess that 
cases where this matters are vanishingly few.


On Sunday, January 19, 2014 9:03:53 AM UTC-8, jonah wrote:
>
> I read these self-describing, extensible points in the context of EDN, 
> which has a syntax/wire format for some types- maps, strings, etc- and also 
> has an extensibility syntax:
>
> #myapp/Person {:first "Fred" :last "Mertz"}
>
> These tagged elements are "extensions" because they allow values of types 
> not known to EDN to be included in the stream, and are "self-describing" in 
> two senses:
>
> * if a wire format reader does know how to create a myapp/Person{}, that 
> blob of data contains all the information needed to do so
> * if a wire format reader doesn't known how to create a myapp/Person, it 
> can still read past this particular element in the stream, because tags 
> have a defined envelope, so a reader can figure out where data comprising 
> this element ends
>
> The JSON example is mostly about the "extensibility" attribute. JSON's 
> format natively supports some types (like strings) but not others (like 
> dates), and for those others, JSON's format does not include a way to 
> "bucket" or "envelope" data comprising those unknown types. So JSON is not 
> extensible. 
>
> The google example is mostly about the "self-describing" attribute, and to 
> my mind is more accurately framed as a statement about the Internet as a 
> whole. Hypothetically, if all data exchange occurred using data formats 
> whose details were private arrangements between writers and readers- for 
> instance, all servers only spoke ProtocolBuffers and used a different 
> schema for each client- there would be no Internet at all, much less a 
> google who as a third party is able to broadly read and understand data 
> made available by servers. (Or, to your point, any ability to parse 
> anything useful from a server data stream by clients lacking knowledge of 
> the schema would be at best be inferential and heuristic- possible, but 
> infeasible on a large scale.)
>
> With all that said- my read is that Rich bundled those two points together 
> in the JSON date example- JSON doesn't have an extensibility syntax to 
> support dates, but people still have to transmit dates over JSON, so how do 
> they do that? One way is by adopting a  "convention", which in some ways is 
> better than an out of band schema, because, as you say, a convention gives 
> a reader additional information to heuristically interpret the stream, but 
> in other ways is worse because it isn't consistent- some people will want 
> date fields to look like "dateModified", others will want "modifiedDate", 
> and others use "modificationDatetime".
>
> So in a broad sense, it is not desirable to use a data format that does 
> not include an extensibility capability which itself is self-describing, 
> because a format that lacks extensibility creates a combinatorial explosion 
> in conventions to convey values not known to the format, and extensions 
> that are not self-describing require out of band agreements between readers 
> and writers that can preclude the scalable third-party interoperability 
> that is so important to the Internet. 
>
> Hope that helps.
>
>
> On Sat, Jan 18, 2014 at 6:08 PM, Brian Craft <[email protected]<javascript:>
> > wrote:
>
>> Ok, so consider a different system (besides google) that handles the JSON 
>> example. If it has no prior knowledge of the date field, of what use is it 
>> to know that it's a date? What is a situation where a system reading the 
>> JSON needs to know a field is a date, but has no idea what the field is for?
>>
>>
>> On Saturday, January 18, 2014 1:27:31 PM UTC-8, Jonas wrote:
>>>
>>> IIRC in that particular part of the talk he was specifically talking 
>>> about (non-self describing) protocol buffers and not JSON.  
>>>
>>> On Saturday, January 18, 2014 10:00:09 PM UTC+2, Brian Craft wrote:
>>>>
>>>> Regarding Rich's talk (http://www.youtube.com/watch?v=ROor6_NGIWU), 
>>>> can anyone explain the points he's trying to make about self-describing 
>>>> and 
>>>> extensible data formats, with the JSON and google examples?
>>>>
>>>> He argues that google couldn't exist if the web depended on out-of-band 
>>>> schemas. He gives as an example of such a schema a JSON encoding where an 
>>>> out-of-band agreement is made that field names with substring "date" refer 
>>>> to string-encoded dates.
>>>>
>>>> However, this is exactly the sort of thing google does. It finds dates, 
>>>> and other data types, heuristically, and not through the formats of the 
>>>> web 
>>>> being self-describing or extensible.
>>>>
>>>>
>>>> -- 
>> -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to [email protected]<javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> [email protected] <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to