I am not opposed to having a shim to support an API compatible with older releases. It's not even particularly difficult:
https://gist.github.com/3950124 I certainly did not anticipate this release causing significant problems for application or library developers, and if it did then I apologize. However, I will stand by the decision to update the API. data.json 0.1.x suffered from what I consider, in retrospect, to be poor design decisions. Those were decisions I made over two years ago in a hasty effort to please too many people who had conflicting goals: - Converting field names to keywords by default can create invalid keywords. - Keywordization is controlled by a bare boolean argument with little indication of its function. - Inconsistent styles of optional arguments: read-json and write-json take booleans as bare arguments, json-str and print-json use keyword-value pairs. - Parsing a string and parsing from a stream -- two very different operations -- are conflated in a single function. - Functions are not consistently named: json-str, read-json, write-json - Function names repeat the name of the library, rather than using namespaces. It was impossible to solve some of these problems without introducing breaking changes. Looking at the Clojure Library Coding Standards[1], data.json 0.2.0 does a better job at "Use good names" and "Unroll optional named arguments." It fails at "Java's commitment to not break existing code." In this instance, I believe the tradeoff is worthwhile because the new API can be more easily extended with additional arguments. This also opened up a place to add new features such as customizable conversion functions, the most-commonly-requested feature for this library. Per Rich's directive[2], I cannot yet make a 1.0.0 release. Therefore, 0.1.3 to 0.2.0 is the largest version bump I can make and the best indication I can give of breaking changes. I hope that these improvements to the API bring this library closer to a 1.0.0-ready state. I'm not trying to make anyone's life more difficult, just trying to provide useful tools. -S [1]: http://dev.clojure.org/display/design/Library+Coding+Standards [2]: http://dev.clojure.org/display/design/Contrib+1.0.0+Releases -- 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
