From svc at mac.com Thu Feb 2 09:04:48 2006 From: svc at mac.com (Sven Van Caekenberghe) Date: Thu, 2 Feb 2006 10:04:48 +0100 Subject: [kpax-devel] Re: s-sysdep warning In-Reply-To: <78d2fb3b0602012140o5a673d03j345e534eb69cb265@mail.gmail.com> References: <78d2fb3b0602012140o5a673d03j345e534eb69cb265@mail.gmail.com> Message-ID: <689C7A89-BC82-4617-9322-FF35B586772E@mac.com> Robert, On 02 Feb 2006, at 06:40, Robert Brown wrote: > I recently compiled s-sysdep with SBCL. It warned about a declare > inside > a progn. Here is a diff that eliminates the warning. Thanks for the patch. I added some more declarations so that on my SBCL (0.9.7 on Mac OS X) there are no more warnings. Sven -- Sven Van Caekenberghe - http://homepage.mac.com/svc Beta Nine - software engineering - http://www.beta9.be My Open Source Common Lisp Software: http://homepage.mac.com/svc/open-source-common-lisp.html From frido at q-software-solutions.de Fri Feb 3 12:22:00 2006 From: frido at q-software-solutions.de (Friedrich Dominicus) Date: Fri, 03 Feb 2006 13:22:00 +0100 Subject: [kpax-devel] A first round of questions Message-ID: <87lkwsmy3b.fsf@flarge.here> Ok here we go, how do I have to setup mod-lisp-server to get it running properly? At the moment and as is at the moment there are problems with paths to the diverse example files. My Apache setup looks like this at the moment: LoadModule lisp_module /usr/lib/apache2/modules/mod_lisp2.so # LispServer 127.0.0.1 3000 "ucw" LispServer 127.0.0.1 2001 "kpax" SetHandler lisp-handler That's obviously not sufficient to get the examples running properly. Regards Friedrich From scaekenberghe at common-lisp.net Sat Feb 4 13:55:17 2006 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Sat, 4 Feb 2006 14:55:17 +0100 Subject: [kpax-devel] Installing KPAX Message-ID: <9DBC2965-0AF8-4425-B4DA-CC41E994917E@common-lisp.net> Installing KPAX The KPAX Common Lisp Web Application Framework is open-source software, licensed under the LLGPL. All other packages that KPAX depends on (cl-who, puri, s-utils, s-sysdeps, s-base64 and one or both of s-http-server and aserver, as well as all packages that these depends on) are also open-source. This means that you have to first obtain their source code, compile it and finally load it. In order to manage compilation and load order of individual files, as well as compilation and load order of whole packages, KPAX and all its dependencies, are using ASDF. This means that compilation and loading are very easy, once things are set up properly. KPAX allows you to write web applications that can be deployed in three different contexts: - behind apache using mod_lisp - behind portable allegro server - standalone using s-http-server KPAX strictly separates static from dynamic content. In the first context, apache handles static content directly, while dynamic content goes through mod_lisp that passes it to your common lisp system - this is the preferred production setup. In the second and third context, both the static and the dynamic content are handled by your common lisp system - might be easier during development and is certainly easier There is one internal ASDF system called kpax-core that contains most of the framework's code but none of the execution contexts. Three ASDF systems corresponding to each of the three contexts, called kpax- mod-lisp, kpax-paserve and kpax-s-http-server, allow you to load only the code you really need. The main ASDF system called kpax simply loads both the kpax-mod-lisp and kpax-s-http-server systems. If necessary, please refer to the documentation and tutorials for ASDF, ASDF-INSTALL and ASDF-UPGRADE first. The simplest and most end user friendly way to install KPAX is to use ASDF-INSTALL and ASDF-UPGRADE. Provided your common lisp implementation already knows about ASDF (or you have configured it to load ASDF automatically) and have at least configured the systems ASDF-INSTALL and ASDF-UPGRADE, you can do as follows: CL-USER 1 > (asdf:operate 'asdf:load-op :asdf-install) ... CL-USER 2 > (asdf-install:install :kpax) ... And you're done! In subsequent runs, you no longer have to install KPAX and can just load it: CL-USER 1 > (asdf:operate 'asdf:load-op :asdf-install) ... CL-USER 2 > (asdf:operate 'asdf:load-op :kpax) ... To check for newer versions, use ASDF-UPGRADE: CL-USER 1 > (asdf:operate 'asdf:load-op :asdf-upgrade) ... CL-USER 2 > (asdf-upgrade:report) ... CL-USER 2 > (asdf-upgrade:upgrade) ... Alternatively, you could manually download each package linking your asdf systems manually as you go. Both of the above approaches only deal with released (or packaged) versions of each package. You could also opt to retrieve one or more packages from their source code repositories (CVS, Subversion or DARCS). This might give you earlier access to patches but might be less stable (you however have manual control over which packages you want to upgrade). The KPAX source code is in a DARCS repository. To retrieve the source tree, do: $ darcs get http://www.beta9.be/darcs/kpax Subsequently, you can keep up to date by doing: $ darcs pull inside the kpax directory. Sven PS: All feedback is welcome. -- Sven Van Caekenberghe - http://homepage.mac.com/svc Beta Nine - software engineering - http://www.beta9.be "Lisp isn't a language, it's a building material." - Alan Kay From scaekenberghe at common-lisp.net Sat Feb 4 14:59:21 2006 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Sat, 4 Feb 2006 15:59:21 +0100 Subject: [kpax-devel] Runnning KPAX Message-ID: Runnning KPAX KPAX is a framework that allows you to write Web Applications in Common Lisp that can be deployed in three different contexts: - behind apache using mod_lisp - behind portable allegro server - standalone using s-http-server KPAX strictly separates static from dynamic content. In the first context, apache handles static content directly, while dynamic content goes through mod_lisp that passes it to your common lisp system - this is the preferred production setup. In the second and third context, both the static and the dynamic content are handled by your common lisp system - might be easier during development and is certainly easier There is one internal ASDF system called kpax-core that contains most of the framework's code but none of the execution contexts. Three ASDF systems corresponding to each of the three contexts, called kpax- mod-lisp, kpax-paserve and kpax-s-http-server, allow you to load only the code you really need. The main ASDF system called kpax simply loads both the kpax-mod-lisp and kpax-s-http-server systems. There is one additional ASDF system called kpax-examples that loads KPAX together with a large number of examples (but not all of the examples that ship with the distribution). The examples demonstrate and test various features of KPAX. Once you have installed KPAX as described elsewhere, the best way to start is to load the kpax-examples ASDF system, run, try and study them. The easiest way to run KPAX is using the standalone s-http-server context. CL-USER 1 > (asdf:operate 'asdf:load-op :kpax-examples) ... CL-USER 2 > (in-package :kpax-user) ... KPAX-USER 3 > (start-kpax :server-class 's-http-server) ;; S-HTTP-SERVER: Started a new server on port 2001 # KPAX-USER 4 > (start-web-app :helloworld1) ;; KPAX 20060204T141819 INFO Started # :STARTED Starting a web application is necessary to host the static content. There are two kinds of static content: there is server and webapp scoped static content. Most webapps are only using server scoped static content. It is sufficient to start one webapp to host all server scoped static content for all other webapps. Once you are developing interactively, both KPAX itself as well as all webapps keep on running and don't have to be manipulated any further. Now vist the URL http://localhost:2001/kpax/dynamic/helloworld1 The following output will appear where *standard-output* goes to (probably your Common Lisp listener): ;; S-HTTP-SERVER: [1] Handling # ;; S-HTTP-SERVER: Running KPAX s-http-server-handler ;; KPAX 20060204T141828 INFO handling /kpax/dynamic/helloworld1 ;; KPAX 20060204T141828 INFO created new session 7PD7MUCY1YBY [1014097705201358350] ;; KPAX 20060204T141828 INFO replied 552 bytes with status OK ;; S-HTTP-SERVER: [1] Handling # ;; S-HTTP-SERVER: Serving #P"/Users/sven/.asdf-install-dir/site/kpax/ example/static/nx.css" ;; S-HTTP-SERVER: [2] Handling # ;; S-HTTP-SERVER: Serving #P"/Users/sven/.asdf-install-dir/site/kpax/ example/static/helloworld1/kpax-movie-poster.jpg" ;; S-HTTP-SERVER: [3] Handling # ;; S-HTTP-SERVER: [3] No handler found for # As you can see, there are two kinds of logging going on: both KPAX itself as well as S-HTTP-SERVER are logging what they are doing. Once you have static content hosting debugged, you might want to switch of S-HTTP-SERVER logging: KPAX-USER 5 > (setf (s-http-server:get-log-stream (get-s-http-server *web-app-server*)) nil) There is one special webapp called PI that is somewhat like a debug interface to KPAX, to access it visit the URL http://localhost:2001/ kpax/dynamic/pi Log in using the username 'admin' and the password 'trustno1'. The PI webapp shows a list of all available web applications. Out of the box, KPAX runs in debug mode which means that all errors (unhandled conditions) result in the debugger being invoked in your running common lisp system. Clicking on one of the inspect buttons will show an inspector in your running Lisp environment. Running KPAX under mod_lisp is even easier, just call #'START-KPAX. However, apache and mod_lisp have to be configured first (see elsewhere). Running KPAX in the context of portable allegro server is left as an exercise (but is similar to the s-http-server context). Sven PS: All feedback is welcome. -- Sven Van Caekenberghe - http://homepage.mac.com/svc Beta Nine - software engineering - http://www.beta9.be "Lisp isn't a language, it's a building material." - Alan Kay From scaekenberghe at common-lisp.net Sat Feb 4 15:23:50 2006 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Sat, 4 Feb 2006 16:23:50 +0100 Subject: [kpax-devel] Installation and Configuration of mod_lisp Message-ID: <02F14CBA-788A-4049-B0B0-0CBCF1A68846@common-lisp.net> Installation and Configuration of mod_lisp KPAX is a framework that allows you to write Web Applications in Common Lisp that can be deployed in different contexts. The preferred production context is to use apache with mod_lisp. KPAX strictly separates static from dynamic content. Apache handles static content directly, while dynamic content goes through mod_lisp that passes it to your common lisp system. To install and run the Lisp code for KPAX, see elsewhere. This part is about installing and configuring apache and mod_lisp to deploy KPAX web applications. It might be usefull to first test running your webapps under the simpler s-http-server context to make sure the Lisp part is OK. mod_lisp is an apache module to forward request handling from apache to arbitrary application servers, in casu KPAX. Please refer to general mod_lisp documentation if necessary. First you need to install mod_lisp from its source file: $ apxs -i -c mod_lisp.c this will compile and install the module where apache expects it. Next you need to change some apache config files, first by loading and adding the mod_lisp module in your main apache config file (httpd.conf) in /etc/httpd/ (or where apache expects them) LoadModule lisp_module libexec/httpd/mod_lisp.so AddModule mod_lisp.c Make these additions at the end of the existing LoadModule and AddModule directive lists. We place the rest of the configuration in a seperate file named kpax.conf, so we have to include that file in the main httpd.conf: Include /etc/httpd/kpax.conf The contents of the kpax specific include file (the exact location could be different on your system) might look like this: LispServer 127.0.0.1 2001 "kpax" SetHandler lisp-handler Alias /kpax/static/ "/my/path/to/kpax-static/" Options FollowSymLinks AllowOverride None Order allow,deny Allow from all So if mod_lisp is present, we configure the lisp server by specifying the host address, port and extra identification string of the kpax server; then we set up two main handlers: one for the dynamic content and one for the static content. The default location (directory) for static content (for the examples) is the directory 'static' in the 'example' subdirectory of the KPAX source code distribution. In most cases, the alias directive alone will be sufficient. Finally restart apache using apachectl restart In lisp, start KPAX using KPAX-USER 1 > (start-kpax) ... And visit a webapp URL like http://localhost/kpax/dynamic/helloworld1 or http://localhost/kpax/dynamic/pi Provided you have installed the KPAX examples as described elsewhere. Both apache and apache2 (mod_lisp and mod_lisp2) are supported. Note that KPAX is normally configured to only allow mod_lisp requests from an apache running on the same machine (localhost) - this can be overridden. Note that when experimenting with configuration options it is sometimes necessary to restart apache or KPAX or both (connections between apache's mod_lisp and KPAX are kept alive). Sven PS: All feedback is welcome. -- Sven Van Caekenberghe - http://homepage.mac.com/svc Beta Nine - software engineering - http://www.beta9.be "Lisp isn't a language, it's a building material." - Alan Kay From scaekenberghe at common-lisp.net Sat Feb 4 15:28:59 2006 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Sat, 4 Feb 2006 16:28:59 +0100 Subject: [kpax-devel] A first round of questions In-Reply-To: <87lkwsmy3b.fsf@flarge.here> References: <87lkwsmy3b.fsf@flarge.here> Message-ID: <10D9FA4C-F656-48D0-94BC-5DBA8A0F875A@common-lisp.net> Friedrich, On 03 Feb 2006, at 13:22, Friedrich Dominicus wrote: > Ok here we go, how do I have to setup mod-lisp-server to get it > running properly? > > At the moment and as is at the moment there are problems with paths to > the diverse example files. > > My Apache setup looks like this at the moment: > > LoadModule lisp_module /usr/lib/apache2/modules/mod_lisp2.so > > > # LispServer 127.0.0.1 3000 "ucw" > LispServer 127.0.0.1 2001 "kpax" > > SetHandler lisp-handler > > > That's obviously not sufficient to get the examples running properly. Please refer to the other messages that I posted to the KPAX-DEVEL mailing list today. If you still have problems, don't hesitate to contact me! Sven From alexander.rose at weirdbyte.de Sat Feb 11 22:29:27 2006 From: alexander.rose at weirdbyte.de (Alexander Rose) Date: Sat, 11 Feb 2006 23:29:27 +0100 Subject: [kpax-devel] Re: kpax error In-Reply-To: <83F6BF87-CFFD-4675-95E9-0809E88CFD32@mac.com> References: <43CFC009-021E-4ECF-AF79-5D8219416798@weirdbyte.de> <83F6BF87-CFFD-4675-95E9-0809E88CFD32@mac.com> Message-ID: <6EC56496-0707-43C4-A9BB-5007F60138AD@weirdbyte.de> Hello Sven, Am 11.02.2006 um 20:27 schrieb Sven Van Caekenberghe: > Where did you find the version of CMUCL that you are using - maybe > I can quickly try it myself ? > It's release cmucl-19b-ppc-darwin. I got it from an official mirror, e.g. http://ftp.isr.ist.utl.pt/pub/MIRRORS/cmucl/ I just tried it with the 19c release. The error message is slightly different. I attached it. > Last time I checked, CMUCL on Mac OS X did not have multiprocessing/ > multithreading, which is (obviously) required for KPAX (through S- > SYSDEPS), but maybe there is progress on that front ? > The manual says: "2.20 Lisp Threads: CMUCL supports Lisp threads for the x86 platform." So what does it mean? I could start a server with s-http-server, which also depends on S-SYSDEPS, doesn't it? > Personally, I am a LispWorks on Mac OS X user, for which there is > free trial version. > Maybe it's worth a try, but i am so comfortable with emacs. > There is now a new mailing list for KPAX called KPAX-DEVEL: Ok, I will use it. Alex ------- (asdf:oos 'asdf:load-op :kpax) Error in function (SETF LOGICAL-PATHNAME-TRANSLATIONS): "home" names a CMUCL search-list [Condition of type SIMPLE-ERROR] Restarts: 0: [CONTINUE] Clobber search-list host with logical pathname host 1: [CONTINUE] Return NIL from load of #P"/Users/ alexanderrose/.asdf-install-dir/systems/kpax.asd". 2: [RETRY] Retry installation 3: [ABORT] Abort handling SLIME request. 4: [ABORT] Return to Top-Level. Backtrace: 0: ((SETF LOGICAL-PATHNAME-TRANSLATIONS) (("**;*.*.*" "home:**/ *.*")) "home") 1: (LISP::SLOLOAD #) 2: (LISP::INTERNAL-LOAD #P"/Users/alexanderrose/.asdf-install-dir/ systems/kpax.asd" #P"/Users/alexanderrose/.asdf-install-dir/site/kpax/ kpax.asd" :ERROR :SOURCE) 3: (LISP::INTERNAL-LOAD #P"/Users/alexanderrose/.asdf-install-dir/ systems/kpax.asd" #P"/Users/alexanderrose/.asdf-install-dir/site/kpax/ kpax.asd" :ERROR NIL) 4: (LOAD #P"/Users/alexanderrose/.asdf-install-dir/systems/ kpax.asd" :VERBOSE NIL :PRINT ...) 5: (ASDF:FIND-SYSTEM "kpax" NIL)[:OPTIONAL] 6: ((PCL:FAST-METHOD ASDF:FIND-COMPONENT (# T)) #<#1=unused-arg> #<#1#> #<#1#> "kpax" ...) 7: ((LABELS ASDF::DO-ONE-DEP (PCL:FAST-METHOD ASDF::TRAVERSE #)) ASDF:COMPILE-OP :KPAX NIL) 8: ((LABELS ASDF::DO-DEP (PCL:FAST-METHOD ASDF::TRAVERSE #)) ASDF:COMPILE-OP (:KPAX)) 9: ((PCL:FAST-METHOD ASDF::TRAVERSE (ASDF:OPERATION ASDF:COMPONENT)) (#(3 5 9 10) . #(# # # # #)) # # #) 10: ((LABELS ASDF::DO-DEP (PCL:FAST-METHOD ASDF::TRAVERSE #)) ASDF:COMPILE-OP ("kpax-examples")) 11: ((PCL:FAST-METHOD ASDF::TRAVERSE (ASDF:OPERATION ASDF:COMPONENT)) (#(3 5 9 10) . #(# # # # #)) # # #) 12: (ASDF:OPERATE ASDF:LOAD-OP "kpax-examples")[:OPTIONAL] 13: ((LABELS ASDF-INSTALL::ONE-ITER ASDF-INSTALL:INSTALL) (:KPAX)) 14: (ASDF-INSTALL:INSTALL :KPAX) 15: (ASDF-INSTALL:INSTALL 1)[:EXTERNAL] 16: (SWANK::EVAL-REGION "(asdf-install:install :kpax) " T) 17: ("DEFSLIMEFUN LISTENER-EVAL") 18: (SWANK::CALL-WITH-BUFFER-SYNTAX #) 19: ("DEFUN EVAL-FOR-EMACS") 20: ((METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK NIL (T T)) #<#1=unused-arg> #<#1#> # #) 21: ("DEFUN HANDLE-REQUEST") 22: ("DEFUN CALL-WITH-CONNECTION") 23: (SWANK::CALL-WITH-REDIRECTED-IO # #) 24: (SWANK::CALL-WITH-CONNECTION # #) 25: (SWANK::HANDLE-REQUEST #) 26: (SWANK::PROCESS-AVAILABLE-INPUT # #) 27: ((FLET SWANK::HANDLER SWANK::INSTALL-SIGIO-HANDLER)) 28: (SWANK-BACKEND::SIGIO-HANDLER #<#1=unused-arg> #<#1#> #<#1#>) 29: ("Foreign function call land") 30: (LISP::SUB-SERVE-EVENT NIL 0) 31: (SYSTEM:WAIT-UNTIL-FD-USABLE 0 :INPUT NIL) 32: (LISP::DO-INPUT #) 33: (LISP::INPUT-CHARACTER # NIL (LISP::*EOF*)) 34: (LISP::SYNONYM-IN # NIL (LISP::*EOF*)) 35: (LISP::TWO-WAY-IN #, Output = #> NIL (LISP::*EOF*)) 36: (LISP::SYNONYM-IN # NIL (LISP::*EOF*)) 37: (READ-CHAR # NIL (LISP::*EOF*) NIL) 38: (LISP::READ-PRESERVING-WHITESPACE-INTERNAL # NIL (:EOF) T) 39: (LISP::READ-PRESERVING-WHITESPACE-INTERNAL # NIL (:EOF) NIL) 40: (LISP::READ-PRESERVING-WHITESPACE-INTERNAL 4 # NIL (:EOF) ...)[:EXTERNAL] 41: (LISP::READ-INTERNAL # NIL (:EOF) NIL) 42: (READ # NIL (:EOF) NIL) 43: (LISP::%TOP-LEVEL) 44: ((LABELS LISP::RESTART-LISP SAVE-LISP)) From scaekenberghe at common-lisp.net Sun Feb 12 09:45:43 2006 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Sun, 12 Feb 2006 10:45:43 +0100 Subject: [kpax-devel] Re: kpax error In-Reply-To: <6EC56496-0707-43C4-A9BB-5007F60138AD@weirdbyte.de> References: <43CFC009-021E-4ECF-AF79-5D8219416798@weirdbyte.de> <83F6BF87-CFFD-4675-95E9-0809E88CFD32@mac.com> <6EC56496-0707-43C4-A9BB-5007F60138AD@weirdbyte.de> Message-ID: <404D1ED6-1482-40D4-BED3-886991FCE63A@common-lisp.net> Alex, On 11 Feb 2006, at 23:29, Alexander Rose wrote: > Hello Sven, > > Am 11.02.2006 um 20:27 schrieb Sven Van Caekenberghe: >> Where did you find the version of CMUCL that you are using - maybe >> I can quickly try it myself ? > It's release cmucl-19b-ppc-darwin. I got it from an official > mirror, e.g. http://ftp.isr.ist.utl.pt/pub/MIRRORS/cmucl/ I installed CMUCL 19b on my machine and tried loading some of my packages and KPAX using ASDF. In the file kpax.asd there is a logical pathname translation for HOME being added, which fails on CMUCL. So I conditionalized it out - this was checked in and I did a new release. > I just tried it with the 19c release. The error message is slightly > different. I attached it. > >> Last time I checked, CMUCL on Mac OS X did not have >> multiprocessing/multithreading, which is (obviously) required for >> KPAX (through S-SYSDEPS), but maybe there is progress on that front ? > The manual says: "2.20 Lisp Threads: CMUCL supports Lisp threads > for the x86 platform." > So what does it mean? I could start a server with s-http-server, > which also depends on S-SYSDEPS, doesn't it? Well, any multi threaded web server needs threads ;-) Indeed, S-HTTP- SERVER seems to work at first sight, but that is because there are some sensible defaults in S-SYSDEPS that result in S-HTTP-SERVER working as a single threaded server, which is OK for very simple usage. KPAX has slightly more complex examples for which most browsers issue multiple concurrent requests, hence you need a multi threaded server. As I said before: S-SYSDEPS is not completely ported to CMUCL and above that CMUCL on Mac OS X does not have multi threading which is required. So you are out of luck with CMUCL, and SBCL for that matter, on Mac OS X. OpenMCL should work, but I haven't tried that in a long time. >> Personally, I am a LispWorks on Mac OS X user, for which there is >> free trial version. > Maybe it's worth a try, but i am so comfortable with emacs. Give it a try, LispWorks' editor looks and feels enough like Emacs to fool casual users. If you really want, you can run SWANK in LispWorks and connect from your regular Emacs using SLIME. Another option (but not with the free version) is to make a TTY image and use that under Emacs+SLIME. There are so much nice tools in LispWorks' IDE (like the debugger and stepper, but there are many more) that once you really get to known them, you will never want to go back - at least that is how I feel it: I still use and like Emacs+SLIME (for example on Linux), and SLIME does have some unique features, but I am much more productive in LispWorks. >> There is now a new mailing list for KPAX called KPAX-DEVEL: > Ok, I will use it. Welcome! Sven From scaekenberghe at common-lisp.net Tue Feb 28 12:00:29 2006 From: scaekenberghe at common-lisp.net (Sven Van Caekenberghe) Date: Tue, 28 Feb 2006 13:00:29 +0100 Subject: [kpax-devel] Re: Question regarding Rebel Without A Cause. In-Reply-To: <25009641.1141114191090.JavaMail.root@web01ps> References: <25009641.1141114191090.JavaMail.root@web01ps> Message-ID: On 28 Feb 2006, at 09:09, rfilardo at bigpond.net.au wrote: > Hi Sven, > > I'm a Mac programming in the process of building a web application, > and not > knowing Java but having heard of Lisp, decided if I had to learn a > new language > I'll choose Lisp. This has lead me to your fine essay "Rebel > Without A Cause". > (I've also read Nicky Peter's thesis "Can a 40 year old Computer > Programming > Language do Web Applications?".) > > I have a question regarding the deployment: what was the purpose > of the second > Xserve? From your comments in the Future section it appears that > neither KPAX > or Portable AllegroServe have load balancing or failover support. > > I'm also interested in your comments regarding reusable components > for the > presentation layer and the need for infrastructure to ease complex > form processing. > At this stage I'm still in the project definition/requirements > gathering stage but I > hope I can contribute to KPAX in this area as way of saying thanks! > > Regards, > Raffaele Filardo Raffaele, Thanks for your interest in KPAX. The article 'Rebel With A Cause' could indeed use some updating. For over more than a year, development and deployment are now using LispWorks. The described application was also extended. But above all, KPAX itself was rewritten from the ground up. There are now additions for form processing, menus, and much more, as well as a large list of interesting examples. Please consult the recent source code - documentation is still mostly lacking - http:// homepage.mac.com/svc/kpax There is now a new mailing list for KPAX called KPAX-DEVEL: http://common-lisp.net/cgi-bin/mailman/listinfo/kpax-devel hosted at common-lisp.net. I intend to use this mailing list for discussions related to KPAX, but also to any of my other packages on which KPAX is dependent or related to: S-UTILS, S-SYSDEPS, S-BASE64, S-HTTP-CLIENT and S-HTTP- SERVER. Regarding load balancing and failover support: KPAX was designed to support load balancing with session affinity (but this has not yet been proven), failover (which requires session sharing/ synchronization) was not yet implemented, but should be possible. Apart from the application described in 'Rebel With A Cause', KPAX has been used successfully in two more production applications here. Regards, Sven