For our stuff, I started with rails, just found it too hard to get started. I had to decide what the tables looked like, how I was going to divide the data, write a model for every table then connect it to a page.
With UCW, I write code which connects to a function call. Simple.
And here's a list of different web server resources: http://www.cl-user.net/asp/tags/web-servers
Portable AllegroServe: Lisp Webserver (with Webactions Session control) http://sourceforge.net/projects/portableaserve/
ASDF: Another System Definition Facility http://www.cliki.net/asdf
CLSQL: Database interface Library http://www.cliki.net/CLSQL
UFFI: Universal Foreign Function Interface http://www.cliki.net/UFFI
http://www.gigamonkeys.com/book/practical-web-programming-with-allegroserve.html
Just curious, after this, in what order should I learn things? It seems that most CL libraries have very sparse docs. Does that mean I should develop a habit of reading the source code of everything I learn?
Another thing I was looking for when I last evaluated LISP was an OR-mapping library. I can't go back to executing SQL statements from within my code - that is also so 90ies. I think there is one project underway to provide OR-mapping for LISP, but I am not sure if it was ready for prime time yet.
HTML-TEMPLATE: http://weitz.de/html-template/
Tal support in yaclml, part of Uncommonweb: http://common-lisp.net/project/bese/yaclml.html
CLSQL provides object/relational mapping; it's quite good: http://clsql.b9.com/
The problem I have always encountered with trying to build a solution in lisp is the lack of resources. It sounds like lisp is inching closer and closer to the critical mass where tools and libraries will finally be available for more then a few uses.
This lisper I know said "Don't hold your breath." when I suggested that lisp may be coming close to getting its due. I know that there are alot of people out there like me. We will start using lisp when the great advantages of the language finally outweigh the disadvantages of implementation. I think its just a matter of time until lisp is a clear win, as long as the tools come.
I've never written a line of lisp. I want to save my lisp cherry for a time when I can have more "Yay" then "Doh" while I learn and use it. I think it will be worth the wait.
-little documentation
-little support
-limited libraries
-super tiny communities
Compare that to LAMP(P = PHP, Perl, or Python) and Rails. Their communities, docs, support, libs, etc are HUGE compared to the tiny fractured Lisp ecosystem.
Do LAMP and Rails have their own problems? Of course. But the point is that they have been proven over and over and over. Lisp is certainly sexy and will give you that toned body and hairy chest you always wanted, but beyond Viaweb and Reddit (cough, cough) can you readily (and without searching) think of other top sites that have delivered a major hit with it? Second, can you think of any hit Lisp sites that didn't involve Paul Graham? I rest my case.
I'd love to see this change, but unfortunately that's the current reality.
------
Update: After doing some searching, I also found ITA's backend Orbitz software written in Lisp. That certainly was a hit and is also used by many other systems. The author is Carl de Marcken and this hit is also mentioned in pg's "Great Hackers" essay.
So, Two Lisp Hit-makers:
Paul Graham, Phd in CS from Harvard
Carl de Marcken, Phd in CS from MIT
So, if you're a Phd in CS from one of the top programs in the world - I'd say Go For It! ;)
Now I'm at a point where my venture absolutely must succeed. I'll take every advantage I can get.
I apologize for such a late answer. I'm always fighting with email. I'm definitively not good at it because I'm not able to answer at a decent pace.
Hi Manuel. I've just been playing with Hop. Well done. It's just beautiful. A couple of questions about it: first, the bigloo web server- is this completely necessary? I guess one of 4 things would need to happen for hop to be totally ideal: Bigloo implements light-weight threads Gambit-scheme style so that it can have erlang-like load capacity ( http://www.sics.se/~joe/apachevsyaws.html ) (most preferable option, IMO, though I have no idea what your feelings are here. To me this would make bigloo light-years ahead of all other scheme imps.) I have tried several things concerning the multi-threading. You can read our FairThreads proposal (http://www.inria.fr/mimosa/Manuel.Serrano). When I did this study I though that FairThreads was a decent solution. Now that's no longer clear to me. Hop does not use Fair threads but Posix like threads. I'm quite aware of all the troubles that come with this kind of threads. I have not considered an Erlang-like solution yet but that's something I could envision.
Get hop to work with a gambit-scheme server instead of bigloo (where would i start with this? can you point me to relevant points in the code?) No, I think that you cannot. Hop is really not a portable Scheme program. It extensively relies on Bigloo features. I'm afraid that you will have to rewrite entirely. It's not a huge program but it is not that small either. The problem is that it uses a lot of libraries that you would have to re-implement too. All in all it's about 40.000 lines of Scheme code. I don't really recommend to try to re-implement that (except if you are very brave ;-)
Get hop to work with mod_lisp (less preferable, IMO) No. I don't think that a solution too. Hop needs to be running permanently. That is two successive requests must be handled in the same execution environment (i.e., the first request may set a global variable that is read by the second request). Hence, even if you want to use Apache you will be forced to have a server running somewhere and you will have to establish a communication between Apache and that server. Why not directly using Hop as a server?
Second item is the overall latency and possible redundancy... actually, I don't know how to phrase the problem- but it boils down to this, I counted over 27 distinct "connecting to server" cycles when you click on the "weblets" tab of the Hop Home page. It took quite a while re-establishing the connection to the server 27 times. Are there thoughts on overcoming this? Not really but... First, the Hop server supports keep-alive connections. This should help. Then, honestly, I have hoped to find time to optimize the server for months. I have not found that time yet but I think that I will have it around the end of Spring. At that moment, I will study the problem you are mentioning.
However, I'm using Hop on a daily basis. Even more, in order to push it to its limits, I'm using it as my regular proxy. That is all my HTTP connections, on all my machines, go through a Hop proxy/server. The performance are acceptable. That is, I'm not annoyed by an important slow down due to Hop.
Thanks again!! You are welcome. Thanks for the encouragements.
-- Manuel
the point is the language is only one piece of the equation -- you want to be spending your time developing your app, not rolling your own supporting elements (templating systems, init scripts, form validators, sql bindings/mappers, etc.) and of course i'm sure others will point out reddit's switch from lisp to python.
Assuming that the most precious commodity is development time. I'd say rails/django don't even come close to UCW in getting stuff done.