Haskell Web Development – A Freely Available Book
Haskell Web Development Book
Update 1 (Nov. 02): by popular demand, shipping for print copies is now available internationally!
Hi! My name is Allele Dev. I want to write a book that teaches Haskell for web development. It’s my goal to provide a freely available text that builds on existing Haskell texts like:
- Real World Haskell
- Parallel and Concurrent Haskell
- Haskell Programming From First Principles
- Haskell and Yesod
– with a focus on practical backend Haskell. I will expand on those books and provide more coverage on topics like:
- Modern Haskell project, build, and dependency management
- Library evaluation and selection: routing, JSON, storage, and more
- Data modeling with types: connecting logic to storage and views
- Testing: property-based, spec-based, doc-tests, and ad-hoc
- Benchmarking: end-to-end and component-based
- Metrics collection, logging, and error-handling
I’ve worked in Haskell web development for over a year now, in Haskell for three years, and in web development in general for three years. I’m comfortable writingon technical subjects, as well as writing code. I’ve taught Haskell at every company I’ve been employed at, and I’ve hosted two workshops teaching Haskell this year:
This book will be a gift from me to everyone, and it is exactly what I want to be working on. Help me make it happen!
What I Need & What You Get
I want to work full-time on this book for 3 months. $20,000 covers my cost of living for that long.
For this much support, I guarantee that the following will be completed within 3 months. This is the core of the project:
- Source code (BSD-3 licensed) freely available with guaranteed reproducible builds via stack
- Source for book chapters available under CC-BY-4.0 license
- Instructions to build PDF/ePUB using pandoc
- Exercises for each chapter
- Solutions linked separately (spoiler-free!) for all exercises
- Explanations for given solutions
- Public issue tracker for typos/clarifications/etc.
- Support for 3 months after the project for addressing issues
The book will always be freely available.
Here is a preliminary outline of the book chapters:
Testing will be a focus throughout. After being introduced in chapter 4, tests will be used along with code snippets when introducing new ideas. This will develop a coding style that makes effective use of types where possible, yet continues to validate assumptions during development.
Each chapter will also give some coverage to relevant, alternative libraries. There’s many ways to do things in Haskell, and I intend to provide a sampling of that variety.
If I do not meet the goals, here’s what can be expected:
If I do meet the minimum goal, there’s a lot more I can write about to make the coverage more comprehensive! In particular, I can add chapters on:
- Frontend development: PureScript, Elm, GHCJS, Om, etc.
- Haskell HTTP API Clients
- Foreign Function Interface: C, Rust, C++
- Other serialization: XML, HTML, etc.
- More abstraction and type techniques for safer code
- Performance tuning
- Advanced authentication/authorization
- Interfacing with other systems
- Additional storage engines: document stores, file system, etc.
- Data streaming
If I make it to the minimum funding point, I will announce a poll that allows funders to choose in what order these will be addressed. You’re welcome to suggest additional topics of interest.
For every additional $3000, I will dedicate half a month towards providing coverage on one of these topics in the order determined by poll votes.
Risks & Challenges
In the case that I don’t complete the primary content in three months for whatever reason, here’s the contingency plan:
- Dedicate a quarter of my time each month towards completing the book
- Seek additional funding via Patreon to cover my living costs
Content will be published while the book is in development, so you’ll be able to track progress!
Another potential risk: what if breaking changes appear in the Haskell web development ecosystem? Here’s a few possibilities and how I plan to deal with them:
- New compiler, GHC 8.0: book targets GHC 7.10 and ensures builds via stack
- Library changes will be dealt with similarly
Other Ways You Can Help
Let others know I’m working on this! Tweet about the campaign. Let me know what you think.