* Ring is used in production environments
* We worry about maintaining backward compatibility
* We encourage new functionality to be tried out in 3rd-party libraries
* The SPEC and API has been stable for over 6 months
So perhaps we should start considering what we think needs doing
that's preventing a 1.0 stable release.
Here's my attempt at a Ring to-do list, categorized by priority.
+ Things that must be fixed before 1.0
* Fix wrap-lint bug that prevents seqs being recognised as valid
response bodies
+ Things that should be fixed before 1.0
* Allow multipart-params to choose its storage mechanism. Temp-files
aren't allowed on some cloud platforms (e.g. GAE).
* Factor out content-type guessing functions in file-info into their
own utility namespace.
+ Things that would be nice to have for 1.0
(Nothing I can think of that shouldn't begin life as a 3rd-party
library. Accept-parsing should probably be a 3rd-party library at
first.)
+ Things that can wait under version 1.1 or later
* Asynchronous HTTP and Websocket support.
Can anyone else think of anything that we're missing or needs fixing?
Mark, what's your take on this?
- James
* Fix wrap-lint bug that prevents seqs being recognised as valid
response bodies
I suspect not. It's probably something that will be tried out in
third-party libraries (Compojure and lein-ring both support it), and
only when it proves itself a sound solution will it make its way into
Ring.
So more of a 1.1 thing than a 1.0 thing.
- James
Michael: Your code doesn't lint seqs of nonstrings, though it certainly is a step in the right direction.(and (seq? %) (every? string? %))is a more thorough test for conformance to the spec. `every?` iterates over the seq, though; possibly compromising laziness benefits. Hearing from a laziness expert on this point would be nice.
I don't think we need to worry about laziness; Clojure should make
that transparent to us.
Also, the SPEC says:
> Each element of the seq is sent to the client as a string.
So the seq doesn't necessarily have to be strings, just objects that
can be turned into strings (e.g. all objects, since everything has a
toString method).
I think we're overthinking this, so I've fixed this with a simple seq?
check and pushed the changes to GitHub. If we happen to need anything
more complex or thorough in future we can do so with another patch.
- James