ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
TitleBrief descriptionTaken byDue on
2
Collect & transmit structured log & instrumentation data from Haskell-- Figure out how to buffer structured log data in memory AND flush the buffer upon time/memory, whichever occurs earlier. two options — pipes or broadcast channels.
-- Figure out which interim existing visualisation service can we push the instrumentation data to. need not be a 100% fit for now, but at least something that can get us started. If there is not such existing visualisation service, then we have to write a very basic one on our own in Purescript/Elm.
3
Rails cookie decryption in Haskell-- The Haskell app needs to be able to decrypt and understand the Rails auth cookie.
-- It should be able to read the encryption key/salt from config.yml and expose the contents of the cookie in a structured format (record type) in the App environment used by all servant handlers. (this needs to be a per-request environment, NOT an app-wide environment!)
Note: Here's a relevant library which seems to have already implemented the core decryption code - https://github.com/iconnect/rails-session
Saurabh NandaCompleted
4
Opaleye generated left join queries seems to slow down the Postgresql's query plannerhttps://github.com/tomjaguarpaw/haskell-opaleye/issues/284
5
Opaleye - Multiple left joinshttps://github.com/tomjaguarpaw/haskell-opaleye/issues/237
6
Haskell port of Zurb's Inky libraryIdeally something built on top of Lucid (which we are using for regular HTML generation as well). We would like the functions/combinators to be type-safe so that a `column` tag outside a `row` tag is not allowed. A `menu` tag inside a `menu` tag is not allowed. An orphan `item` tag is not allowed, etc.

Link: https://foundation.zurb.com/emails/docs/inky.html
James Haver IIWIP
7
TechEmpower benchmarks - YesodFixing the yesod & yesod-postgres code to perform better in the benchmarks.
8
TechEmpower benchmarks - ServantFixing the yesod & yesod-postgres code to perform better in the benchmarks.
9
ReflexFRP benchmarksBenchmarking GHCJS + Reflex-FRP as per https://github.com/krausest/js-framework-benchmark AlexCompleted
10
Purescript benchmarksBenchmarking Purescript + Halogen/Thermite/Pux as per https://github.com/krausest/js-framework-benchmarkThomasCompleted
11
DB migrations infraFigure out how to manage DB migrations if we aren't using Persisten (which has some support for migrations baked into the library). Sqitch is a possible alternative.PranayCompleted
12
Extensible recordsSurvey of mature (or seemingly mature) libraries that alleviate the records problem in Haskell:

-- Benchmark performance against regular record accessors and lens-accessors
-- Benchmark for compile-time
-- Can the extensible record have duplicate field names?
-- What's the story around nested extensible records? How do you update nested records?
-- Integrate the extensible record with other popular libraries, like Lens, Aeson, Opaleye, and swagger-data
13
Miso benchmarksBenchmarking GHCJS + MisoJS as per https://github.com/krausest/js-framework-benchmark SaurabhCompleted
14
Haskell deploymentA well-integrated deployment story with hapistrano (or something better):

-- Haproxy setup for A/B deployment
-- New server is deployed on a new port
-- Haproxy config file is changed to point to server deployed on new port
-- Haproxy is sent a soft-restart signal.
-- Once all connections to old server (old port) are terminated, the old server is shut down.
-- DB migrations are run before deployment.
-- Static assets are deployed as well.
Saurabh & RajdeepCompleted
15
Structured logging and instrumentationWrappers over popular libraries that log & transmit structured data to a remote service (eg. NewRelic):

-- Opaleye - log the query, the execution time, and number of rows affected
-- Redis -- log the command, exectuation time, and bytes transferred
-- Email -- log the subject, recipient, size of email, and time taken
-- WAI/Servant -- log the request (including JSON payload), resposne HTTP code, error message in case of 500s, time take to respond, breakup of the time by Sql, Redis, Email, HTML rendering, etc.
16
Record splicerPranayCompleted
17
Opaleye code generatorSaurabhCompleted
18
Ability to pretty-print data-structures for debuggingWhile most data structures have a Show instance, they aren't optimised for human readability. Is there a library out there which implements a PrettyPrint instance for most common data-structures that can be used for displaying the data-structure for human reading? Anything based on Generic or generics-sop?
19
Haskell deployment - documentationSurvey all available approaches for deploying Haskell webapps and write a detailed tutorial for each approach:

-- Docker
-- Nix
-- Keter
-- Hapistrano
-- Nginx?
-- Heroku
SaurabhCompleted
20
Servant <> Typescript bridgeeg. Servant<>Elm bridge
21
Lucid from HTMLeg. Blaze from HTML or Miso from HTMLCompleted
22
Currency formatting packageThere doesn't seem to be a proper way to format currency values on the lines of http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_to_currency
23
Logging JSON request payload in WAI / ServantWai/Warp doesn't seem to have proper support for this. Benchmark the impact of the hack mentioned at https://github.com/yesodweb/wai/issues/636 if enabled in production. If the impact is severly negative, then investigate if this can be done at the Servant level instead.
24
Query tracing support for Opaleyehttps://github.com/tomjaguarpaw/haskell-opaleye/issues/312
25
Job queues in PostgresExtract and generalise our job-queue infra (tightly coupled with our app right now) so that it can be open-sourced. Will need documentation on how to integrate with any app (especially an app's authentication/authorization infra)SaurabhWIP
26
Job queue adminweb interface for basic monitoring and adminstration of the Postgres-backed job queueSaurabhWIP
27
Sendgrid APIOpen-source our code for Haskell implementation of Sendgrid API
28
Postgresql ORM vs HRRHelp us evaluate Postgresql ORM vs HRR for typical web-app use-casesDropDrop
29
DB-heavy testingSetup either HTF or Tasty to run DB-based tests in parallel in isolated transactionsSaurabhWIP
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100