<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>lisp</title><link>http://blogs.acceleration.net/ryan/category/58.aspx</link><description>lisp</description><managingEditor>Ryan</managingEditor><dc:language>en-US</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>Ryan</dc:creator><title>RE: Lisp Library Management</title><link>http://blogs.acceleration.net/ryan/archive/2006/05/26/2955.aspx</link><pubDate>Fri, 26 May 2006 11:37:00 GMT</pubDate><guid>http://blogs.acceleration.net/ryan/archive/2006/05/26/2955.aspx</guid><description>&lt;p&gt;
	      &lt;a href="http://www.metabang.com/unclog/"&gt;Gary King&lt;/a&gt; has been working on getting a good library system for lisp, and recently posted his &lt;a href="http://www.metabang.com/unclog/publisha/notesona.html"&gt;Notes on a Lisp Library Management&lt;/a&gt;.  I was going to email him back, but figured here was as good a place as any to give my comments.  Read that first.
	    &lt;/p&gt;
	    &lt;p&gt;
	      Firstly, I applaud Gary for taking up this mantle.   I'm really still starting using lisp, and the lack of authoritative libraries is a hinderer for people like me.  Getting a comprehensive library management system is going to help folks like me get up to speed with lisp faster.  ASDF is a good start, but I think it needs to be built upon. Secondly, sorry if everything I'm saying here has already been considered.
	    &lt;/p&gt;
	    &lt;p&gt;
	        The problem of getting libraries installed and updated with minimal user effort is a very studied problem with several decent implementations that could be used as starting points.
	    &lt;/p&gt;
	    &lt;p&gt;
	      I think a lot of lessons can be learned by studying perl's &lt;a href="http://cpan.org/"&gt;CPAN&lt;/a&gt;.  CPAN has mirrors that automatically sync, and each user picks a list of mirrors near them.  Then you just ask for the package name, and it will download, make, run tests, then put the code in a proper system or user path such that programs can import the library.  Perhaps a port of CPAN would solve most of these problems.
	    &lt;/p&gt;
	    &lt;p&gt;
	      Another good example could be Debian's apt-get.  I think it's command line interface almost perfect, and since many lisp developers are using debian based sytems, the interface would be very familiar.  As a client of a lisp library management service, here's what I think would be ideal, presented as a mock shell session (with user input in bold):
	      &lt;/p&gt;&lt;pre&gt;
~$ &lt;strong&gt;asdf install clsql&lt;/strong&gt;
Looking up definition for package clsql... package found.
GPG key not present, downloading from https://www.b9.com/kevin.gpg.asc... done.
Downloading clsql from http://files.b9.com/clsql/clsql-3.6.1.tar.gz... done.
Checking signature for clsql-3.6.1.tar.gz... file verified.
Checking dependencies...
  clsql depends upon uninstalled package uffi, install uffi? [ynaq] &lt;strong&gt;y&lt;/strong&gt;
    Looking up definition for package uffi... package found.
    Downloading uffi from http://files.b9.com/uffi/uffi-1.5.13.tar.gz... done.
    Checking signature for uffi-1.5.13.tar.gz... file verified.
    Checking dependencies... done.
    Dependencies met.
    Building uffi... done.
    uffi (1.5.13) installed.
Dependencies met.
Building clsql... done.
clsql (3.6.1) installed.
~$ &lt;strong&gt;asdf upgrade&lt;/strong&gt;
Scanning installed packages.
Checking clsql (3.6.1)... up to date.
Checking uffi (1.5.13)... up to date.
Checking my-unversioned-lib (20060503)... outdated!
  Looking up definition for package my-unversioned-lib... package found.
  Downloading my-unversioned-lib from http://example.org/my-unversioned-lib.tar.gz... done.
  Checking signature for my-unversioned-lib.tar.gz... file verified.
  Checking dependencies... done.
  Dependencies met.
  Building my-unversioned-lib... done.
  my-unversioned-lib (20060526) installed.
Upgrade complete, 3 packages processed.
  1 package upgraded.
  2 packages up to date.
	    &lt;/pre&gt;

	    Anyway, enough pipe-dreaming for me.
	    &lt;img src ="http://blogs.acceleration.net/ryan/aggbug/2955.aspx" width = "1" height = "1" /&gt;</description><body xmlns="http://www.w3.org/1999/xhtml"><p>
	      <a href="http://www.metabang.com/unclog/">Gary King</a> has been working on getting a good library system for lisp, and recently posted his <a href="http://www.metabang.com/unclog/publisha/notesona.html">Notes on a Lisp Library Management</a>.  I was going to email him back, but figured here was as good a place as any to give my comments.  Read that first.
	    </p>
	    <p>
	      Firstly, I applaud Gary for taking up this mantle.   I'm really still starting using lisp, and the lack of authoritative libraries is a hinderer for people like me.  Getting a comprehensive library management system is going to help folks like me get up to speed with lisp faster.  ASDF is a good start, but I think it needs to be built upon. Secondly, sorry if everything I'm saying here has already been considered.
	    </p>
	    <p>
	        The problem of getting libraries installed and updated with minimal user effort is a very studied problem with several decent implementations that could be used as starting points.
	    </p>
	    <p>
	      I think a lot of lessons can be learned by studying perl's <a href="http://cpan.org/">CPAN</a>.  CPAN has mirrors that automatically sync, and each user picks a list of mirrors near them.  Then you just ask for the package name, and it will download, make, run tests, then put the code in a proper system or user path such that programs can import the library.  Perhaps a port of CPAN would solve most of these problems.
	    </p>
	    <p>
	      Another good example could be Debian's apt-get.  I think it's command line interface almost perfect, and since many lisp developers are using debian based sytems, the interface would be very familiar.  As a client of a lisp library management service, here's what I think would be ideal, presented as a mock shell session (with user input in bold):
	      </p><pre>
~$ <strong>asdf install clsql</strong>
Looking up definition for package clsql... package found.
GPG key not present, downloading from https://www.b9.com/kevin.gpg.asc... done.
Downloading clsql from http://files.b9.com/clsql/clsql-3.6.1.tar.gz... done.
Checking signature for clsql-3.6.1.tar.gz... file verified.
Checking dependencies...
  clsql depends upon uninstalled package uffi, install uffi? [ynaq] <strong>y</strong>
    Looking up definition for package uffi... package found.
    Downloading uffi from http://files.b9.com/uffi/uffi-1.5.13.tar.gz... done.
    Checking signature for uffi-1.5.13.tar.gz... file verified.
    Checking dependencies... done.
    Dependencies met.
    Building uffi... done.
    uffi (1.5.13) installed.
Dependencies met.
Building clsql... done.
clsql (3.6.1) installed.
~$ <strong>asdf upgrade</strong>
Scanning installed packages.
Checking clsql (3.6.1)... up to date.
Checking uffi (1.5.13)... up to date.
Checking my-unversioned-lib (20060503)... outdated!
  Looking up definition for package my-unversioned-lib... package found.
  Downloading my-unversioned-lib from http://example.org/my-unversioned-lib.tar.gz... done.
  Checking signature for my-unversioned-lib.tar.gz... file verified.
  Checking dependencies... done.
  Dependencies met.
  Building my-unversioned-lib... done.
  my-unversioned-lib (20060526) installed.
Upgrade complete, 3 packages processed.
  1 package upgraded.
  2 packages up to date.
	    </pre>

	    Anyway, enough pipe-dreaming for me.
	    <img src ="http://blogs.acceleration.net/ryan/aggbug/2955.aspx" width = "1" height = "1" /></body></item></channel></rss>