Loading ...
Sorry, an error occurred while loading the content.

JSON syntax grammar is missing 'undefined' literal value

Expand Messages
  • Shelby Moore
    To: douglas@crockford.com Douglas Crockford, Why did you not include the undefined literal in the JSON grammar at JSON.org? Afaics, it does not violate any
    Message 1 of 19 , May 25, 2008
    • 0 Attachment
      To: douglas@...

      Douglas Crockford,

      Why did you not include the 'undefined' literal in the JSON grammar at
      JSON.org?

      Afaics, it does not violate any of JSON's objectives (including the
      security objectives for JSONrequest), and is an important data state
      that needs to be included in order to cover the widest range of
      possible data structures.

      Perhaps you are not aware that the 'in' operator in JavaScript does
      recognize the existence of an object property with an undefined value,
      until it has been removed with the delete operator:

      http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Operators:Special_Operators:in_Operator#Using_in_with_deleted_or_undefined_properties

      Thus, there is a way to detect which properties were defined in JSON
      with this proposed undefined literal. Simply test with 'in' operator.

      I assume your mistake was you erroneously assumed that undefined would
      be undetectable in the equivalent JavaScript object.

      It would break quite a bit of JavaScript code to include the undefined
      literal now, e.g. all if( !object.property ) or if( object.property
      === undefined ) or if( typeof object.property == 'undefined' ) would
      need to be converted to if( property in object ).


      --

      Kind Regards,
      Shelby Moore
      http://coolpage.com
    • Mark S. Miller
      ... It violates the objective of being a language-neutral format that is friendly to several existing languages. JSON, as is, is already a subset of Python and
      Message 2 of 19 , May 25, 2008
      • 0 Attachment
        On Sun, May 25, 2008 at 8:54 AM, Shelby Moore <shelby@...> wrote:
        > To: douglas@...
        >
        > Douglas Crockford,
        >
        > Why did you not include the 'undefined' literal in the JSON grammar at
        > JSON.org?
        >
        > Afaics, it does not violate any of JSON's objectives (including the
        > security objectives for JSONrequest),

        It violates the objective of being a language-neutral format that is
        friendly to several existing languages. JSON, as is, is already a
        subset of Python and YAML as well as JavaScript. For many other
        languages, there's usually a simple mapping from JSON to existing
        concepts of that language. Many languages have a null. Few have a
        distinct undefined.


        > and is an important data state
        > that needs to be included in order to cover the widest range of
        > possible data structures.

        It is not a goal to be able to directly represent "the widest range of
        possible...".


        > Perhaps you are not aware that the 'in' operator in JavaScript does
        > recognize the existence of an object property with an undefined value,
        > until it has been removed with the delete operator:

        I can assure you that Crock is quite aware of this ;)


        --
        Cheers,
        --MarkM
      • Shelby Moore
        ... Wow, thanks for the quick reply. Other than the legacy issue I pointed out in my prior message, could I perhaps change your mind? Afaics, neither C or C++
        Message 3 of 19 , May 25, 2008
        • 0 Attachment
          Douglas Crockford wrote:
          >
          > JSON was intended to be language independent. Most languages have or
          > tolerate
          > the idea of a null value. Very few languages have two of them.

          Wow, thanks for the quick reply. Other than the legacy issue I
          pointed out in my prior message, could I perhaps change your mind?

          Afaics, neither C or C++ have a null datatype (C also no bool).
          Either must tag all values with an enum(eration) of value types, or
          use (void*)0 for null. Enum tagging could handle another datatype, or
          use (void**)0. Classes in C++ don't help, because there is no typeof.
          Or perhaps could use operator overloading in C++ with a class to
          detect instances of that class.

          It seems most all languages either fall into the above scenario of
          simulating null (and thus could simulate undefined), or the modern
          non-prototype 00 languges have a means for detecting the class of an
          object, so then use new Undefined(). Afaik, even Java's Null type is
          just a class.

          I am working on an implicit schema for JSON (to enable Web 3.0
          decentralized mashups) and I am thinking of declaring undefined to be
          a legal value and usurp your defacto standard. Could you please steer
          me otherwise with further logic?

          Again thanks a lot for the feedback.
        • John Cowan
          ... To pick a nit: I see this claim pretty often, but it is not really true: Python s null is spelled None . You can make a global definition null=None
          Message 4 of 19 , May 25, 2008
          • 0 Attachment
            Mark S. Miller scripsit:

            > It violates the objective of being a language-neutral format that is
            > friendly to several existing languages. JSON, as is, is already a
            > subset of Python

            To pick a nit:

            I see this claim pretty often, but it is not really true: Python's
            null is spelled "None". You can make a global definition "null=None"
            for input purposes, but Python's output will still generate "None"
            rather than "null", as well as outputting single quotes rather than
            JSON's double quotes.

            --
            With techies, I've generally found John Cowan
            If your arguments lose the first round http://www.ccil.org/~cowan
            Make it rhyme, make it scan cowan@...
            Then you generally can
            Make the same stupid point seem profound! --Jonathan Robie
          • Douglas Crockford
            ... JSON will not be extended to include undefined. Your options are to either accept the definition of JSON as it is, or to create your own format. If you do
            Message 5 of 19 , May 25, 2008
            • 0 Attachment
              --- In json@yahoogroups.com, "Shelby Moore" <shelby@...> wrote:
              > I am working on an implicit schema for JSON (to enable Web 3.0
              > decentralized mashups) and I am thinking of declaring undefined to be
              > a legal value and usurp your defacto standard. Could you please steer
              > me otherwise with further logic?

              JSON will not be extended to include undefined. Your options are to
              either accept the definition of JSON as it is, or to create your own
              format. If you do the latter, please don't call it JSON.
            • Shelby Moore
              ... Thanks again for reply. Viability of JSON s strength as unchanging specification, will depend on the correctness and minimal completeness of it s
              Message 6 of 19 , May 26, 2008
              • 0 Attachment
                "Douglas Crockford" <douglas@...> wrote:
                > JSON will not be extended to include undefined. Your options are to
                > either accept the definition of JSON as it is, or to create your own
                > format. If you do the latter, please don't call it JSON.

                Thanks again for reply.

                Viability of JSON's strength as unchanging specification, will depend
                on the correctness and minimal completeness of it's primitives model.
                Agree with your goal, but want to hash out the primitive "sweet spot".

                RFC 4627 for JSON states:

                "It is derived from the object literals of JavaScript, as defined in
                the ECMAScript Programming Language Standard, Third Edition [ECMA]"

                ECMA-262 specifies a Type and Value for Undefined, but granted it does
                not specify a literal for undefined. I.e. Undefined can be create in
                execution context, but not in literal assignment.

                What is not clear to me is when did the identifier, undefined, become
                an assignable global object? Mozilla claims JavaScript 1.3 and ECMA-262:

                http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Properties:undefined

                If true, then treating undefined as a literal in JSON, is compatible
                with ECMA-262. And my prior posts have argued no additional
                portability burden for an undefined literal (other than the legacy
                issue of current RFC 4627 grammar).

                JSON excels in efficiency and simplicity over orthogonal schema
                formats, e.g. XML, in data structures where the data is also
                implicitly the schema. Undefined is a necessary semantic in schema,
                because robust construction of data structures via inheritance
                requires both a "required type of fillable value" (i.e. Null) and an
                "optional type" (i.e. Undefined). Undefined is not the same as
                "unknown or any type". Without an undefined literal, my best
                workaround so far is to resort to stealing the empty array from it's
                true semantic, to give it undefined semantic.

                After we determine what is primitively correct, then we deal with
                legacy implementations and naming. Market efficiency often decides to
                retain a popular name, with legacy qualification. I suspect the market
                would choose "JSON2" or "JSON+" over some entirely new name?

                Since my new (unreleased) proposal for implicit JSON schemas, could
                refer to "JSON+undefined" since there are no legacy parsers of my
                specification. And my first implementation in JavaScript utilizes
                cross-domain dynamic <script> tags for loading, because
                de-centralization is entirely the point of Web 3.0. Afaik, JSONRequest
                is not yet widely adopted, so use of my proposal could possibly drive
                adoption of a "JSON+Request".

                Patents & copyrights (like all socialism insurance contracts) are
                unsustainable centralized force, because they are in opposite
                direction of nature's quest for maximum Entropy (max independent
                inter-actors):

                http://www.coolpage.com/commentary/economic/shelby/Mass-Entropy_Equivalence.html

                Redistribution of individual innovation to social ignorance, is a move
                towards the center of bell curve and ignorant of not-so-long-tail
                distributions of generational scale.

                We compete to bring the most truth (max inter-actors).
              • Douglas Crockford
                ... http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Properties:undefined ... I anticipate that there will be other languages that are
                Message 7 of 19 , May 26, 2008
                • 0 Attachment
                  --- In json@yahoogroups.com, "Shelby Moore" <shelby@...> wrote:
                  > Viability of JSON's strength as unchanging specification, will depend
                  > on the correctness and minimal completeness of it's primitives model.
                  > Agree with your goal, but want to hash out the primitive "sweet spot".
                  >
                  > RFC 4627 for JSON states:
                  >
                  > "It is derived from the object literals of JavaScript, as defined in
                  > the ECMAScript Programming Language Standard, Third Edition [ECMA]"
                  >
                  > ECMA-262 specifies a Type and Value for Undefined, but granted it does
                  > not specify a literal for undefined. I.e. Undefined can be create in
                  > execution context, but not in literal assignment.
                  >
                  > What is not clear to me is when did the identifier, undefined, become
                  > an assignable global object? Mozilla claims JavaScript 1.3 and
                  ECMA-262:
                  >
                  >
                  http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Properties:undefined
                  >
                  > If true, then treating undefined as a literal in JSON, is compatible
                  > with ECMA-262. And my prior posts have argued no additional
                  > portability burden for an undefined literal (other than the legacy
                  > issue of current RFC 4627 grammar).

                  I anticipate that there will be other languages that are based on or
                  inspired by JSON. These will push the model in interesting directions.
                  But there will be always be a simple JSON because there is a benefit
                  in having something that is reliable and minimally adequate.

                  In my view, JavaScript's undefined was a mistake. There are too many
                  similar falsy values in the the language. Most programmers are
                  confused about the differences. The undefined property is
                  inconsistent. It indicates a missing member, but it can be the value
                  of present members. As a name, it is implemented as a writable global
                  variable, a feature with alarming security and reliability
                  consequences. This is not a feature to fight for. It is a mistake that
                  cannot be rectified.

                  At the time I formulated JSON, JavaScript was not a popular language,
                  and it was generally held in very low esteem. One of my design goals
                  was to hide JavaScript's defects. That is why keys must be quoted in
                  JSON, because I did not want to explain JavaScript's absurd reserved
                  word policy in the JSON spec. The undefined value was excluded for the
                  similar reasons.

                  JavaScript could use a generalized serialization format, something
                  that understands functions and prototypes and undefined. That language
                  could be derived from JSON, but JSON should never be that language
                  because it would violate the goal of being minimal, stable, and
                  independent.
                • Shelby Moore
                  ... Agreed this is an exciting frontier, based on a conceptually RISC-like, yet data complete model that is JSON. A point I grasped probably due to your
                  Message 8 of 19 , May 26, 2008
                  • 0 Attachment
                    Douglas Crockford wrote:
                    > I anticipate that there will be other languages that are based on or
                    > inspired by JSON. These will push the model in interesting directions.
                    > But there will be always be a simple JSON because there is a benefit
                    > in having something that is reliable and minimally adequate.

                    Agreed this is an exciting frontier, based on a conceptually
                    RISC-like, yet data complete model that is JSON. A point I grasped
                    probably due to your writings (your blog included) over the past year.
                    However, even after reading your much appreciated insight and
                    experience, I still think JSON is missing one crucial literal type.

                    > In my view, JavaScript's undefined was a mistake. There are too many
                    > similar falsy values in the the language.

                    In my view, false, null, and undefined are not all similar, and each
                    is a critical fundamental primitive for the semantic web. Boolean and
                    null Object both are referent data types. The Boolean false is
                    fundamental binary gate of digital logic. The null Object means
                    semantically we require an Object, but we don't know which object.
                    Requiring an Object is not the same as requiring a true/false outcome.
                    Requiring an Object and getting a null outcome, is not the same as
                    requiring a Boolean and getting false. Those are very different semantics.

                    The undefined Object means we know the identifier that refers, but the
                    referent (to which it refers) is unspecified. Thus, undefined is
                    necessary for distinguishing between unspecified data and data that
                    the application does not contemplate. If we use null to represent
                    unspecified data, then we no longer have a way to distinguish between
                    unspecified data (no referent) and specified data (referent) that has
                    no value.

                    If I have an application that expects a data structure with two
                    members, "one" and "two", then if it receives:

                    { "one" : null }

                    then it is clear that "one" is specified as no value, but it is
                    ambiguous whether the received data is saying that "two" is
                    unspecified, or if it is saying that "two" is not even contemplated.
                    In the latter case, the sending application might be in error, because
                    it doesn't even contemplate "two" in it's output.

                    If { "one" : null, "two" : null } is received, then it is ambiguous
                    whether "one" and "two" are specified as no value, or whether they
                    were contemplated but are not specified.

                    Whereas, if { "one" : null, "two" : undefined } is received, then
                    there is no ambiguity.

                    The distinction between null and undefined becomes more noticeable,
                    when one gets into specifying semantics in data structures, as became
                    evident when I decided to use the pair names as the semantic data
                    types implicitly, to avoid the overhead (and reduction in human
                    readability) of an orthogonal schema language. In my formulation, the
                    data is the schema, via inheritance. Thus the critical need to
                    distinguish between optional, unspecified and required, no value in
                    inheritance.


                    > Most programmers are
                    > confused about the differences.

                    That may be true. Douglas, afaik your web site (crockford.com) has
                    helped clarify many things about JavaScript, perhaps my explanations
                    above may be helpful in this regard at some point. I claim no
                    copyright nor recognition. Be it as it may.

                    > The undefined property is
                    > inconsistent. It indicates a missing member, but it can be the value
                    > of present members.

                    As I detailed above, I think it is critical to view undefined as the
                    type of the identifier, not of the referent. Then there is no
                    inconsistency, because undefined is not concerned with assignment, as
                    it is not a property of the referent of the identifier. You are not
                    asking "is the identifier not attached to a referent?", but instead
                    "was this identifier assigned to undefined?". Per my first post of
                    this thread, one can distinguish from a property identifier which was
                    never assigned to undefined, using the 'in' operator, but that is
                    orthogonal to the question that "=== undefined" asks about the identifier.

                    > As a name, it is implemented as a writable global
                    > variable, a feature with alarming security and reliability
                    > consequences.

                    Thanks for making me aware that this.undefined is a writable property
                    of the global this object. I did some testing in Firebug's console,
                    and even after undefined has been modified (e.g. this.undefined =
                    null;), new instances of uninitialized var or missing properties,
                    still get assigned to the original undefined object. So it means to be
                    safe against malicious code, we need to re-initialize upon any call backs:

                    var undefined;
                    this.undefined = undefined;


                    > This is not a feature to fight for. It is a mistake that
                    > cannot be rectified.

                    Why can't the writeable security hole be rectified?


                    > At the time I formulated JSON, JavaScript was not a popular language,
                    > and it was generally held in very low esteem. One of my design goals
                    > was to hide JavaScript's defects. That is why keys must be quoted in
                    > JSON, because I did not want to explain JavaScript's absurd reserved
                    > word policy in the JSON spec. The undefined value was excluded for the
                    > similar reasons.

                    I am not following you? If undefined was a literal in JSON, afaics it
                    would work fine in eval(), as long as this.undefined is patched up
                    before calling eval, just in case it was overwritten.


                    > JavaScript could use a generalized serialization format, something
                    > that understands functions and prototypes and undefined. That language
                    > could be derived from JSON, but JSON should never be that language
                    > because it would violate the goal of being minimal, stable, and
                    > independent.

                    That may be true, but that is not at all what I am here for. I am
                    also working on a language agnostic, minimalistic primitive syntax. I
                    am merely trying to enable the minimum necessary to launch the
                    Semantic Web, in much simpler manner than all that RDF+XML complexity.
                    I simply believe that automated code reuse is not only for science
                    fiction. And I believe OpenSocial, MySpace, FaceBook, etc are all
                    wrong and very vulnerable.
                  • Shelby Moore
                    Douglas, your insightful replies are helping me to understand better your and my concepts. Perhaps it was Einstein who said (paraphrased) that until one is
                    Message 9 of 19 , May 26, 2008
                    • 0 Attachment
                      Douglas, your insightful replies are helping me to understand better
                      your and my concepts. Perhaps it was Einstein who said (paraphrased)
                      that until one is forced to explain their concepts, they don't really
                      understand them well. I appreciate the sound reasoning that got JSON
                      to where it is today, but I remain yet unconvinced that undefined is
                      not a critically missing literal. I remain open-minded, and I
                      respectfully do not desire to drag us into a long debate. Afaics,
                      there is nothing wrong with JSON remaining static, and then some
                      proposal for JSON+undefined for those who need it. I hope that is
                      harmonious.
                    • Shelby Moore
                      ... On further thought, this is not any more a security concern, than JavaScript (or the web page) itself. Agreed, it should be made read-only to prevent
                      Message 10 of 19 , May 27, 2008
                      • 0 Attachment
                        > Douglas Crockford wrote:
                        > > As a name, it is implemented as a writable global
                        > > variable, a feature with alarming security and reliability
                        > > consequences.

                        On further thought, this is not any more a security concern, than
                        JavaScript (or the web page) itself. Agreed, it should be made
                        read-only to prevent against non-malicious untended modification.

                        There is no security in any JavaScript, because rogue code can change
                        any user code. The entire current concept of browser security is
                        conceptually flawed, and the solution is as follows:

                        http://www.coolpage.com/commentary/economic/shelby/security.html

                        The only trustable web page is the one where ALL referents (resources)
                        come from a trusted source. Security is fundamentally trust.
                        Increasing granularity of trust, decreases security conflicts. I give
                        a proposal using sub-frames to segregate private data from the rest of
                        the web page.
                      • Tatu Saloranta
                        How about moving security-related discussion to another thread or group? And with regards to adding keyword undefined to json, I would be strongly against
                        Message 11 of 19 , May 27, 2008
                        • 0 Attachment
                          How about moving security-related discussion to another thread or group?

                          And with regards to adding keyword 'undefined' to json, I would be
                          strongly against adding any such language-specific keywords. As a
                          non-javascript-user of json I would find it a rather silly and useless
                          addition. Json's goals are not, as far as I understand, to be
                          javascript(-only) serialization format, but rather serve as a
                          minimalistic generalized object notation.

                          -+ Tatu +-

                          On Tue, May 27, 2008 at 3:04 AM, Shelby Moore <shelby@...> wrote:
                          >> Douglas Crockford wrote:
                          >> > As a name, it is implemented as a writable global
                          >> > variable, a feature with alarming security and reliability
                          >> > consequences.
                          >
                          > On further thought, this is not any more a security concern, than
                          > JavaScript (or the web page) itself. Agreed, it should be made
                          > read-only to prevent against non-malicious untended modification.
                          >
                          > There is no security in any JavaScript, because rogue code can change
                          > any user code. The entire current concept of browser security is
                          > conceptually flawed, and the solution is as follows:
                          >
                          > http://www.coolpage.com/commentary/economic/shelby/security.html
                          >
                          > The only trustable web page is the one where ALL referents (resources)
                          > come from a trusted source. Security is fundamentally trust.
                          > Increasing granularity of trust, decreases security conflicts. I give
                          > a proposal using sub-frames to segregate private data from the rest of
                          > the web page.
                          >
                          >
                          > ------------------------------------
                          >
                          > Yahoo! Groups Links
                          >
                          >
                          >
                          >
                        • Greg Patnude
                          I ve been following this particular thread with some interest -- Most modern programming languages HAVE defined undefined -- Undefined is NOT 0 and NOT 1,
                          Message 12 of 19 , May 27, 2008
                          • 0 Attachment
                            I've been following this particular thread with some interest --

                            Most modern programming languages HAVE defined "undefined" --
                            Undefined is NOT 0 and NOT 1, and NOT 'null' AND NOT 'not null', and
                            NOT true and NOT false... Bottom line: undefined is actually defined
                            as something that is NOT DEFINED...

                            As far as JSON goes -- by definition: it is "JavaScript Object
                            Notation" -- so -- on the technical definition -- JSON is in fact a
                            "JavaScript-ONLY" object notation mechanism. The great thing about
                            JSON is that it is pretty much generalized -- there are
                            implementations in a ton of different languages.

                            I have thought for a long time that there probably ought to be a
                            strict "generalized object-notation" group [GONF ? Generalized Object
                            Notation Format ???].

                            An underlying issue with JSON is the name itself -- because JSON is
                            so versatile, has support in a multitude of languages, and 100%
                            flexible [I use it for many things including: server-server
                            communication in lieu of serialized objects, client-server
                            communication, browser-server [Web 2.x]] --

                            I use JSON everywhere: even when not using a JavaScript client or web
                            browser -- that is the beauty of it...

                            Maybe it is time to think about how big JSON really is and how
                            completely useful it is as a high-speed data transfer mechanism and
                            re-consider the name -- it ain't just plain ol' JavaScript anymore...
                            It REALLY IS a multi-purpose, multi-platform data interchange and
                            transmission format. Maybe it shuld be called something more
                            appropriate to it's function.





                            --- In json@yahoogroups.com, "Tatu Saloranta" <tsaloranta@...> wrote:
                            >
                            > How about moving security-related discussion to another thread or
                            group?
                            >
                            > And with regards to adding keyword 'undefined' to json, I would be
                            > strongly against adding any such language-specific keywords. As a
                            > non-javascript-user of json I would find it a rather silly and
                            useless
                            > addition. Json's goals are not, as far as I understand, to be
                            > javascript(-only) serialization format, but rather serve as a
                            > minimalistic generalized object notation.
                            >
                            > -+ Tatu +-
                            >
                            > On Tue, May 27, 2008 at 3:04 AM, Shelby Moore <shelby@...> wrote:
                            > >> Douglas Crockford wrote:
                            > >> > As a name, it is implemented as a writable global
                            > >> > variable, a feature with alarming security and reliability
                            > >> > consequences.
                            > >
                            > > On further thought, this is not any more a security concern, than
                            > > JavaScript (or the web page) itself. Agreed, it should be made
                            > > read-only to prevent against non-malicious untended modification.
                            > >
                            > > There is no security in any JavaScript, because rogue code can
                            change
                            > > any user code. The entire current concept of browser security is
                            > > conceptually flawed, and the solution is as follows:
                            > >
                            > > http://www.coolpage.com/commentary/economic/shelby/security.html
                            > >
                            > > The only trustable web page is the one where ALL referents
                            (resources)
                            > > come from a trusted source. Security is fundamentally trust.
                            > > Increasing granularity of trust, decreases security conflicts. I
                            give
                            > > a proposal using sub-frames to segregate private data from the
                            rest of
                            > > the web page.
                            > >
                            > >
                            > > ------------------------------------
                            > >
                            > > Yahoo! Groups Links
                            > >
                            > >
                            > >
                            > >
                            >
                          • Mark Joseph
                            I agree with this totally. And frankly I am finding the current discussion a bit boring and a waste of time. Best, Mark P6R, Inc On Tue, 27 May 2008 09:46:23
                            Message 13 of 19 , May 27, 2008
                            • 0 Attachment
                              I agree with this totally. And frankly I am finding the
                              current discussion a bit boring and a waste of time.

                              Best,
                              Mark
                              P6R, Inc


                              On Tue, 27 May 2008 09:46:23 -0700
                              "Tatu Saloranta" <tsaloranta@...> wrote:
                              > How about moving security-related discussion to another
                              >thread or group?
                              >
                              > And with regards to adding keyword 'undefined' to json,
                              >I would be
                              > strongly against adding any such language-specific
                              >keywords. As a
                              > non-javascript-user of json I would find it a rather
                              >silly and useless
                              > addition. Json's goals are not, as far as I understand,
                              >to be
                              > javascript(-only) serialization format, but rather serve
                              >as a
                              > minimalistic generalized object notation.
                              >
                              > -+ Tatu +-
                              >
                              > On Tue, May 27, 2008 at 3:04 AM, Shelby Moore
                              ><shelby@...> wrote:
                              >>> Douglas Crockford wrote:
                              >>> > As a name, it is implemented as a writable global
                              >>> > variable, a feature with alarming security and
                              >>>reliability
                              >>> > consequences.
                              >>
                              >> On further thought, this is not any more a security
                              >>concern, than
                              >> JavaScript (or the web page) itself. Agreed, it should
                              >>be made
                              >> read-only to prevent against non-malicious untended
                              >>modification.
                              >>
                              >> There is no security in any JavaScript, because rogue
                              >>code can change
                              >> any user code. The entire current concept of browser
                              >>security is
                              >> conceptually flawed, and the solution is as follows:
                              >>
                              >> http://www.coolpage.com/commentary/economic/shelby/security.html
                              >>
                              >> The only trustable web page is the one where ALL
                              >>referents (resources)
                              >> come from a trusted source. Security is fundamentally
                              >>trust.
                              >> Increasing granularity of trust, decreases security
                              >>conflicts. I give
                              >> a proposal using sub-frames to segregate private data
                              >>from the rest of
                              >> the web page.
                              >>
                              >>
                              >> ------------------------------------
                              >>
                              >> Yahoo! Groups Links
                              >>
                              >>
                              >>
                              >>

                              -------------------------
                              Mark Joseph, Ph.D.
                              President and Secretary
                              P6R, Inc.
                              http://www.p6r.com
                              408-205-0361
                              Fax: 831-476-7490
                              Skype: markjoseph_sc
                              IM: (Yahoo) mjoseph8888
                              (AIM) mjoseph8888
                            • Michal Migurski
                              Agree++. Shelby, when you ve got a next-generation semantic web 3.0 mashup demo that desperately needs undefined , we ll be able to see whether it s a useful
                              Message 14 of 19 , May 27, 2008
                              • 0 Attachment
                                Agree++.

                                Shelby, when you've got a next-generation semantic web 3.0 mashup demo
                                that desperately needs "undefined", we'll be able to see whether it's
                                a useful concept. Until then, I agree with Douglas that it's a waste
                                of energy to pull it in to JSON.

                                FWIW, I can see how the decision to include "javascript" in the JSON
                                name is leading to a mountain of confusion, but I've always seen the
                                format as a way to interop between a variety of languages and
                                platforms. "Undefined" would really muddy those waters.

                                -mike.

                                On May 27, 2008, at 10:30 AM, Mark Joseph wrote:

                                > I agree with this totally. And frankly I am finding the
                                > current discussion a bit boring and a waste of time.
                                >
                                > Best,
                                > Mark
                                > P6R, Inc
                                >
                                > On Tue, 27 May 2008 09:46:23 -0700
                                > "Tatu Saloranta" <tsaloranta@...> wrote:
                                > > How about moving security-related discussion to another
                                > >thread or group?
                                > >
                                > > And with regards to adding keyword 'undefined' to json,
                                > >I would be
                                > > strongly against adding any such language-specific
                                > >keywords. As a
                                > > non-javascript-user of json I would find it a rather
                                > >silly and useless
                                > > addition. Json's goals are not, as far as I understand,
                                > >to be
                                > > javascript(-only) serialization format, but rather serve
                                > >as a
                                > > minimalistic generalized object notation.
                                > >
                                > > -+ Tatu +-
                                > >
                                > > On Tue, May 27, 2008 at 3:04 AM, Shelby Moore
                                > ><shelby@...> wrote:
                                > >>> Douglas Crockford wrote:
                                > >>> > As a name, it is implemented as a writable global
                                > >>> > variable, a feature with alarming security and
                                > >>>reliability
                                > >>> > consequences.
                                > >>
                                > >> On further thought, this is not any more a security
                                > >>concern, than
                                > >> JavaScript (or the web page) itself. Agreed, it should
                                > >>be made
                                > >> read-only to prevent against non-malicious untended
                                > >>modification.
                                > >>
                                > >> There is no security in any JavaScript, because rogue
                                > >>code can change
                                > >> any user code. The entire current concept of browser
                                > >>security is
                                > >> conceptually flawed, and the solution is as follows:
                                > >>
                                > >> http://www.coolpage.com/commentary/economic/shelby/security.html
                                > >>
                                > >> The only trustable web page is the one where ALL
                                > >>referents (resources)
                                > >> come from a trusted source. Security is fundamentally
                                > >>trust.
                                > >> Increasing granularity of trust, decreases security
                                > >>conflicts. I give
                                > >> a proposal using sub-frames to segregate private data
                                > >>from the rest of
                                > >> the web page.
                                > >>
                                > >>
                                > >> ------------------------------------
                                > >>
                                > >> Yahoo! Groups Links
                                > >>
                                > >>
                                > >>
                                > >>
                                >
                                > -------------------------
                                > Mark Joseph, Ph.D.
                                > President and Secretary
                                > P6R, Inc.
                                > http://www.p6r.com
                                > 408-205-0361
                                > Fax: 831-476-7490
                                > Skype: markjoseph_sc
                                > IM: (Yahoo) mjoseph8888
                                > (AIM) mjoseph8888
                                >
                                >

                                ----------------------------------------------------------------
                                michal migurski- mike@...
                                415.558.1610





                                [Non-text portions of this message have been removed]
                              • Gregg Irwin
                                Hi Greg, GP As far as JSON goes -- by definition: it is JavaScript Object GP Notation -- so -- on the technical definition -- JSON is in fact a GP
                                Message 15 of 19 , May 27, 2008
                                • 0 Attachment
                                  Hi Greg,

                                  GP> As far as JSON goes -- by definition: it is "JavaScript Object
                                  GP> Notation" -- so -- on the technical definition -- JSON is in fact a
                                  GP> "JavaScript-ONLY" object notation mechanism.

                                  I've never interpreted it that way. I always took the JS part to mean
                                  that JSON's syntax was based on JavaScript's syntax, which gives you
                                  context (and a nice acronym :). From what I've read, JSON is meant to
                                  be language independent. If they change the JS/ECMA standard to
                                  something that doesn't support that goal, JSON won't work well with
                                  its namesake.

                                  On undefined, I don't think JSON needs it, even if some languages have
                                  it. In my language of choice, as with some others, dealing with
                                  undefined can make for more work, and not much more value (IMO). If
                                  it's undefined, why is it there? Not to say it's never useful, but it
                                  doesn't seem crucial in an object notation like JSON.

                                  Ironically, it would probably be easier for me to add undefined/unset
                                  support to the JSON module for REBOL (my language of choice) than it
                                  is to support strings as keys in objects (which it can't, really).

                                  --Gregg
                                • John Cowan
                                  ... Not code. Not name. Not mind. Not things. Always changing, yet never changing. ... A cocky novice once said to Stallman: I can guess why the editor is
                                  Message 16 of 19 , May 27, 2008
                                  • 0 Attachment
                                    Greg Patnude scripsit:

                                    > Most modern programming languages HAVE defined "undefined" --
                                    > Undefined is NOT 0 and NOT 1, and NOT 'null' AND NOT 'not null', and
                                    > NOT true and NOT false... Bottom line: undefined is actually defined
                                    > as something that is NOT DEFINED...

                                    "Not code. Not name. Not mind. Not things. Always changing, yet never changing."

                                    > As far as JSON goes -- by definition: it is "JavaScript Object
                                    > Notation" -- so -- on the technical definition -- JSON is in fact a
                                    > "JavaScript-ONLY" object notation mechanism.

                                    A cocky novice once said to Stallman: "I can guess why the editor
                                    is called Emacs, but why is the justifier called Bolio?" Stallman
                                    replied forcefully, "Names are but names. 'Emack & Bolio's' is the
                                    name of a popular ice cream shop in Boston-town. Neither of these men
                                    had anything to do with the software."

                                    His question answered, yet unanswered, the novice turned to go,
                                    but Stallman called to him: "Neither Emack nor Bolio had anything
                                    to do with the ice cream shop, either."

                                    This koan is called the "ice cream koan".

                                    --
                                    John Cowan cowan@... http://www.ccil.org/~cowan
                                    Thor Heyerdahl recounts his attempt to prove Rudyard Kipling's theory
                                    that the mongoose first came to India on a raft from Polynesia.
                                    --blurb for Rikki-Kon-Tiki-Tavi
                                  • Tatu Saloranta
                                    On Tue, May 27, 2008 at 10:19 AM, Greg Patnude wrote: ... I don t think it s true for most (modern) programming languages; although it
                                    Message 17 of 19 , May 27, 2008
                                    • 0 Attachment
                                      On Tue, May 27, 2008 at 10:19 AM, Greg Patnude <gpatnude@...> wrote:
                                      ...
                                      > Most modern programming languages HAVE defined "undefined" --
                                      > Undefined is NOT 0 and NOT 1, and NOT 'null' AND NOT 'not null', and
                                      > NOT true and NOT false... Bottom line: undefined is actually defined
                                      > as something that is NOT DEFINED...

                                      I don't think it's true for most (modern) programming languages;
                                      although it may be true for most _scripting_ languages. This is
                                      different from, say, null, which has a counterpart in about any
                                      language including c and c++ (unlike someone claimed earlier).

                                      > As far as JSON goes -- by definition: it is "JavaScript Object
                                      > Notation" -- so -- on the technical definition -- JSON is in fact a
                                      > "JavaScript-ONLY" object notation mechanism. The great thing about

                                      Not really: you can not derive semantics from etymology. Names are
                                      just names and like you mention, they can lead to intuitive yet
                                      incorrect guesses.

                                      To understand goals, one could consult the author... and Doug has
                                      already pointed out his view on the matter.

                                      Additionally reading the JSON RFC, http://www.ietf.org/rfc/rfc4627.txt
                                      one can find:

                                      "JavaScript Object Notation (JSON) is a lightweight, text-based,
                                      language-independent data interchange format"

                                      Nowhere does it say anything about coupling with Javascript.
                                      My understanding is that just JS syntax was used. In a funny way makes
                                      sense: JavaScript has little to do with Java, beyond syntax; and
                                      similarly JSON just took syntax from Javascript (or, from Java, if you
                                      will).

                                      Apologies for prolonging this flogging of a dead horse,

                                      -+ Tatu +-
                                    • Shelby Moore
                                      Thanks to all that replied to my prior post. This is my reply to you all. 1) Undefined is essential in languages that treat identifiers as hash keys of an
                                      Message 18 of 19 , May 27, 2008
                                      • 0 Attachment
                                        Thanks to all that replied to my prior post. This is my reply to you all.

                                        1) Undefined is essential in languages that treat identifiers as hash
                                        keys of an object (i.e. modern dynamic scripting languages). Static
                                        identifier languages, can simulate dynamic identifiers with a hash
                                        collection class.

                                        2) Afair, K&R (ANSI) C did not have null, only void*. In K&R (ANSI) C,
                                        void is not valid in a conditional nor assignment expression, and
                                        identifiers are not dynamically constructed and typed.

                                        3) Undefined is a critical primitive in any hash object data
                                        structure, that supports inheritance. I already explained my logic in
                                        prior post.

                                        This will all become more obvious to you all, as someone actually
                                        brings real world application of Semantic Web to reality.

                                        4) I agree with Douglas not to modify the JSON standard specification,
                                        but rather to usurp it (JSON+ or whatever it may be called) if the
                                        market shall be so. I believe in de facto (competing) standards, not
                                        in centrally managed ones, which is one of the main motivations of the
                                        development I am working on. I believe in a million points of light
                                        competing. I believe in freedom and liberty.

                                        Okay enough talk from me. Your comments have encouraged me. Thanks
                                        very much to all. And best wishes to all as well.
                                      • doug furcht
                                        Mark thinks it s boring... we should all move on. ... From: Mark Joseph To: json@yahoogroups.com Sent: Tuesday, May 27, 2008 11:30:20 AM
                                        Message 19 of 19 , May 28, 2008
                                        • 0 Attachment
                                          Mark thinks it's boring... we should all move on.


                                          ----- Original Message ----
                                          From: Mark Joseph <mark@...>
                                          To: json@yahoogroups.com
                                          Sent: Tuesday, May 27, 2008 11:30:20 AM
                                          Subject: Re: [json] Re: JSON syntax grammar is missing 'undefined' literal value


                                          I agree with this totally. And frankly I am finding the
                                          current discussion a bit boring and a waste of time.

                                          Best,
                                          Mark
                                          P6R, Inc

                                          On Tue, 27 May 2008 09:46:23 -0700
                                          "Tatu Saloranta" <tsaloranta@gmail. com> wrote:
                                          > How about moving security-related discussion to another
                                          >thread or group?
                                          >
                                          > And with regards to adding keyword 'undefined' to json,
                                          >I would be
                                          > strongly against adding any such language-specific
                                          >keywords. As a
                                          > non-javascript- user of json I would find it a rather
                                          >silly and useless
                                          > addition. Json's goals are not, as far as I understand,
                                          >to be
                                          > javascript(- only) serialization format, but rather serve
                                          >as a
                                          > minimalistic generalized object notation.
                                          >
                                          > -+ Tatu +-
                                          >
                                          > On Tue, May 27, 2008 at 3:04 AM, Shelby Moore
                                          ><shelby@coolpage. com> wrote:
                                          >>> Douglas Crockford wrote:
                                          >>> > As a name, it is implemented as a writable global
                                          >>> > variable, a feature with alarming security and
                                          >>>reliability
                                          >>> > consequences.
                                          >>
                                          >> On further thought, this is not any more a security
                                          >>concern, than
                                          >> JavaScript (or the web page) itself. Agreed, it should
                                          >>be made
                                          >> read-only to prevent against non-malicious untended
                                          >>modification.
                                          >>
                                          >> There is no security in any JavaScript, because rogue
                                          >>code can change
                                          >> any user code. The entire current concept of browser
                                          >>security is
                                          >> conceptually flawed, and the solution is as follows:
                                          >>
                                          >> http://www.coolpage .com/commentary/ economic/ shelby/security. html
                                          >>
                                          >> The only trustable web page is the one where ALL
                                          >>referents (resources)
                                          >> come from a trusted source. Security is fundamentally
                                          >>trust.
                                          >> Increasing granularity of trust, decreases security
                                          >>conflicts. I give
                                          >> a proposal using sub-frames to segregate private data
                                          >>from the rest of
                                          >> the web page.
                                          >>
                                          >>
                                          >> ------------ --------- --------- ------
                                          >>
                                          >> Yahoo! Groups Links
                                          >>
                                          >>
                                          >>
                                          >>

                                          ------------ --------- ----
                                          Mark Joseph, Ph.D.
                                          President and Secretary
                                          P6R, Inc.
                                          http://www.p6r com
                                          408-205-0361
                                          Fax: 831-476-7490
                                          Skype: markjoseph_sc
                                          IM: (Yahoo) mjoseph8888
                                          (AIM) mjoseph8888





                                          [Non-text portions of this message have been removed]
                                        Your message has been successfully submitted and would be delivered to recipients shortly.