Difference between revisions of "Haskell Platform"

From HaskellWiki
Jump to navigation Jump to search
Line 7: Line 7:
 
See the [http://trac.haskell.org/haskell-platform/wiki Platform Issue Tracker] for further information.
 
See the [http://trac.haskell.org/haskell-platform/wiki Platform Issue Tracker] for further information.
   
== Status ==
+
== Specification ==
   
 
The platform is specified via a Cabal file:
 
The platform is specified via a Cabal file:
   
* '''[http://code.haskell.org/haskell-platform/haskell-platform.cabal The Haskell Platform 2009.2.0] (alpha) '''
+
* '''[http://code.haskell.org/haskell-platform/haskell-platform.cabal The Haskell Platform 2009.2.0] (beta) '''
   
The initial release targets:
+
The initial release targets, 2009.2.0
   
 
* ghc-6.10.2
 
* ghc-6.10.2
Line 20: Line 20:
 
* cabal-install and its dependencies.
 
* cabal-install and its dependencies.
   
== Distributions ==
 
 
Distros that support the Haskell Platform
 
 
{|
 
|-
 
| '''System'''
 
| '''Status'''
 
|-
 
|Arch
 
| ''To be constructed with cabal2arch''
 
|-
 
|Debian
 
|
 
|-
 
|Fedora
 
|
 
|-
 
|Gentoo
 
| Available in the gentoo haskell overlay, large parts in portage
 
|-
 
|Nix(OS)
 
| Metapackage available for testing in Nixpkgs
 
|-
 
|Ubuntu
 
|
 
|-
 
| Generic Unix Installer
 
|
 
|-
 
|
 
|
 
|-
 
|Windows Installer
 
|
 
|-
 
| OSX Installer
 
|
 
|-
 
|}
 
   
 
== Volunteers needed! ==
 
== Volunteers needed! ==
   
  +
The platform requires installer developers, and distro maintainers, for every OS distro we care about. If you are able to help out on your system, please sign up to the mailing list, or drop by #ghc @ freenode.
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 [[Hac5|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!
 
 
=== Hackathon Update ===
 
 
We finalised the list of packages that will be in the first release. See:
 
http://trac.haskell.org/haskell-platform/wiki/Library/VersionMatrix
 
 
We managed to get a beta version of the generic tarball for unix systems. Get that here and try it out:
 
http://haskell.org/~duncan/haskell-platform-2009.0.0.tar.gz
 
 
Chris and Eelco made a very nice design for the front page of a "Get Haskell" download site for the platform.
 
 
Gregory reported progress on the OSX front. Turns out there will need to be more work to do new OSX Leopard-style installers.
 
   
 
== Resources ==
 
== Resources ==
Line 103: Line 33:
 
* IRC channel: #ghc @ freenode.org
 
* IRC channel: #ghc @ freenode.org
 
* [http://www.galois.com/blog/2009/03/23/one-million-haskell-downloads/ Download statistics for Haskell Packages]
 
* [http://www.galois.com/blog/2009/03/23/one-million-haskell-downloads/ Download statistics for Haskell Packages]
  +
* [http://www.cse.unsw.edu.au/~dons/papers/CPJS08.html Haskell: Batteries Included], position paper by Don, Duncan and Isaac.
 
   
 
== Documentation ==
 
== Documentation ==
   
* [http://cgi.cse.unsw.edu.au/~dons/blog/2008/07/29#batteries The Haskell Platform Proposal] for the 2008 Haskell Symposium
+
* [http://www.cse.unsw.edu.au/~dons/papers/CPJS08.html Haskell: Batteries Included], position paper by Don, Duncan and Isaac.
 
* [http://blog.well-typed.com/2008/11/haskell-platform-talk-at-the-london-haskell-users-group/ Slides from the Haskell Platform talk]
 
* [http://blog.well-typed.com/2008/11/haskell-platform-talk-at-the-london-haskell-users-group/ Slides from the Haskell Platform talk]
 
* [http://blog.well-typed.com/2008/09/hackage-hacking-and-demo/ Haskell Platform discussion]
 
* [http://blog.well-typed.com/2008/09/hackage-hacking-and-demo/ Haskell Platform discussion]
Line 113: Line 43:
 
* [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://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://haskell.org/~duncan/ghc/%23ghc-2008-07-16.log More occurred during the #ghc meeting]
 
* [http://haskell.org/~duncan/ghc/%23ghc-2008-07-16.log More occurred during the #ghc meeting]
 
===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.
 
* BSD licensed
 
   
 
== Distribution format ==
 
== Distribution format ==
Line 164: Line 56:
   
 
will be possible.
 
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 ==
 
== Licenses ==
Line 192: Line 65:
 
The platform includes programs, such as haddock or cabal-install.
 
The platform includes programs, such as haddock or cabal-install.
 
These aren't nicely tracked from the cabal meta package yet.
 
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 ==
 
== Related projects ==
Line 212: Line 75:
 
== Developers ==
 
== Developers ==
   
Haskell Platform core team:
+
Haskell Platform infrastructure team:
   
 
* Duncan Coutts (Well Typed)
 
* Duncan Coutts (Well Typed)

Revision as of 21:19, 4 May 2009

Platform.png


The Haskell Platform (HP) is the name of the blessed, core library suite for Haskell. By taking the best libraries from the more than 1200 libraries of Hackage, it provides a comprehensive, stable and mature base for Haskell projects to work from.

See the Platform Issue Tracker for further information.

Specification

The platform is specified via a Cabal file:

The initial release targets, 2009.2.0


Volunteers needed!

The platform requires installer developers, and distro maintainers, for every OS distro we care about. If you are able to help out on your system, please sign up to the mailing list, or drop by #ghc @ freenode.

Resources


Documentation

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.

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.

Related projects

Developers

Haskell Platform infrastructure team:

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