A few computer languages,
Perl (perl.apache.org),
PHP (php.apache.org), and
Java java.apache.org)
interoperate and tightly integrate with the
Apache web server.
While many Smalltalk systems are being used on the web
and often implement their own web servers, because the HTTP protocol that drives a web server
and web browsers is really simple to implement, the
Apache has the largest market share of any web server. It makes sense to have
Smalltalk tightly integrated with the Apache Web server. Any computer language
that tightly intergrates and interoperates with the Apache Web server in an
Open Source manner can gain prominance in the Web Site and Web Applications Market. Smalltalk
has an excellent potential to be the engine behind many powerful, yet to be built, web sites.
The FastCGI Protocol
Integrating Smalltalk systems with Apache can be done using the popular and upto date
FastCGI protocol module that has seen many years of development. The FastCGI protocol is avaliable for the primary web servers and works with multiple operating systems.
A major problem facing any lanuage being integrated with major web servers and operating systems is writing the code to work with all the possilble combinations of servers, OSes and Smalltalk virtual machines. Yick. A Smalltalk based FastCGI client implementation can solve this problem quickly.
What is FastCGI?
"FastCGI is a language independent, scalable, open extension to CGI that provides high performance and persistence without the limitations of server specific APIs. ... FastCGI applications use (TCP or Unix) sockets to communicate with the web server. This scalable architecture allows applications to run on the same platform as the web server or on many machines scattered across an enterprise network. ... FastCGI applications are fast because they're persistent. There is no per-request startup and initialization overhead. This makes possible the development of applications which would otherwise be impractical within the CGI paradigm (e.g. a huge Perl script, or an application which requires a connection to one or more databases)." - Module mod_fastcgi
What does this mean for Smalltalk?
By implementing a FastCGI client in Smalltalk level code and by installing the FastCGI module for our
favorite web server we can easily integrate these two systems. As a significant added benefit it's possible
that a Smalltalk based FastCGI client object framework would be portable across ALL versions of Smalltalk.
The only problem that I can forsee is the variations in the TCP/IP libraries on the various Smalltalk systems.
It seems to be very straightforward to implement the FastCGI client side of the protocol.
First Version Now Released For Alpha Testing Tomas Vanak, Peter W. Lount and
Smalltalk.org are please to announce the first publicly available test version of FastCGI for Smalltalk or as Tomas calls it "FasTalk".
You can obtain the download here after reading the license. FasTalk is released under a BSD style license.
FastCGI Smalltalk Email List
The email list is now suspended due to spam. We will have a new one in operation once the anti-spam system is in place.
Instructions for using the FastCGI for Smalltalk
Read and agree to the license. Download the Smalltalk source code for FasTalk FastCGI for Smalltalk. Install it in at least a Squeak Smalltalk 3.0 image. You'll need to install mod_fastcgi within your Apache setup. Configure your Apache web server so that at least one web site has the fastCGI configuration options set. Start the FastCGI application server. It sometimes takes a bit of fiddling to get the configuration correct but once you do you'll have a working FastCGI implementation to play with. Enjoy.
FastCGI Smalltalk Documentation
A preliminary instance diagram of the alpha version of FastCGI is available. Download it here:
FastCGI_Smalltalk_design_v1b.pdf (7.38 KB).
We still need each FastCGI class documented, anyone up to it?