While I am not an avid Haskell developer, there are some useful software suites (e.g. Pandoc) that are built on it. When managing dependencies for a distributed cloud environment, it is important to have a secure and replicable means of installing Haskell packages with tons of dependencies. So, I went about investigating the relationships between the various organizational players in the Haskell community. Here is my take.
What is Haskell?
Haskell is a functional programming language. Most people know that.
- Haskell is a language specification.
- The Glasgow Haskell Compiler (GHC) is the most popular compiler. You would be hard pressed to find another.
- GHC is developed and maintained by a (mostly unaffiliated) group of open-source developers.
What About Package Managers?
This is where is gets hairy. Everything is Free Open Source Software (FOSS), but there is some corporate interest.
- Cabal is a package specification developed and maintained by the core Haskell group.
- The Hackage repository is a huge repository of open-source libraries for Haskell, managed by the core Haskell group.
- The Stackage repository is a compatibility-tested repository of Hackage packages managed by FPComplete, a private company.
- If you manage packages in Haskell, you’ll probably end up using Stack.
- The Commercial Haskell Group is a group of people and organizations that manage Stack.
- FPComplete, is a (huge) part of the Commercial Haskell Group and the main driver of Stack, which relies primarily on Stackage, which is run by FPComplete.
If it isn’t already apparent, these tools all encapsulate one another.
What Do I Do With This Information?
Most packages will recommend you use any of the above methods or tools for installing Haskell software (e.g. Pandoc). I recommend you don’t waste your time and do the following. Except for extremely specific cases, the below guidelines will get your Haskell tool installed as soon as possible.
- Use Stack as a non-root user.
- Trust FPComplete and its mirrors.
- Ask reddit.com/r/haskell for help if you get stuck. They have a great community over there.