CL-HTTP

Last updated
CL-HTTP
Original author(s) John C. Mallery
Initial release1994;30 years ago (1994)
Written in Common Lisp
Operating system Cross-platform
Type Web Server
License Proprietary
Website cl-http.org:8000 [ dead link ]

CL-HTTP is a web server, client and proxy written in Common Lisp. It is based on its own web application framework. It was written by John C. Mallery "in about 10 days" [1] starting in 1994 on a Symbolics Lisp Machine. In the same year a port to Macintosh Common Lisp was done. In 1996 CL-HTTP became the first web server to support the HTTP 1.1 protocol. [2] It runs on Unix, Linux, BSD variants, Mac OS X, Solaris, Symbolics Genera and Microsoft Windows.

Contents

CL-HTTP makes extensive use of the Common Lisp Object System and the macro capabilities of Lisp. [3]

Usage

CL-HTTP has been used in several applications. ELM-ART is a tutoring system written in Common Lisp using CL-HTTP. [4] It was later commercialized as NetCoach. [5] InterBook is an early adaptive electronic textbook, also written on top of CL-HTTP. [6] Cl-HTTP has been used very early as a tool to create web interfaces for applications. [7] [8] [9] [10]

In 1994, CL-HTTP was used by the W3C and other members of the IETF HTTP working group to develop reference clients and servers for HTTP 1.1. [11]

Most prominently, CL-HTTP was used during the presidency of Bill Clinton as the web server for the White House Publications web site. It distributed the daily press releases and official publications of the Clinton Administration. [12]

CL-HTTP has been used as an example of a non-trivial Lisp application. [13]

Features

Related Research Articles

<span class="mw-page-title-main">Common Lisp</span> Programming language standard

Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ANSI INCITS 226-1994 (S2018). The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived from the ANSI Common Lisp standard.

In computing, Common Gateway Interface (CGI) is an interface specification that enables web servers to execute an external program to process HTTP or HTTPS user requests.

<span class="mw-page-title-main">Transclusion</span> Including one data set inside another automatically

In computer science, transclusion is the inclusion of part or all of an electronic document into one or more other documents by reference via hypertext. Transclusion is usually performed when the referencing document is displayed, and is normally automatic and transparent to the end user. The result of transclusion is a single integrated document made of parts assembled dynamically from separate sources, possibly stored on different computers in disparate places.

In software engineering, multitier architecture is a client–server architecture in which presentation, application processing and data management functions are physically separated. The most widespread use of multitier architecture is the three-tier architecture.

In computer science, an object can be a variable, a data structure, a function, or a method. As regions of memory, objects contain a value and are referenced by identifiers.

Hypermedia, an extension of the term hypertext, is a nonlinear medium of information that includes graphics, audio, video, plain text and hyperlinks. This designation contrasts with the broader term multimedia, which may include non-interactive linear presentations as well as hypermedia. It is also related to the field of electronic literature. The term was first used in a 1965 article written by Ted Nelson.

CLiki is an open source wiki application written in Common Lisp, that was under development from 2002 to 2005.

REST is a software architectural style that was created to guide the design and development of the architecture for the World Wide Web. REST defines a set of constraints for how the architecture of a distributed, Internet-scale hypermedia system, such as the Web, should behave. The REST architectural style emphasises uniform interfaces, independent deployment of components, the scalability of interactions between them, and creating a layered architecture to promote caching to reduce user-perceived latency, enforce security, and encapsulate legacy systems.

Flavors, an early object-oriented extension to Lisp developed by Howard Cannon at the MIT Artificial Intelligence Laboratory for the Lisp machine and its programming language Lisp Machine Lisp, was the first programming language to include mixins. Symbolics used it for its Lisp machines, and eventually developed it into New Flavors; both the original and new Flavors were message passing OO models. It was hugely influential in the development of the Common Lisp Object System (CLOS).

<span class="mw-page-title-main">Dynamic web page</span> Type of web page

A dynamic web page is a web page constructed at runtime, as opposed to a static web page, delivered as it is stored. A server-side dynamic web page is a web page whose construction is controlled by an application server processing server-side scripts. In server-side scripting, parameters determine how the assembly of every new web page proceeds, and including the setting up of more client-side processing. A client-side dynamic web page processes the web page using JavaScript running in the browser as it loads. JavaScript can interact with the page via Document Object Model (DOM), to query page state and modify it. Even though a web page can be dynamic on the client-side, it can still be hosted on a static hosting service such as GitHub Pages or Amazon S3 as long as there is not any server-side code included.

newLISP

newLISP is a scripting language which is a dialect of the Lisp family of programming languages. It was designed and developed by Lutz Mueller. Because of its small resource requirements, newLISP is excellent for embedded systems applications. Most of the functions you will ever need are already built in. This includes networking functions, support for distributed and multicore processing, and Bayesian statistics. newLISP is free and open-source software released under the GNU General Public License, version 3 or later.

The Simple Common Gateway Interface (SCGI) is a protocol for applications to interface with HTTP servers, as an alternative to the CGI protocol. It is similar to FastCGI but is designed to be easier to parse. Unlike CGI, it permits a long-running service process to continue serving requests, thus avoiding delays in responding to requests due to setup overhead.

A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build and deploy web applications on the World Wide Web. Web frameworks aim to automate the overhead associated with common activities performed in web development. For example, many web frameworks provide libraries for database access, templating frameworks, and session management, and they often promote code reuse. Although they often target development of dynamic web sites, they are also applicable to static websites.

<span class="mw-page-title-main">Racket (programming language)</span> Lisp dialect

Racket is a general-purpose, multi-paradigm programming language. The Racket language is a modern dialect of Lisp and a descendant of Scheme. It is designed as a platform for programming language design and implementation. In addition to the core Racket language, Racket is also used to refer to the family of programming languages and set of tools supporting development on and with Racket. Racket is also used for scripting, computer science education, and research.

Adaptive hypermedia (AH) uses hypermedia which is adaptive according to a user model. In contrast to regular hypermedia, where all users are offered the same set of hyperlinks, adaptive hypermedia (AH) tailors what the user is offered based on a model of the user's goals, preferences and knowledge, thus providing links or content most appropriate to the current user.

mod_lisp is an extension module for the Apache HTTP Server. It enables Apache to interface with application servers written in Common Lisp, making it possible to dynamically generate web pages and provide web applications with Common Lisp programs.

Hypermedia as the engine of application state (HATEOAS) is a constraint of the REST application architecture that distinguishes it from other network application architectures.

FastCGI is a binary protocol for interfacing interactive programs with a web server. It is a variation on the earlier Common Gateway Interface (CGI). FastCGI's main aim is to reduce the overhead related to interfacing between web server and CGI programs, allowing a server to handle more web page requests per unit of time.

Peter Brusilovsky is a professor of information science and intelligent systems at the University of Pittsburgh. He is known as one of the pioneers of adaptive hypermedia, adaptive web design, and web-based adaptive learning. He has published numerous articles in user modeling, personalization, educational technology, intelligent tutoring systems, and information access. As of February 2015 Brusilovsky was ranked as #1 in the world in the area of computer education and #21 in the world in the area of World Wide Web by Microsoft Academic Search. According to Google Scholar as of April 2018, he has over 33,000 citations and h-index of 77. Brusilovsky's group has been awarded best paper awards at Adaptive Hypermedia, User Modeling, Hypertext, IUI, ICALT, and EC-TEL conference series, including five James Chen Best Student paper awards.

Social navigation is a form of social computing introduced by Paul Dourish and Matthew Chalmers in 1994, who defined it as when "movement from one item to another is provoked as an artifact of the activity of another or a group of others". According to later research in 2002, "social navigation exploits the knowledge and experience of peer users of information resources" to guide users in the information space, and that it is becoming more difficult to navigate and search efficiently with all the digital information available from the World Wide Web and other sources. Studying others' navigational trails and understanding their behavior can help improve one's own search strategy by guiding them to make more informed decisions based on the actions of others.

References

  1. "CL-HTTP History". Archived from the original on 2014-05-22. Retrieved 2014-05-22.
  2. "ANNOUNCE: Common Lisp Web Server (60.57)".
  3. Mallery, John C. (May 25, 1994). A Common LISP Hypermedia Server. Proceedings of the First International Conference on the World-Wide Web. Geneva: CERN.
  4. Brusilovsky, Peter; Schwarz, Elmar; Weber, Gerhard (1996). "ELM-ART: An intelligent tutoring system on world wide web". Intelligent Tutoring Systems. Lecture Notes in Computer Science. Vol. 1086/1996. Springer. pp. 261–269. doi:10.1007/3-540-61327-7_123. ISBN   978-3-540-61327-5.
  5. Weber, Gerhard; Kuhl, Hans-Christian; Weibelzahl, Stephan (2002). Developing Adaptive Internet Based Courses with the Authoring System NetCoach. Lecture Notes in Computer Science. Vol. 2266/2002.
  6. Brusilovsky, Peter; Schwarz, Elmar; Weber, Gerhard (October 15–19, 1996). A Tool for Developing Adaptive Electronic Textbooks on WWW. WebNet 96 Conference Proceedings. San Francisco, CA.
  7. Davies, Byron; Davies, Victoria Bryan (May 1997). "Patching onto the Web: Common LISP hypermedia for the intranet". Communications of the ACM. 40 (5): 66–69. doi: 10.1145/253769.253794 . S2CID   18764239.
  8. Taube, Heinrich; Kunze, Tobias (1997). An HTTP Interface to Common Music. International Computer Music Conference. doi:10.2307/3681213. JSTOR   3681213.
  9. Welty, Christopher A. "An HTML Interface for Classic". Proceedings of the 1996 Description Logic Workshop (DL'96). WS-96-05 in AAAI Technical Report. AAAI Press.
  10. Rahkila, M.; Karjalainen, M. (1997). An interactive DSP tutorial on the Web. IEEE International Conference on Acoustics, Speech, and Signal Processing. Vol. ICASSP-97. Espoo: Lab. of Acoust. & Audio Signal Process., Helsinki Univ. of Technol. CiteSeerX   10.1.1.130.8585 .
  11. "CL-HTTP History". Archived from the original on 2014-05-22. Retrieved 2014-05-22.
  12. "CL-HTTP was fielded in 1994 to serve the White House Publications System". Archived from the original on 2014-05-17. Retrieved 2012-08-06.
  13. Dozsa, A.; Gtrba, T.; Marinescu, R. (2008). How Lisp Systems Look Different. 12th European Conference on Software Maintenance and Reengineering. Vol. CSMR 2008. Timișoara: Politeh. Univ. of Timișoara. pp. 223–232. doi:10.1109/CSMR.2008.4493317. ISBN   978-1-4244-2157-2. S2CID   6368390.