Difference between revisions of "Haskell Platform"

From HaskellWiki
Jump to: navigation, search
(no clash requirement)
Line 4: Line 4:
 
that would be the minimum standard for Haskell library support on a
 
that would be the minimum standard for Haskell library support on a
 
system.
 
system.
  +
  +
[[Image:Small-package-bubbles.png]]
   
 
More generally, if we want tools as well as libraries, then the simpler name
 
More generally, if we want tools as well as libraries, then the simpler name
 
''Haskell Platform'' may be more appropriate than the original name ''Haskell Library Platform''.
 
''Haskell Platform'' may be more appropriate than the original name ''Haskell Library Platform''.
   
There are now more than 500 libraries available for Haskell, on
+
There are now around 800 libraries available for Haskell, on
 
[http://hackage.haskell.org hackage]. Choosing which libraries to
 
[http://hackage.haskell.org hackage]. Choosing which libraries to
 
support on a distro is currently done on an ad hoc basis, with
 
support on a distro is currently done on an ad hoc basis, with
 
significant variation from one distribution to another.
 
significant variation from one distribution to another.
   
Some, such as Arch Linux, or Gentoo Linux, include as many libraries as
 
  +
The goal of the Haskell Platform is to provide a comprehensive, reliable base of libraries on which Haskell programmers can build anything they may wish. It should supply a significant percent of the dependencies required to build everything on hackage.haskell.org, and have a clear process for moving forward.
possible (typically over 400), while others have the bare minimum
 
required to build ghc and say, darcs and xmonad.
 
   
The Haskell community needs to provide direction and blessing to a
 
  +
== Developers ==
library set that should be available and adopted, to further encourage
 
Haskell use.
 
   
Ensuring that the chosen set of library versions works well together, and
 
  +
Haskell Platform core team:
with a particular version of GHC (and other tools), is a major goal.
 
   
== Discussion ==
 
  +
* Duncan Coutts (Well Typed)
  +
* Don Stewart (Galois)
   
* [http://cgi.cse.unsw.edu.au/~dons/blog/2008/07/29#batteries A proposal paper] for the 2008 Haskell Workshop.
 
  +
== Resources ==
   
* [http://thread.gmane.org/gmane.comp.lang.haskell.cvs.ghc/28062/focus=28807 A discussion] took place in June and July 2008 about the direction of the HLP.
 
  +
* [http://code.haskell.org/haskell-platform Haskell Platform project repository].
* [http://haskell.org/~duncan/ghc/%23ghc-2008-07-16.log More occurred during the #ghc meeting]
 
  +
* [http://trac.haskell.org/haskell-platform/ Project bug tracker]
   
== Next Steps==
 
  +
== Documentation ==
   
The next step in the process:
 
  +
* [http://cgi.cse.unsw.edu.au/~dons/blog/2008/07/29#batteries The Haskell Platform Proposal] for the 2008 Haskell Symposium
   
* Define admission progress: how does a package get into the HLP
 
  +
* Bryan O'Sullivan's [http://www.serpentine.com/blog/2008/09/26/some-notes-on-the-future-of-haskell-and-fp/ writeup] of the future of Haskell discussion
* Sort out the release team
 
* Define the installation expectations
 
* Set up a bug tracker for the HLP project.
 
* Create a repo.
 
   
==Criteria==
 
  +
* [http://thread.gmane.org/gmane.comp.lang.haskell.cvs.ghc/28062/focus=28807 A discussion] took place in June and July 2008 about the direction of the HLP.
   
* GHC would build against its own core libraries, but would be generally distributed with the HLP.
 
  +
* [http://haskell.org/~duncan/ghc/%23ghc-2008-07-16.log More occurred during the #ghc meeting]
 
* The HLP should provide good coverage for all typical tasks one might want to accomplish with the language, given library availability.
 
 
* No bottlenecks: release of the HLP should be entirely independent from GHC, and also independent of the development cycle of any individual library or tool.
 
 
* HP should be separately upgradeable
 
   
 
===Quality Control===
 
===Quality Control===
Line 81: Line 69:
 
* 100% coverage
 
* 100% coverage
 
* Have real world use.
 
* Have real world use.
  +
* Answer a notable set of build dependencies.
   
 
== Distribution format ==
 
== Distribution format ==
  +
  +
* Source distribution
  +
* .tar.gz bundle compatible with extra-libs
  +
* Windows Installed
  +
* Native distro packages
   
 
The HP can be a meta package on hackage.haskell.org, that simply
 
The HP can be a meta package on hackage.haskell.org, that simply
 
depends on the core set.
 
depends on the core set.
   
cabal install hp
+
cabal install haskell-platform
   
 
should work, for example.
 
should work, for example.
Line 93: Line 87:
 
Beyond this, we'll need a why to provide single tarballs of the set,
 
Beyond this, we'll need a why to provide single tarballs of the set,
 
windows installers et al. Will GHC need cabal-install?
 
windows installers et al. Will GHC need cabal-install?
 
''platform'' would be much more descriptive as a name for this package [[User:MichalPalka|MichalPalka]] 23:56, 24 July 2008 (UTC)
 
 
== Current library set ==
 
 
===Core system===
 
 
This will be on every system, as they're required for GHC to build:
 
 
* array
 
* base
 
* bytestring
 
* Cabal
 
* containers
 
* directory
 
* editline
 
* filepath
 
* haskell98
 
* hpc
 
* integer-gmp
 
* old-locale
 
* old-time
 
* packedstring
 
* pretty
 
* process
 
* random
 
* template-haskell
 
* unix OR Win32
 
 
===Extra libraries===
 
 
Current libraries available in the 'extralibs' bundle provided with GHC,
 
a descendent of what used to by fptools, with a few additions.
 
 
* ALUT
 
* GLUT
 
* HUnit
 
* ObjectIO
 
* OpenAL
 
* OpenGL
 
* QuickCheck
 
* cgi
 
* fgl
 
* haskell-src
 
* html
 
* mtl
 
* network
 
* parsec
 
* parallel
 
* regex-base
 
* regex-compat
 
* regex-posix
 
* stm
 
* time
 
* xhtml
 
   
 
== HLP: Batteries Included==
 
== HLP: Batteries Included==
Line 170: Line 109:
 
* c2hs
 
* c2hs
 
* hsc2hs
 
* hsc2hs
 
==Release mechanics==
 
 
==Public "Haskell Platform Compliant" list==
 
 
To encourage adoption of the HLP, distributions that support the HLP
 
will be publically listed as e.g. "Haskell Platform Compliant"
 
 
 
==History==
 
 
* fptools
 
* extralibs/ core libs
 
   
 
== Related ==
 
== Related ==
Line 189: Line 115:
 
* [http://live.gnome.org/ReleasePlanning Gnome's release process]
 
* [http://live.gnome.org/ReleasePlanning Gnome's release process]
 
* [http://live.gnome.org/ReleasePlanning/ModuleProposing How to propose modules for GNOME]
 
* [http://live.gnome.org/ReleasePlanning/ModuleProposing How to propose modules for GNOME]
  +
* [http://dutherenverseauborddelatable.wordpress.com/2008/08/29/ocaml-batteries-included-release-0-where-it-should-all-have-begun/ OCaml Batteries]
   
 
[[Category:Community]]
 
[[Category:Community]]

Revision as of 06:25, 30 September 2008

Haskell: Batteries Included

The Haskell Platform (HP) is the name of a proposed library set that would be the minimum standard for Haskell library support on a system.

Small-package-bubbles.png

More generally, if we want tools as well as libraries, then the simpler name Haskell Platform may be more appropriate than the original name Haskell Library Platform.

There are now around 800 libraries available for Haskell, on hackage. Choosing which libraries to support on a distro is currently done on an ad hoc basis, with significant variation from one distribution to another.

The goal of the Haskell Platform is to provide a comprehensive, reliable base of libraries on which Haskell programmers can build anything they may wish. It should supply a significant percent of the dependencies required to build everything on hackage.haskell.org, and have a clear process for moving forward.

Developers

Haskell Platform core team:

  • Duncan Coutts (Well Typed)
  • Don Stewart (Galois)

Resources

Documentation

  • Bryan O'Sullivan's writeup of the future of Haskell discussion
  • A discussion took place in June and July 2008 about the direction of the HLP.

Quality Control

  • cabal-installable libraries with haddocks.
  • The set of HP packages + core libs must be closed. That is all haskell dependencies must be from within the HP packages or core libs. Dependencies on C libs can be external.
  • All packages in a particular HP version must have a consistent install plan.
 That means only one version of each package and all dependencies on packages must be satisfied by the version in the HP package set.

There is code in cabal-install to check the last two requirements.

Other possible ideas for quality standards we might want to require:

  • exposed module names must follow the hierarchical module name convention, meaning they must be in an appropriate place in the module namespace. In particular, no clash of module names should occur within the HP.

Other heuristics

Packages set for inclusion should:

  • Have a maintainer
  • Have a bug tracker
  • Use the correct versioning
  • Build with cabal
  • Work on all arches.

Further goals:

  • -Wall clean
  • 100% coverage
  • Have real world use.
  • Answer a notable set of build dependencies.

Distribution format

  • Source distribution
  • .tar.gz bundle compatible with extra-libs
  • Windows Installed
  • Native distro packages

The HP can be a meta package on hackage.haskell.org, that simply depends on the core set.

   cabal install haskell-platform

should work, for example.

Beyond this, we'll need a why to provide single tarballs of the set, windows installers et al. Will GHC need cabal-install?

HLP: Batteries Included

/Batteries_Included

Tools

Language-processing tools should probably also be considered to be part of the platform. Commonly-needed tools include:

  • ghc
  • happy
  • alex
  • haddock
  • cpphs
  • cabal-install (now known simply as cabal?)

What else might we consider?

  • DrIFT or derive
  • throw in another compiler - e.g. Hugs?
  • c2hs
  • hsc2hs

Related