CGI Services Architecture
Recent Pages

Environment Variables
Handling Concurrency
Template Processing
RDF Responses
RDF Messaging
URL Rewriting
File Uploads
Sample Authenticated Se ...
HTTP Cookies
Client Authentication

Links on Twitter
CSA Home
Table of Contents



User ID

Campaigns petition banner

CGI Services Architecture

A Shell-Based Programming Environment for the Web

CSA is a small application development framework for the World Wide Web, based on the classical "UNIX 1 toolkit" approach, aimed at the rapid prototyping of Web-based application services. CSA tries to make "scripting-up" Web applications as quick and handy as writing the usual shell scripts for the command-line. And, most important, it tries to bring to the Web the same shell+utilities paradigm which is at the very hart of the UNIX programming style. This document is still in an early stage of its development. It may not be very well structured, nor very clear, neither easy to follow, and it represents only a first attempt at providing some documentation on the software project that it describes. The document may undergo extensive rewriting and restructuring in the future, and it may take time before it becomes a really useful reference manual.

Table of Contents


CSA, Copyright (c) 2000-2017 by Carlo Strozzi.

CSA comes with ABSOLUTELY NO WARRANTY; for details refer to the GNU General Public License.

You should have received a copy of the GNU General Public License along with this work; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

What is CSA

CSA is a small application development environment for the World-Wide Web. CSA tends to be biased in favour of GNU/Linux. This means that, wherever it matters, CSA makes use of the GNU versions of the various UNIX commands, as those are the ones that are usually packaged together with the Linux O.S. And among the many Linux "distributions" available nowadays, CSA has been developed entirely on Debian, although it should run just as fine on any other common Linux distributions. CSA is Free Software, released under the terms of the GNU General Public License. As such, it fully qualifies as Open Source Software.

For a thorough understanding of this paper you need to have a fairly good knowledge of the UNIX/Linux Programming Environment, that is the shell and the main shell utilities, like sed, grep, find, etc. Some basic familiarity with the C language won't hurt either. The utilities I refer to in the rest of this document are the GNU incarnations of such tools. It is definitely required that the reader has a good knowledge of the rc shell, a rather minimal scripting language which syntax is half-way between the C-shell and the Bourne shell. Of course it is necessary to know the technology the World Wide Web is built upon, and in particular how the CGI (Common Gateway Interface) works.

Most important, to really grasp the CSA philosophy I definitely recommend that you read the resources listed in the bibliography.

Conventions used

In the text that follows, prescriptive rules are identified by upper-case adverbs like " SHOULD", " SHOULD NOT", " MUST" and " MUST NOT", while descriptive adverbs are left in lower-case.

Bug reports

There is a mailing list for discussions related to CSA. The address is To subscribe simply send a message to with the phrase " subscribe csa-devel" (without the quotes) in the message subject.

Please send bug reports (fixes are most welcome) to the same list Always include as much information as possible, especially the content of file csa.version, which is created in the CSA installation directory during install. By bug reports I mean not just errors in the code, but also grammatical mistakes, typos and bad English constructions in the documentation, as English isn't my native language.

About this Web site

Pages on this Web site are organized in the form of a Wiki. These pages can be edited by any standard Web browser -- provided you have been granted the proper authorization.


  1. B. Kernighan and R. Pike, "The UNIX Programming Environment", Prentice Hall, Englewood Cliffs, NJ, 1985.
  2. Mike Gancarz, "The UNIX Philosophy", Digital Press, 1995.
  3. Tim Goodwin, rc shell.
  4. R. Manis, E. Schaffer and R. Jorgensen, "UNIX Relational Database Management", Prentice Hall, Englewood Cliffs, NJ, 1988.
  5. Alfred V. Aho, Brian W. Kernighan and Peter J. Weinberger, "The AWK Programming Language", Addison-Wesley, 1988.
  6. L.J. Arthur and T. Burns, "UNIX Shell Programming", John Wiley & Sons, 1997.
  7. Dale Dougherty, "sed & awk", O'Reilly, 1992.
  8. Paul Prescod, Second Generation Web Services.
  9. Roger L. Costello, REST - Representational State Transfer.
  10. John Roll, Starbase - an ASCII relational database for UNIX.
  11. Carlo Strozzi, NoSQL - A Relational Database Management System.
  12. Safely Creating Temporary Files in Shell Scripts, by David Isecke.
  13. The Art of Unix Programming, by Eric Steven Raymond.

1 UNIX is a registered trademark of The Open Group. All brand names, product names, or trademarks mentioned in this publication belong to their respective owners.

Trackbacks (0) | New trackback | Print

This Web Site is Copyright © 2007,2008,2009,2010 Carlo Strozzi, Some Rights Reserved
site map | recent changes | disclaimer