CL-HTTP CL-HTTP Development Projects



Overview

This page describes a set of development projects that you could contribute to the CL-HTTP community. You will work with an international team of CL-HTTP developers, and perhaps learn some interesting things about advanced Common Lisp programming as you win recognition and build your reputation in the Lisp community.

Please be a good citizen and contribute something, no matter how small, to improve these tools for yourself and other users. Not only did somebody else write this server, client, and web walker, they also empowered you with the source code. Why not invest a little effort in return? In the end, you will help yourself by showing that the Lisp culture can produce shared resources.

Before contributing code, you may wish to consult the guidelines and efficiency considerations.

If you are working on some code for CL-HTTP, please send a paragraph (or a URL) to www-cl@ai.mit.edu (or bug-cl-http@ai.mit.edu if you would prefer less notice) 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 archives to see what other people are doing.

  1. Priority Projects
    1. Cascading Style Sheets
    2. VRML 2.0
    3. CLIM Graphics
    4. Client HTTP 1.1 Conformance
    5. Develop a CL-HTTP Tutorial Using Interbook
    6. Secure Sockets Layer (SSL)

  2. Server Enhancements
    1. Protocol Conformance
      • Cascading Style Sheets: Implement style sheet generation tools for integration with HTML 3.2 generation facilities.
      • Content Negotiation: Implement the HTTP 1.1 content negotiation specification. (see: RFC 2068)
      • Multiple Languages & Character Sets
    2. CLIM Enhancements
    3. 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
    4. Portable Dynamic Form Processing
    5. Secure HTTP
    6. 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
    7. Custom Logging
    8. 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.
    9. Performance Tools
      • Logfile Replayer
      • Metering
      • HTML Display of Performance Statistics
      • Tracing Tools
        • Show Execution Process
    10. Cruise the source code and look for bugs, incomplete features, better numerical declarations, inefficiencies and write patches to fix them.
    11. Annotation Service
    12. URN Name Service

  3. Server Documentation Projects
    1. Develop a CL-HTTP Tutorial Using Interbook. Contact Peter Brusilovsky plb@cs.cmu.edu for further information.
    2. 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.
    3. Overview Server & Architecture
    4. Interfacing Existing Applications
      • CLIM To Web
      • GGIs To LISP
    5. Create icons and gifs for use spicing up CL-HTTP generated pages and advertising the technology.

  4. Client Projects
    1. Client HTTP 1.1 Conformance: Identify all the client MUSTs in the http 1.1 specification. Prioritize them. Implement them in the order of priority.
    2. Make the client RPC facility faster and more robust

  5. Web Walker Projects
    1. Web Site Maintenance: Develop an Web walker application for finding all the dead urls on a web site.
    2. Extend the Web Walker for multithreaded and asynchronous operation
    3. Generate VRML views of Sites
    4. Develop Facilities for Periodic Site Walking: This involves developing persistent actions that awake a certain times to execute a Web Walking operation. The operations and any predicates need to be store persistent as well. See: server realms (file or OODB storage) and COMLINK persistent actions.

  6. Platform Specific Projects
    1. Lisp Machine Platform
      1. Concordia Interface: Develop a Web interface that provides access to the Symbolics document examiner.

    2. 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. OpenDoc Interface
      4. QuickDraw 3D Integration
      5. Wood DB Interface
      6. ODBC Interface
      7. MCL-Based WYSIWYG Web Client In FRED

    3. UNIX Platforms
      1. Send-Mail Interface

    4. PC Platform
      1. Port to Multithreaded Franz Allegro PC Lisp
      2. Port to CMU Lisp Contact: bug-cmucl-cl-http@ai.mit.edu
      3. Port to C Lisp

  7. Extensions, Add-Ons & Applications
    1. VRML 2.0 Synthesis: Implement a VRML 2.0 generation package analogous to the distribution VRML 1.0 facility. 4.0 browsers from Netscape and Microsoft implement the standard.
    2. Integrating CLIM Graphics: Port the SRI CLIM generation tools to CL-HTTP and portable lisp
    3. Secure Sockets Layer (SSL) Integrate SSL support into the Web server and client using foreign function calls into the freely available reference implementation in C. The C code and specification distributed by Netscape allows non-commercial use for free and commerical use for a license fee. A more ambitious effort would rewrite the C code in Lisp tuned for speed. See also Apache-SSL
    4. Intelligent Proxy Cache Management
    5. Java Synthesis
      • Java Presentations For Client
      • Java Primitives Composable From LISP
    6. Active-X Synthesis
      • Active-X Presentations For Client
      • Active-X Primitives Composable From LISP
    7. 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.
    8. Higher-Level HTML Synthesis
      • Cliche & Abstractions
        • Lisp To HTML Translator
        • Graphics
          • Bar Charts
          • Graphs
          • Tree-Drawing
        • Command Processor
      • Automatic Generation of Navigational Links
      • Graphics For Space Filling (e.g., Backgrounds)
    9. Emitting Audio
      • MacInTalk Source
      • Streamed
    10. Emitting Streamed Video: Implement facilities for emitting streamed video using standard formats.
    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