From 5bc40bbecdd4e8f7812b3ab1731aceef0d350928 Mon Sep 17 00:00:00 2001 From: Gil Mizrahi Date: Mon, 9 Aug 2021 22:43:01 +0300 Subject: [PATCH 1/4] Create 003-perf-book.md --- proposals/003-perf-book.md | 69 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 proposals/003-perf-book.md diff --git a/proposals/003-perf-book.md b/proposals/003-perf-book.md new file mode 100644 index 0000000..04779a4 --- /dev/null +++ b/proposals/003-perf-book.md @@ -0,0 +1,69 @@ +# Haskell Performance Tuning Book + +## Introduction + +Performance matters, and Haskell’s runtime and memory models are sufficiently different from traditional programming languages to require additional knowledge, which isn’t commonly covered by most learning resources, in order to effectively debug and tune the performance of Haskell software. + +This proposal aims to bridge this gap by creating a learning resource in the form of a book describing how to write fast idiomatic Haskell, and how to debug performance issues and tune Haskell programs. + +## Goals + +We would like to create a **freely available online book** which: + +- Is relatively **short** +- Can be **maintained over time**, to make sure this knowledge remains accurate and up-to-date +- Targets **hobbyists and professional** Haskell developers +- Focuses on **real world** usage and techniques + +These goals lead to the following suggestions: + +- Writing this book should be a **community-driven** effort +- This book should focus on writing **idiomatic Haskell** code that is fast rather than advanced state-of-the-art techniques +- The book should cover the **principles and mindset** of performant Haskell code as well as provide concrete examples of debugging and tuning the performance of a Haskell project using **case studies** + +## Motivation + +One motivation for this book is that it can help **drive the adoption** of Haskell in professional settings by providing knowledge regarding what to do when debugging and tuning performance is necessary, and help **improve the confidence** of practitioners and would-be practitioners. + +## Prior Art (if applicable) + +[Haskell High Performance Programming / Samuli Thomasson (2016, Packt)](https://www.packtpub.com/product/haskell-high-performance-programming/9781786464217) + +## People + +The following roles are necessary to make this project successful: + +- **Subject matter expert**(s): directing the “spirit of the book” and/or sharing knowledge with writers +- **Writer**(s): writing the content of the book +- **Reviewer**(s): providing feedback and corrections +- **Editor**(s): quality assurance for the book + +## Timeline + +## Outcomes + +## Procedure + +Some work on this book has already started, specifically, drafting a [ToC](https://soupi.github.io/gotta-go-fast/01-about/00-about.html), organizing book infrastructure and tooling using github actions and [mdbook](https://github.com/rust-lang/mdBook), and drafting a [contributing guide](https://github.com/soupi/gotta-go-fast/blob/rfc/CONTRIBUTING.md). + +## Help from the Haskell Foundation + +There are a few items we would like help from the Haskell Foundation with that would greatly improve the ability to deliver a high quality book: + +- Help with **getting the word out** about the project and looking for contributors +- Finding an **expert advisor** (or more than one) who could direct the “spirit” of the book +- Finding a **editor** (or more than one) and potentially paying them to ensure the quality of the text +- Paying for **design resources** for graphics and overall look and feel in case those are needed +- Asking for **feedback and/or contribution** from specific people or companies to ensure the quality and validity of the information and solutions presented in the book + +## Risks + +- Submitted content must abide by our [Guidelines for Respectful Communication](https://haskell.foundation/guidelines-for-respectful-communication). +- Since the knowledge of how to write fast idiomatic Haskell isn’t very common, we risk not having many **contributors**. +- **Maintenance** of the content, code and tooling usage can be difficult to achieve. +- By making this project community-driven, contributions will likely **vary in quality and style**. +- Advanced knowledge on how to make Haskell blazingly fast will still remain folklore knowledge. + +## Acknowledgements + +There are many important resources on Haskell performance on the internet and we’d like to acknowledge them. A few of them can be viewed on the [reference list](https://soupi.github.io/gotta-go-fast/07-conclusion/00-next.html) for the book. From 2df41b621d666f1ed9e34964fdbb9ae2877f47cf Mon Sep 17 00:00:00 2001 From: Gil Mizrahi Date: Tue, 17 Aug 2021 08:28:40 +0300 Subject: [PATCH 2/4] Update after review --- proposals/003-perf-book.md | 36 +++++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/proposals/003-perf-book.md b/proposals/003-perf-book.md index 04779a4..cb79bfc 100644 --- a/proposals/003-perf-book.md +++ b/proposals/003-perf-book.md @@ -18,30 +18,44 @@ We would like to create a **freely available online book** which: These goals lead to the following suggestions: - Writing this book should be a **community-driven** effort -- This book should focus on writing **idiomatic Haskell** code that is fast rather than advanced state-of-the-art techniques -- The book should cover the **principles and mindset** of performant Haskell code as well as provide concrete examples of debugging and tuning the performance of a Haskell project using **case studies** +- This book should focus on writing **idiomatic Haskell** code that is fast + rather than advanced state-of-the-art techniques +- The book should cover the **principles and mindset** of performant Haskell + code as well as provide concrete examples of debugging and tuning the + performance of a Haskell project using **case studies** +- The book should **cover a modern "best-practice" toolset** used to generate + data for examining a program's characteristics, and **methods for analyzing** + and understanding the characteristics of a program using that data ## Motivation -One motivation for this book is that it can help **drive the adoption** of Haskell in professional settings by providing knowledge regarding what to do when debugging and tuning performance is necessary, and help **improve the confidence** of practitioners and would-be practitioners. +One motivation for this book is that it can help **drive the adoption** of Haskell +in professional settings by providing knowledge regarding what to do when debugging +and tuning performance is necessary, and help **improve the confidence** of +practitioners and would-be practitioners. -## Prior Art (if applicable) +**Currently, there is no clear path** to becoming proficient in writing performant Haskell. +One must search the web for tutorials and blogs posts in the hopes of finding up to date +information, and keep an eye on the ever changing landscape of tools and techniques. -[Haskell High Performance Programming / Samuli Thomasson (2016, Packt)](https://www.packtpub.com/product/haskell-high-performance-programming/9781786464217) +Creating a book would provide a clear and up-to-date path for learners to learn +about performant Haskell, and will help advanced users of Haskell to refresh their knowledge +on latest advances and best practices as well. -## People +## Prior Art (if applicable) -The following roles are necessary to make this project successful: +[Parallel and Concurrent Programming in Haskell / Simon Marlow (2013, O'Reilly)](https://simonmar.github.io/pages/pcph.html) +[Haskell High Performance Programming / Samuli Thomasson (2016, Packt)](https://www.packtpub.com/product/haskell-high-performance-programming/9781786464217) -- **Subject matter expert**(s): directing the “spirit of the book” and/or sharing knowledge with writers -- **Writer**(s): writing the content of the book -- **Reviewer**(s): providing feedback and corrections -- **Editor**(s): quality assurance for the book ## Timeline ## Outcomes +1. A freely available online book, hosted on Github +2. A repository containing the content of the book in markdown format, infrastructure for updating it, and a contribution process and guidelines +3. Content covering the latest developments in tooling, techniques and best practices with regards to performance programming in Haskell + ## Procedure Some work on this book has already started, specifically, drafting a [ToC](https://soupi.github.io/gotta-go-fast/01-about/00-about.html), organizing book infrastructure and tooling using github actions and [mdbook](https://github.com/rust-lang/mdBook), and drafting a [contributing guide](https://github.com/soupi/gotta-go-fast/blob/rfc/CONTRIBUTING.md). From e5821c0a9e3c3078db4909394a490cccccb0e58e Mon Sep 17 00:00:00 2001 From: Gil Mizrahi Date: Tue, 17 Aug 2021 08:33:55 +0300 Subject: [PATCH 3/4] Fix formatting --- proposals/003-perf-book.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proposals/003-perf-book.md b/proposals/003-perf-book.md index cb79bfc..4a70e94 100644 --- a/proposals/003-perf-book.md +++ b/proposals/003-perf-book.md @@ -44,8 +44,8 @@ on latest advances and best practices as well. ## Prior Art (if applicable) -[Parallel and Concurrent Programming in Haskell / Simon Marlow (2013, O'Reilly)](https://simonmar.github.io/pages/pcph.html) -[Haskell High Performance Programming / Samuli Thomasson (2016, Packt)](https://www.packtpub.com/product/haskell-high-performance-programming/9781786464217) +- [Parallel and Concurrent Programming in Haskell / Simon Marlow (2013, O'Reilly)](https://simonmar.github.io/pages/pcph.html) +- [Haskell High Performance Programming / Samuli Thomasson (2016, Packt)](https://www.packtpub.com/product/haskell-high-performance-programming/9781786464217) ## Timeline From 7323423e299eefbea50e47d55676c2bbc8f1e42a Mon Sep 17 00:00:00 2001 From: Gil Mizrahi Date: Tue, 17 Aug 2021 08:34:58 +0300 Subject: [PATCH 4/4] fix wording --- proposals/003-perf-book.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/003-perf-book.md b/proposals/003-perf-book.md index 4a70e94..7dad5ef 100644 --- a/proposals/003-perf-book.md +++ b/proposals/003-perf-book.md @@ -53,7 +53,7 @@ on latest advances and best practices as well. ## Outcomes 1. A freely available online book, hosted on Github -2. A repository containing the content of the book in markdown format, infrastructure for updating it, and a contribution process and guidelines +2. A repository containing the content of the book in markdown format, infrastructure for updating it and a contribution process 3. Content covering the latest developments in tooling, techniques and best practices with regards to performance programming in Haskell ## Procedure