CL-HTTP Coding Projects

  1. Overview
  2. Project Ideas
    1. Server Enhancements
    2. Server Documentation
    3. Macintosh Platform
    4. UNIX Platform
    5. PC Platform
    6. Extensions, Add-ons & Applications

Overview

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.

Project Ideas

  1. Server Enhancements
    1. Beta test the server and report bugs to bug-cl-http@ai.mit.edu.
    2. Cruise the source code and look for bugs, incomplete features, better numerical declarations, inefficiencies and write patches to fix them.
    3. MD5 Passwords
    4. Web-Based Configuration & Maintenance
    5. Protocol Conformance
      • Multiple Languages & Character Sets
      • Content Negotiation
      • HTTP 1.1
      • HTML 3.0
    6. CLIM Enhancements
    7. 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
        • Client
        • HTML Synthesis
    8. Portable Dynamic Form Processing
      • Portable Presentation System
    9. Secure HTTP
    10. 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
    11. 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
    12. Custom Logging
    13. 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.
    14. Performance Tools
      • Logfile Replayer
      • Metering
      • HTML Display of Performance Statistics
      • Tracing Tools
        • Show Execution Process
    15. Annotation Service
    16. URN Name Service

  2. Server Documentation
    1. Overview Server & Architecture
    2. Interfacing Existing Applications
      • CLIM To Web
      • GGIs To LISP
    3. 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.
    4. Conversion To Lisp From
      • Perl
      • GGIs
      • C
      • TCL
      • Java

  3. Macintosh Platform
    1. 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
    2. Speed Up File Access
    3. Open Transport Interface
    4. OpenDoc Interface
    5. QuickDraw 3D Integration
    6. Wood DB Interface
    7. ODBC Interface
    8. PowerMAC Native Testing
    9. Comparison With Webstar
    10. MCL-Based WYSIWYG Web Client In FRED

  4. UNIX Platforms
    1. CGI Interface
    2. Send-Mail Interface

  5. PC Platform
    1. Port to Windows

  6. Extensions, Add-Ons & Applications
    1. Integrating CLIM Graphics
    2. Java Synthesis
      • Java Presentations For Client
      • Java Primitives Composable From LISP
    3. 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.
    4. 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)
    5. 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.
    6. Full-Text Search of Web Site
    7. Intelligent Proxy Cache Management
    8. Periodic Web Walk Looking For Updates In Known Sites
    9. VRML Synthesis
    10. Emitting Audio
      • MacInTalk Source
      • Streamed
    11. Use SMTP And NNTP To Distribute Hyperlinks
      • Hyperlink-Based Mail Reader On The Web
    12. Specification For Collecting & Distributing Site Indices
    13. Network Traffic Watcher
    14. Mobile Lisp Code
      • Secure Lisp Listener
      • Safe Common Lisp Package
      • No Side Effects
      • Bounded Computation Time & Space
      • Bounded Stack Depth
      • Fasl Streams To Clients
    15. Server Trouble Shooter Diagnosis of Server Problems Based On A Case Library Acquired By Experience
    16. Server Collaboration Site
      • Register Servers
      • Register People & Interests & Abilities
      • Share Extensions
      • Advertise Extensions
      • Peer Review Extensions
      • Automatic Patch Distribution
    17. Server Version Management System Enhancements
    18. Shared Hierarchical Hotlist Facility
    19. Constraint-Based URL/URN Locator
    20. 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