CL-HTTP Coding Projects
- Overview
- Project Ideas
- Server Enhancements
- Server Documentation
- Macintosh Platform
- UNIX Platform
- PC Platform
- Extensions, Add-ons & Applications

This page describes a set of coding projects that would make useful contributions to the base of
available functionality.
If you think of additional ideas, please do not hesitate to send them in so we can add them to the
suggested projects. Although you may not have time, perhaps someone else does, and you'll be the
beneficiary.
Please be a good citizen and contribute something, no matter how small, to
improve these tools for yourself and other users. Somebody else wrote this
server and provided you with the source code. In the end, you will help yourself by
showing that the Lisp culture can produce shared resources.
If you are working on some code for CL-HTTP, please send a paragraph (or a URL) to www-cl@ai.mit.edu explaining what you are doing, your time
frame, and how to contact you. That way, people will know what you are doing and can contact you if
they have ideas, suggestions, or want to help out. It can also help avoid duplicated effort. Have a look at
the www-cl archive
to see what other people are doing.
Before contributing code, you may wish to consult the guidelines and efficiency considerations.

- Server Enhancements
- Beta test the server and report bugs to bug-cl-http@ai.mit.edu.
- Cruise the source code and look for bugs, incomplete
features, better numerical declarations, inefficiencies and write
patches to fix them.
- MD5 Passwords
- Web-Based Configuration & Maintenance
- Protocol Conformance
- Multiple Languages & Character Sets
- Content Negotiation
- HTTP 1.1
- HTML 3.0
- CLIM Enhancements
- Implementation Enhancements
- Escape Characters In Exported Pathnames
- Double-Buffered Asynchronous Transfer
- Fill CLOS Caches On Start-Up Or Save of Binary Images
- Declarative Header Parsing/Generation
- Declarative URL Parsing/Generation
- Factor Into Component Modules
- Portable Dynamic Form Processing
- Portable Presentation System
- Secure HTTP
- Proxy Service: Add intelligent caching to proxy
implementation (see the CERN
server). This is pretty important for many companies that operate
through firewalls. It is also very handy for downloading URLs to a
powerbook for disconnected use
- Web Walker
- Streamed Incremental HTML Parser With Generation Capability
- Maintenance of Web Sites (e.g., Link Maintenance)
- Search For Matching Documents
- Relocate & Archive Web Structures
- Custom Logging
- Portable Remote CLOS Interface: Develop an object interface
using Inter-Language
Unification (ILU) from Xerox's
Palo Alto Research Center.
Develop interfaces to readily available persistent object stores and
CORBA.
- Performance Tools
- Logfile Replayer
- Metering
- HTML Display of Performance Statistics
- Tracing Tools
- Annotation Service
- URN Name Service
- Server Documentation
- Overview Server & Architecture
- Interfacing Existing Applications
- Extend the online manual or tutorial
by writing one or more sections that explains how to do
something. The manual should be written in HTML and should
explain things with live working examples. We need to target
these audiences:
- Naive users who just want to serve web pages with
minimal fuss.
- Novices who want to Learn Lisp
- Lisp-capable people who want to write their own
response functions and hook up their own systems but
do not want to learn more about CL-HTTP than it takes
to solve their problem.
- Lisp Programmers who want to Learn the Server
- Extend and annotate the example file exports.lisp.
Improve the comments to make this example more of a
live tutorial. Add additional examples
illustrating any previously undocumented
features.
- Improve documentation strings and comments in
source code: Give priorities to those areas people
are most likely to use or find confusing.
- Wizards who want to understand the details of
CL-HTTP and the Web so they can experiment with new
extensions to CL-HTTP and the Web. There may be a
category of wizards who are not lisp hackers and we
should have a way to reach them.
- Conversion To Lisp From
- Macintosh Platform
- Binary Application with User Interface: Develop a stand-alone
binary app so people without MCL can run the server. This involves
developing a GUI user interface from which the user can operate and
maintain the server. Among other things, it means an interface to
specifying the configuration file and ensuring that it is loaded on
start up. Have a look at the remote
administration interface for MacHTTP. Alternatively, a forms-based
approach would be portable across multiple platforms and would be safe
once secure http is incorporated.
- Apple CGI Interface: Develop CGI export types
that allow users to run CGI scripts developed for WebSTAR (MacHTTP ). See the tutorial
on CGI Scripts. After this works, a separate export type
can be developed to allow users to run UNIX-style CGI scripts
or Perl code much as they would with a UNIX based server
(e.g., CERN server). The UNIX world has a number of facilities
to which people have now become accustomed.
- Special Application
- Top-Level Loop
- Catch Errors
- Handle Apple Events
- Speed Up File Access
- Open Transport Interface
- OpenDoc Interface
- QuickDraw 3D Integration
- Wood DB Interface
- ODBC Interface
- PowerMAC Native Testing
- Comparison With Webstar
- MCL-Based WYSIWYG Web Client In FRED
- UNIX Platforms
- CGI Interface
- Send-Mail Interface
- PC Platform
- Port to Windows
- Extensions, Add-Ons & Applications
- Integrating CLIM Graphics
- Java Synthesis
- Java Presentations For Client
- Java Primitives Composable From LISP
- Code Sharing and Distribution
- Build Web Collaboration Systems For Sharing Code:
Provide a forms interface that allows people to submit code or
extensions to CL-HTTP and retrieve submissions of others. Incorporate
a peer review system that allows people to rate software along various
dimensions.
- Higher-Level HTML Synthesis
- Cliche & Abstractions
- Lisp To HTML Translator
- Graphics
- Bar Charts
- Graphs
- Tree-Drawing
- Command Processor
- Style Sheets (e.g., Slides, Articles, Books)
- Automatic Generation of Navigational Links
- Graphics For Space Filling (e.g., Backgrounds)
- Message Threading for Email Archives: Start by
arranging for the Common
Lisp Version of Hypermail
or equivalent to run in Common Lisp with CL-HTTP. Make the updating
occur at preselectable intervals from incremental on demand to
periodically at fixed times. Provide a form interface for computing
custom views on an archive using the constraints available in internet
mail.
- Full-Text Search of Web Site
- Intelligent Proxy Cache Management
- Periodic Web Walk Looking For Updates In Known Sites
- VRML Synthesis
- Emitting Audio
- MacInTalk Source
- Streamed
- Use SMTP And NNTP To Distribute Hyperlinks
- Hyperlink-Based Mail Reader On The Web
- Specification For Collecting & Distributing Site Indices
- Network Traffic Watcher
- Mobile Lisp Code
- Secure Lisp Listener
- Safe Common Lisp Package
- No Side Effects
- Bounded Computation Time & Space
- Bounded Stack Depth
- Fasl Streams To Clients
- Server Trouble Shooter Diagnosis of Server Problems
Based On A Case Library Acquired By Experience
- Server Collaboration Site
- Register Servers
- Register People & Interests & Abilities
- Share Extensions
- Advertise Extensions
- Peer Review Extensions
- Automatic Patch Distribution
- Server Version Management System Enhancements
- Shared Hierarchical Hotlist Facility
- Constraint-Based URL/URN Locator
- Indexing & Search For Web Regions
- Gatherers On The Server
- Brokers For Delivery To Clients

John C. Mallery (jcma@ai.mit.edu) Rainer Joswig (joswig@lavielle.com)
M.I.T. Artificial
Intelligence Laboratory