Suggested Programming Projects
These projects are intended for those who feel they would like to make a contribution in the form of free Common Lisp code.
Each project description is followed by an estimated difficulty in terms of
how long it would take for one person to work on it full time. The estimates
assume prior knowledge about the domain and of Common Lisp programming.
Adjust the estimates accordingly if this is not the case.
some of the projects in this list are old or no longer relevant. if you find a project where this is the case please mark it with a tag like [solved] and a link to the solution if available.
- Investigate the effect of different calling conventions for sbcl on the x86. In particular, whether there is any benefit in introducing paired call/ret instructions in the call sequence, and the magnitude if so. (about a month; prerequisite: knowledge of x86 assembly)
- Add a peephole optimizer phase to sbcl's compiler, and use it for microoptimizations on some sbcl platforms. (about a month; some assembly required)
- Add some loop optimizations (such as invariant lifting, common subexpression elimination, ...) to sbcl's compiler. (a few weeks to years; some knowledge of compiler technology helpful)
- Write a real-time generational SMP-aware garbage collector for SBCL.
Contact Robert Strandh for more information. (at least a year).
- Make CLISP more easily embeddable in other (C) applications.
- Port the Dylan editor Deuce (see CL-Emacs for info) to CL. We need a smaller/simpler/faster editor than Portable Hemlock or CLimacs to compete with GNU Emacs.
- Port GNU Emacs to run on Common Lisp as a back-end platform. Co-opt the GNU Emacs users.
- Enhance Climacs, for example in the areas of redisplay performance or (the lack of) ease of defining new syntaxes. A syntax for C would also be useful.
CLX projects
- implement transparent (to the user) support for the BIG-REQUESTS X protocol extension. This allows more efficient support for other X extensions such as GLX and RENDER. (about a week)
- implement transparent (to the user) support for the XKEYBOARD X extension; the protocol specification (dated 1994) provides enough information to how to do this. This would allow libraries such as McCLIM to provide better keyboard handling in their applications, dealing with confusions over whether modifiers such as the shift key are signficant. (about a month)
X11 projects
Work on the zen X11 server. Make it run on Wayland with hardware acceleration.
See also the projects page at McCLIM CLiki.
- Create a debugger pane and/or a debugger application to work with
the Listener and other CLIM applications. This is partially done. Contact
Robert Strandh for more information. (a few days).
- Add "modern" panes and gadgets as extensions to McCLIM. (a few days to
a few weeks per pane or gadget, depending on the complexity).
- Make it possible to use Common Lisp as an extension language for
Texmacs. (a few weeks).
- Terminal emulator for Common Lisp. Port either Paddy Mullen's rxvt-js or the suckless st terminal emulator to CL. Use this to replace xterm on your *nix desktop, add terminal emulation to McCLIM, terminal emulation modes to Climacs and Portable Hemlock, and eventually as the terminal emulator in a Lisp OS.
- Port Tony Garnock-Jones' Racket-SSH to Common Lisp. Get a CL SSH client so you can talk to *nix servers securely, an SSH server so Lisp processes can talk to each other securely. Combine with terminal emulator above to get rid of your OpenSSH client. Will be needed for a Lisp OS.
Closure web browser extensions
- Integrate CL-JavaScript into the Closure web browser.
- Once Closure has JavaScript support, adapt rxvt-js (a JavaScript/DHTML port of urxvt) to run as a stand-alone native application (using Closure as a library), to serve as a replacement for xterm/rxvt.
- Add HTML5 support to the Closure web browser.
- Write a library to handle conversion of zoned decimal data (see http://www.simotime.com/datazd01.htm for reference and http://benjaminjwhite.name/zdecimal/download/ for implementation in java) days?
- If you are interested in networking protocols, pick an RFC and try to implement it (anywhere from a day to a year).
- Write lisp-like (not swig-autogenerated) bindings for a game engine, or graphics engine (for example Ogre3d, Crystal Space or NeL) to allow writing of 3D games completely in CL.
- A CL native input library like OIS.
- Write a user manual for CLIM/McCLIM, including in particular
a Getting Started manual. (at least a year).
- Write a manual that explains the internals of SBCL. (at least a year).
- Convert the user's manual for Hemlock from Scribe to Texinfo.
(a few weeks).
- Convert the command implementer's guide for Hemlock from Scribe to
Texinfo. (a few weeks).
- Convert section 2 of AMOP to Texinfo, TeX sources are available from ftp://parcftp.xerox.com/pub/pcl/mop/ (a week.)
- Convert the final ANSI draft spec to Texinfo, obtaining also official clarfication on its copyright status (a month). What's wrong with dpans2texi? *blush* -- I'd totally forgotten about it. Clarification on the copyright status of dpANS would still be good, though. Situation is murky.
The situation with the draft spec is probably not improvable - there were too many authors and it was too long ago. Of course, given that the drafts have been publicly and freely downloadable for ten years, and Franz has a copy of dpANS2 on their website with a copyright notice concerning the presentation... The only other thing to do would be to try to track down all the authors/companies and get a statement from each of them. That's going to be tough, and even if they could all be located how does one sort out who wrote what? Also, even if someone had an objection to their part being free how would they demonstrate they are in fact the author of that part? With no copyright notices on the draft spec itself to identify authors of specific parts, the only way to be sure would be to identify the content in some other published work. Not that anyone would be likely to lie, granted...
CLiki pages can be edited by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively