Paste number 39569: CLAPPA proposal

Paste number 39569: CLAPPA proposal
Pasted by: antifuchs
1 years, 1 month ago
#lisp | Context in IRC logs
Paste contents:
Raw Source | XML | Display As
ABSTRACT

CLAPPA - Common Lisp Application Archive

Many Common Lisp users install free software libraries via the asdf-install[1] mechanism, a simple (and equally free) port system for CL that is based on ASDF[2]. It keeps track of dependencies, and allows users to install most software with only a small amount of work. However, the whole scheme could still be improved to provide better reliability of installations, better namespace safety features, and easier tracking of updates which break libraries that depend on them.

The current scheme is this: To make a library asdf-install-able, its maintainer has to add the package's tar.gz URL to its page on the CL Wiki cliki.net. Cliki performs no checks to see whether the package is accessible and its gpg signature matches, nor if it installs features that conflict with another library's names. Further, only the name of the library's Cliki page is recognized as a target for asdf-install: If the library is available under any other name when installed, installation of any libraries that have dependencies on other these names will fail.

The project's goal is to extend 'CLAPPA'[3] to provide a stable web-based service for making versioned references to packages on the web, similar to cliki.net. Further, to extend CLAPPA to determine the installability of the package (by trying to download the package and testing the gpg signature), and potential naming conflicts. Additionally, the service will offer a feeds which announce updates of libraries, and updates of libraries that are dependencies of another library.

Another goal will be to adapt cliki.net to integrate with CLAPPA. This is necessary for backwards compatibility, as the current asdf-install software queries the package's cliki.net page to get its installation URL back. In the long term, asdf-install will be adapted to refer to CLAPPA instead, and make use of its features, e.g. namespace conflict detection.

The implementation language for this project will be Common Lisp. A beta version is available under http://clappa.boinkor.net/.

[1] http://cliki.net/asdf-install
[2] http://cliki.net/asdf
[3] http://clappa.boinkor.net/


MAIN PROPOSAL TEXT

Name
 Andreas Fuchs

Email
 asf@boinkor.net


Project Title
 CLAPPA

Synopsis
 An asdf-install compatible Common Lisp Application Archive

Benefits to the Lisp/Scheme Community
 CLAPPA (http://clappa.boinkor.net/) will make it easier for users of Common Lisp to install libraries, and keep track of updates for them. Maintainers of these libraries will find it easier to announce updates, and keep updated on which releases break backwards compatibility with their software.

Project Details
 The goals of this project are:

 * To create a web service based on CLAPPA (http://clappa.boinkor.net/) which can be used to point asdf-install (http://cliki.net/asdf-install) at archives of lisp software.
 * To extend the CLAPPA service such that it checks for installability of the software archive, finds naming conflicts, tracks dependencies in a safe way, and provides feeds for updates.
 * To integrate this service into cliki.net (so that asdf-install can use it).
 * To migrate the references to lisp software archives away from cliki.net and insert them into CLAPPA (most of that in an automated fashion).

 The CLAPPA software was started by Nicolas Lamirault, and already improves on the way lisp library releases are tracked on the official asdf-install software repository, cliki.net, by visualizing dependencies of libraries and by tracking versions and release dates. It includes an XML-RPC based client whose interactions are based on those of ASDF-INSTALL.

The project's main goal is to extend CLAPPA to be compatible with asdf-install. As asdf-install uses only a very simple protocol to install software (it issues an HTTP GET, and expects a redirect to the software package's URL), this should also be the easiest part of the project.

This project will aim at extending the service to offer a few more useful features to the web service's users: feeds for software updates, notifications on releases of incompatible versions, name conflict detection (an asdf-installable library may install under more than one name, so it is possible to have two libraries that refer to the same names).

In addition to that, the project will include safe tracking of inter-library dependencies. ASDF system definitions must be read and evaluated in order to get to their dependencies; in each of these stages, arbitrary code can be executed. The goal will be to set up a sufficiently safe sandbox to do so without endangering the system.

When the service is finished, it will have to be integrated into Cliki. This includes (mostly automated) import of the currently asdf-installable packages into CLAPPA, and (given consent of the cliki.net maintainers) rewriting of the cliki pages to refer to the CLAPPA pages instead of including the package's download URL. Also, complete integration into asdf-install requires that cliki.net forwards requests for packages to the CLAPPA site.

None of these goals will require incompatible changes to the code of asdf-install itself (which is installed in several mutually-incompatible versions on hundreds of sites). There is one extension to asdf-install, which will require upgrading it on those sites to use the feature: name conflict resolution. This will be done in a backwards-compatible manner, so that old installations of asdf-install can stay in use (although they will not be able to resolve name conflicts).

Implementation language of the project will be Common Lisp.

Deliverables
 * Implementation of the asdf-install protocol: Finished by week 1.
 * Atom feeds of software updates and updates to dependencies of a given package: Finished by week 3.
 * Checking for integrity of a release: Finished by week 5. Subgoals:
  * Refactoring asdf-install to check if a package can be downloaded and verified safely by gpg.
  * Name conflict checks on packages and UI for resolution of name conflicts.
 * Setup of sandbox for dependency tracking: Finished by week 7.
 * Integration into cliki.net: Finished by week 9. Subgoals:
  * Importing package references into CLAPPA: Finished by week 7.
  * Hacking Cliki code to refer to CLAPPA in the user interface as well as in the asdf-install protocol (includes fixing bugs in cliki on the way, and implementing a REST-based interface for CLAPPA): Finished by week 9-10.
 * Enhancing the asdf-install protocol to deal with name conflicts: Finished by week 12.
 * Writing documentation on the CLAPPA site and on http://cliki.net/asdf-install: Ongoing effort, one update per Deliverable. Finished by week 12.

Biography
 Andreas Fuchs is a full-time student of Computer Science and part-time consultant on all things Lisp. He has created a web interface to the Common Lisp Benchmark service (at http://sbcl.boinkor.net/bench/), and has hacked on asdf and asdf-install, along with several other free software Common Lisp utilities.

This paste has no annotations.

Colorize as:
Show Line Numbers

Ads absolutely not by Google

Lisppaste pastes can be made by anyone at any time. Imagine a fearsomely comprehensive disclaimer of liability. Now fear, comprehensively.