Library Infrastructure Proposal & Home Page
ijones at syntaxpolice.org
Wed Sep 24 18:18:37 EDT 2003
Followups to libraries at haskell.org please.
After many rounds of email and discussion, some wiki work, and
discussion at the HIM, I've finally put together a proposal for the
Library Infrastructure Project. I've inserted the introduction
below. The draft proposal itself is available in a variety of
I've also started a web page for the project under the haskell.org
Please let me know if there's anything that needs to be added, if
anything is confusing, etc. Comments and questions are welcome by
email or on the libraries at haskell.org mailing list.
I expect to be moving a lot of stuff off of the wiki page since it is
Library Infrastructure Project Proposal
The Library Infrastructure Project is an effort to provide a
framework for developers to more effectively contribute their
software to the Haskell community.
The Haskell Implementations come included with a good set
of standard libraries, but this set is constantly growing and
is maintained centrally. This model does not scale up well,
and as Haskell grows in acceptance, the quality and quantity
of available libraries is becoming a major issue. There are a
wide variety of Haskell Implementations (both compilers and
interpreters), each of which target a variety of hardware
architectures and operating systems. There are also a number
of different groups and individuals providing libraries, and
these libraries depend upon each other and they depend upon
external systems such as Java or GTK.
It can be very difficult for an end user to manage these
dependencies and build all the necessary software at the
correct version numbers on their platform: there is currently
no generic build system to abstract away differences between
Haskell Implementations and operating systems .
The Library Infrastructure Project seeks to provide some
relief to this situation by building tools to assist
developers, end users, and operating system distributers.
This is a draft proposal. If you have comments, please email
Isaac Jones. The latest version of this document should be
available in a variety of formats from the Library
Infrastructure Project home page.
Table of Contents
1. High-Level Overview
2. Issues Facing Developers
2.1. Issues Facing Packagers
2.2. Why We Should Solve This
3. A Solution for Haskell in Haskell
3.1. The Module Design
3.2. But Why Should We Use Haskell?
3.3. Setup.lhs Command-Line Interface
3.4. An Example Setup.lhs Script
4. Distribution Module
4.3.1. PackageConfig Data Structure
4.4. haskell-config Command-line interface
5. Use Cases
6. Means of Distribution and Layered Tools
7. Development Plan
A. Related Systems
A.2. Python Distutils
A.3. CPAN and Boost
A.4. FreeBSD's Ports System
A.5. The XEmacs Packaging System
A.6. Make-Based Systems
1. High-Level Overview
On a high level, we say that we want the system to help the
user to install packages (whether they be libraries or
applications) and their dependencies. To accomplish this, we
propose a system similar to Python's Distutils (Section A.2)
where each Haskell tool is distributed with a script (Section
3.4) which has a standard command-line interface. This script
will provide a familiar user interface (Section 3.3) for
compiling, installing, and removing packages and their
For instance, to install the HUnit package, the user might
download the source code from the web site, change into the
HUnit directory, and type ./Setup.lhs install default, which
would build and install the HUnit package for the default
compiler. Similarly, he might type ./Setup.lhs install nhc to
install the package for NHC.
Other tasks might be necessary to make the package known to
the system, such as registering it with the Haskell
Implementation of interest (Section 4.3). Such tasks would
also be performed by this Setup program.
FULL TEXT AT:
More information about the Libraries