Suggested Programming Projects
These projects are intended for those who feel the 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.
- 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).
- Write a patch for CLISP to easily embed it in other applications.
- Extract the assembler out of sbcl or some other implementation and make a general purpose assembler that other implementations and users could use.
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)
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).
- Write an X11 server in Common Lisp. This might not be as hard as one
might think, if one assumes a single OpenGL-compatible device.
(at least a year). -- It's not as impossible as you might think. An X11 server in Java is at http://www.jcraft.com/weirdx/.
- Improve the Eclipse window manager so that it becomes easier to install,
and so that it uses up less memory. (a few weeks; prerequisite: knowledge
of X11).
- Is there enough WM overlap with DM (Display Manager) to extend Eclipse there?
- Universal (X, DM, WM, CLIM, apps) keybinding (like Garnet used Hemlock's code)
- 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.
- 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?
- write a library for memcached - a distrubted in-memory hashtable http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
This has been granted... sort of, needs work. http://common-lisp.net/project/cl-memcached/
- Write UFFI-based equivalents for sb-posix and sb-grovel on posixoid platforms (two months, may require extending UFFI.) [see cffi-unix, cffi-net and cffi-grovel]
- Write a LALR(1) parser generator that is free and usable. Hopefully done, CL-Yacc.
- 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.
- Write an interface to the R programming language, similar to RPy or RSPerl.
Granted, I guess. Get it from RCL
Thanks!
- Lisp interface to DBus.
- 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...
If you would like to add a suggested project to this page, please keep the
description short (a few lines), and make a link to a new page with a more
elaborate description for each project.
This page is linked from: index Wish List
CLiki pages can be edited by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively