Difference between revisions of "Haskell Platform"

From HaskellWiki
Jump to: navigation, search
(add new status and volunteers sections)
Line 1: Line 1:
'''Haskell: Batteries Included'''
 
  +
[[Image:Platform.png|300px]]
   
 
__NOTOC__
 
__NOTOC__
   
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 more than 900 libraries of [http://hackage.haskell.org haskell.org]. It provides a comprehensive, stable and quality tested base for Haskell projects to work from.
+
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 more than 1200 libraries of [http://hackage.haskell.org haskell.org]. It provides a comprehensive, stable and quality tested base for Haskell projects to work from.
 
[[Image:Small-package-bubbles.png|Libraries in the platform, with area based on number of libraries that depend on it]] [[Image:Haskell-graph.png|Graph of library dependencies. The platform is the center of the graph]]
 
 
The first image is a
 
[http://blog.well-typed.com/wp-content/uploads/2008/09/package-sizes-all-crop.png bubble graph of hackage], with the "platform" indicated, to give a visual sense
 
of how the platform relates to the rest of hackage. The second image
 
shows a [http://galois.com/~dons/tmp/hackage.png graph of hackage dependencies], with a circle drawn around the densest part of the graph,
 
to give an idea of how the platform satisfies a large proportion of
 
dependencies.
 
   
 
== Status ==
 
== Status ==
   
There are no more policy questions to resolve for the first release. It
 
  +
[http://code.haskell.org/haskell-platform/haskell-platform.cabal The Haskell Platform 2009.0.0] (alpha).
is a matter of getting things done.
 
  +
 
The first platform release specifies:
   
The first platform release will contain:
 
 
* ghc-6.10.2
 
* ghc-6.10.2
* the "extra libs" ([http://trac.haskell.org/haskell-platform/ exact list])
+
* the "extra libs" provided by GHC 6.8.x through GHC 6.10.x ([http://trac.haskell.org/haskell-platform/ exact list])
 
* haddock, happy and alex
 
* haddock, happy and alex
* the cabal command line tool and it's dependencies.
+
* the cabal command line tool (cabal-install) and it's dependencies.
  +
  +
== Distributions ==
  +
  +
Distros that support the Haskell Platform
   
The plan calls for binary installers for Windows and OSX, a generic
 
  +
{|
source tarball for Unix, and native packages for distros.
 
  +
|-
  +
| ''System''
  +
| ''Status''
  +
|-
  +
|Arch
  +
| ''To be constructed with cabal2arch''
  +
|-
  +
|Debian
  +
|
  +
|-
  +
|Fedora
  +
|
  +
|-
  +
|Gentoo
  +
| Available in the gentoo haskell overlay
  +
|-
  +
|Ubuntu
  +
|
  +
|-
  +
| Generic Unix Installer
  +
|
  +
|-
  +
|
  +
|
  +
|-
  +
|Windows Installer
  +
|
  +
|-
  +
OSX Installer
  +
|
  +
|-
  +
|}
   
 
== Volunteers needed! ==
 
== Volunteers needed! ==

Revision as of 21:05, 17 April 2009

Platform.png


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 more than 1200 libraries of haskell.org. It provides a comprehensive, stable and quality tested base for Haskell projects to work from.

Status

The Haskell Platform 2009.0.0 (alpha).

The first platform release specifies:

  • ghc-6.10.2
  • the "extra libs" provided by GHC 6.8.x through GHC 6.10.x (exact list)
  • haddock, happy and alex
  • the cabal command line tool (cabal-install) and it's dependencies.

Distributions

Distros that support the Haskell Platform

OSX Installer
System Status
Arch To be constructed with cabal2arch
Debian
Fedora
Gentoo Available in the gentoo haskell overlay
Ubuntu
Generic Unix Installer
Windows Installer

Volunteers needed!

We are calling for volunteers for an action group. We need volunteers to take charge of various platforms and to manage the overall release. We would like to release a beta at the upcoming Haskell Hackathon in Utrecht (April 17-19). However this will only happen if people volunteer to help build distributions for different platforms.

In particular we need:

  • Release manager / coordinator
  • Website with downloads and release notes
  • Someone in charge of each platform:
    • Windows installer
    • OSX installer
    • Generic Unix source tarball
    • Distribution packages: debian, fedora, gentoo, arch, BSD* etc

The person in charge of each platform is responsible for building a appropriate native packages / installer and coordinating the effort to test that the stuff installs and works ok.

If no one volunteers, we simply won't have an Haskell Platform release for that platform.

Please join the mailing list and volunteer!

Resources

Documentation

Quality Control

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

  • cabal-installable libraries with haddocks.
  • packages should follow the Package versioning policy
  • The set of HP packages + core libs must be closed. In other words, 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.
  • Have a declared correctness test suite.
  • Have a declared performance test suite.

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.

Version policy

yyyy.major.minor,

  • odd major numbers indicate unstable branches
  • minor numbers indicate bug fixes only, no API changes.

Examples:

  • 2008.0.0 -- first biannual major stable release
  • 2008.0.1 -- minor release, bug fix only
  • 2008.1 -- unstable branch leading to next major release
  • 2008.2.0 -- second annual major release, API changes
  • 2008.2.1 -- bug fixes
  • 2008.3 -- unstable branch of 2008
  • 2009.0.0 -- first release in 2009.

Additionally, if a library is accepted into the platform, it is suggested its version number be lifted to 1.0, if not already at 1.0.

Licenses

The initial release is expected to include only BSD3 licensed software.

Programs

The platform includes programs, such as haddock or cabal-install. These aren't nicely tracked from the cabal meta package yet.

Build system

Two ways to build the bundle:

  • generate a sh script from the .cabal file

Or, build cabal-install, have the components of the platform as a mini, local hackage archive, and then ask cabal install to satisfy and install the dependencies from the platform meta-cabal file.

Related projects

Developers

Haskell Platform core team:

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