`functorrent' is a bittorrent client. building -------- I suggest using cabal sandbox. Steps: clone the repo; cd functorrent; 1. cabal sandbox init 2. wget http://www.stackage.org/lts/cabal.config 3. cabal install --only-dependencies 4. cabal build # binaries in ./dist/built/functorrent/* Goals ----- - Become more profient with Haskell. - Implement something non-trivial with Haskell (crypto, file operations, network operations, concurrency, bit twiddling, DHT). - Follow the spec - https://wiki.theory.org/BitTorrentSpecification - Easy for newbies like me to read and understand along side the spec. - doctest and quickcheck tests. - Follow Haskell Style Guide - https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md Status ------ - decode torrent files (bencoding) - talk to the tracker and get the peer list TODO ---- - Test suite. - Peer protocol. - Get the file download working in the simplest possible way. - Concurrency (threads per peer) - other advanced features of Bit Torrent (like DHT).