[Some notes on a talk given by Peter Sergeant]
Back in ancient history, when people started creating dynamic web pages, the CGI specification was born. It defined the interface between the web server and the program that was generating the page. The program read input from STDIN and the environment, and wrote output to STDOUT.
CGI turned out to be a rather slow way to generate dynamic pages. So, people developed faster methods such as mod_perl and fastcgi. Each of these had different interfaces. This made it hard, for example, to take a CGI application and run it under mod_perl,