Difference between revisions of "Haskell Platform"

From HaskellWiki
Jump to navigation Jump to search
Line 42: Line 42:
   
 
* All packages in a particular HP version must have a consistent install plan.
 
* 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.
+
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.
 
There is code in cabal-install to check the last two requirements.
Line 48: Line 49:
 
Other possible ideas for quality standards we might want to require:
 
Other possible ideas for quality standards we might want to require:
   
  +
* Uses base library types, to force API standardisation
 
* 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.
 
* 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.
   
Line 74: Line 76:
 
* Native distro packages
 
* Native distro packages
   
The HP can be a meta package on hackage.haskell.org, that simply
+
The HP will be the first '''meta-package''' on hackage, that depends on the platform library set. With this,
depends on the core set.
 
   
 
cabal install haskell-platform
 
cabal install haskell-platform
   
  +
will be possible.
should work, for example.
 
 
Beyond this, we'll need a way 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 ==
 
== Related ==

Revision as of 07:02, 30 September 2008

Haskell: Batteries Included


The Haskell Platform (HP) is the name of a new "blessed" library suite on which to build further Haskell libraries and applications, by taking the best libraries from the nearly 800 libraries of haskell.org. It provides a comprehensive, stable and quality tested base for Haskell projects to work from.

Libraries in the platform, with area based on number of libraries that depend on it Graph of library dependencies. The platform is the center of the graph

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

Inclusion or exclusion in the platform will be drive by metrics, objective measurements we can extract from code. Determining appropriate metrics is a milestone.

  • 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:

  • Uses base library types, to force API standardisation
  • 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 will be the first meta-package on hackage, that depends on the platform library set. With this,

   cabal install haskell-platform

will be possible.

Related