Actions

Module System

From Gambit wiki

Revision as of 23:06, 18 March 2008 by Pflanze (talk | contribs) (Make it clear that the License may be discussed)

This is a project to create a module system primarily for the Gambit Scheme system. It does not have a real name yet.

The system is meant complementary to the Snow package system: unlike Snow, this project does *not* focus on distribution, but instead it has the following objectives:

  • good interactive development capabilities (like runtime inspection and modification, included build system for the base case)
  • good code modularity features (parametrization, macros (hygiene, ..), and probably more)
  • generality (run code written in different language styles, to some extent in different module philosophies, interface with OO systems, host languages requiring translation like lazy variants of Scheme or maybe different languages like Arc or XSLT)
  • efficiency (employ cross-module inlining, parametrization specialization)
  • possibly achieve (partial) portability by moving parts into or building parts on top of the Snow framework (maybe not achieving the same level of integration with the host system, but at least make modules written by users portable to other Scheme systems)

The projects wants to deliver a base system usable for everyday use quickly, and explore the more advanced objectives in the longer term.

One essential part of the task involves getting to know the Gambit internals well enough to be able to embed the system well. Another essential one is laying a sound foundation especially for syntax handling (macros), considering the limited knowledge of the current contributors, this involves finding the right literature and people to query.

During a first phase, the project will draw from (and may for some time continue to develop in) the code bases of the chjmodule and the gambit-modules projects.

Contributors

Google Summer of Code

(This project is attempting to participate in the Google Summer of Code campaign and intends to accept one student as additional core contributor.) Gambit has not been accepted by the GSoC, so this part is moot now (and this section will thus be removed soon); the project will proceed nonetheless.

Timeline

Rough points of the planned timeline:

  • James Long goes on reading literature for the next ~two weeks
  • Christian Jaeger finishes up and announces the long-promised chjmodule release, and contacts James Long.
  • seeking input in the Gambit community, student selection if possible
  • seeking input in the wider area, continuing to work on chjmodule and gambit-modules to work out thoughts
  • find out the necessary essentials
  • fork off a new code base and start implementing new infrastructure
  • start coding features

Virtual Library

We are keeping a growing list of literature which we think is relevant for our work. It contains items we've read or intend to read, so it will be growing; we will not put anything there which we don't think we will manage to read, so by looking at that list you can see whether we are missing something you think we should know about. We hope that you will notify us in this case.

Log

There is a logfile mentioning the events in the project.

License

The project intends, for the time being, to license all code under the same licenses as Gambit, namely dual LGPL version 2.1 or Apache version 2.0 license (freely choosable). Requirements for making the code portable may lead us to change the license in due course.