findinglisp wrote:There are many types of "standardization," some light weight, some heavyweight. I do not think that heavyweight standardization (going back to ISO to update the CL spec, for instance) is the right way to do things. It's far too slow and expensive, as you rightly point out. I'd much rather see a couple of implementations get together and hammer out the issues and get it done. You don't need perfect agreement, only critical mass. Market share can make up that critical mass, too. Essentially, you just need to separate the world of implementations into "those that are leading" and "those that are following." If the "weight" of the leaders is sufficient, then people writing libraries and such will naturally gravitate that direction.
...
But make no mistake, I have no desire to revisit my decision toward Ruby or work around things on the Lisp side. Instead of diagnosing my individual situation, let's just get on with correcting Lisp deficiencies. Lisp is a great language. It just needs to stop apologizing for its deficiencies and start competing in the market.
...
So, in summary, I like Lisp. But Lisp, and Lisp advocates, need to stop apologizing for the language and just get on with it. As soon as Lisp becomes easier to use than Ruby and Python, it will rule the world. Of that, I have no doubt. Until then, anybody looking to implement an application will end up taking the path of least resistance, and depending on the application, that might be something other than Lisp.
OK, I'll bite. It'd be only fair, since I started this discussion

I've been clambering up a bunch of learning curves for the last couple of years, and am about to bring a couple of (initially basic) web-stores online. In the process, a couple of libraries have evolved, one lower-level, one more site-specific. It shouldn't be too painful to hammer them into something generally useful, which can be used as the start of a lisp version of PHP: here, download this tarball, unzip it and set up the ASDF symlinks, and you're good to go. It'll be a nice big bundle of Hunchentoot, CL-WHO, Postmodern, CLSQL and all their dependencies, because that's what I'm currently using. I'm actually migrating from CLSQL to Postmodern, but I can see the benefits of having both available (as well as the drawback of the potential confusion). Added to that will be my own library of low-level utilities to simplify things like database access, which should do a reasonably useful job of shortening the learning curve. Not a complete solution, but a start.
I've been mulling over this batteries-included thing for a few days, and thinking in particular on the comments about standardisation. I see a potential solution, albeit not a trivial or quickly-completed one. You're right in that lightweight standardisation is the way to go: figure out which libraries
do play nice together, and hope like hell we have critical mass. Failing that, figure out where we're short of critical mass, and see what needs doing to get us there. I haven't sufficient cluefulness to help out with networking or threading libraries, but now that I've accumulated a few clues, should be able to help around the edges.
A certain degree of fascism may be needed among the leaders, taking the stance of "here's the standard set of implementations and libraries. Use the others as you will, but these are what we're using as common ground." I'm guessing that SBCL, ACL and Lispworks will be the main implementations, plus whatever's working best on Windows (not meaning to be dismissive of the implementations, I just don't use Windows so don't know). I expect it'll be Common Lisp all over again, being politics rather than art, but like CL, might just work well enough to concentrate the efforts. Ideally, we'll wind up with a set of libraries and implementations that can be mixed and matched at will, which is what Perl, Python and Ruby have as a major advantage.
It'll be a month or two before I stand any chance of refactoring my libraries to the point that I'm willing to let anybody else see the code, but I'm keen to release it to save anybody else having to climb up the same curves (except by choice). I'm also keen to try coming up with a generalised solution for using CL scripts at the command-line, but rather suspect that it's just not a scripting language.
Now I'll throw in my own main grievance: it's wonderful to have all these libraries available for download, it really is. But it'd be so much nicer to know which version we're downloading, especially when you're trying to maintain consistency. I have to maintain my own repositories just to know which versions I'm dealing with. "It's the latest" isn't quite as helpful as it might be, and doesn't tell me whether it's later than the "latest" version I downloaded three months ago. I may be missing something, but I'm pretty sure I also can't define an ASDF config file that tells ASDF-install to pull and load dependencies whose versions either match specific values, or fall within a certain range. That's my next project after lisp-php, right?