|
| 1 | +--- |
| 2 | +title: 'Summer of Haskell 2023 Results' |
| 3 | +author: 'Aaron Allen' |
| 4 | +--- |
| 5 | + |
| 6 | +On behalf of the Haskell.org committee, I'm pleased to announce the results of |
| 7 | +the Summer of Haskell 2023. Many impressive and valuable contributions were |
| 8 | +made to the Haskell ecosystem which I'm excited to share with you in this post. |
| 9 | +I'd like to extend a big thank you to the sponsors that made this program |
| 10 | +possible: [The Haskell Foundation](https://haskell.foundation/), |
| 11 | +[Kadena](https://www.kadena.io/), [Jane Street](https://www.janestreet.com/), |
| 12 | +[Holmusk](https://www.holmusk.com/), [MLabs](https://mlabs.city/), |
| 13 | +[Flipstone](https://flipstone.com/), Gershom Bazerman, and Edward Kmett. |
| 14 | +Gratitude is also due to the wonderful mentors who kindly donated their time to |
| 15 | +helping bring these projects to fruition and fostering the next generation of |
| 16 | +Haskellers. |
| 17 | + |
| 18 | +I also want to mention that [we are currently in need of idea |
| 19 | +submissions](https://summer.haskell.org/ideas.html) for the upcoming Google |
| 20 | +Summer of Code 2024! This program depends on having a quality list of ideas, so |
| 21 | +please consider submitting any you might have (ideally before Feb. 4th). |
| 22 | + |
| 23 | +Without further ado, what follows is a summary of the work that was completed |
| 24 | +under the Summer of Haskell 2023. |
| 25 | + |
| 26 | +--- |
| 27 | + |
| 28 | +<table> |
| 29 | + <tr><td><b>Project</b></td><td>Support for Resolve Functionality in HLS</td></tr> |
| 30 | + <tr><td><b>Contributor </b></td><td>Nathan Maxson</td></tr> |
| 31 | + <tr><td><b>Mentor</b></td><td>Michael Peyton Jones</td></tr> |
| 32 | +</table> |
| 33 | + |
| 34 | +Nathan Maxson contributed support for [resolve |
| 35 | +functionality](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#codeAction_resolve) |
| 36 | +to [HLS](https://haskell-language-server.readthedocs.io/en/latest/#). He has |
| 37 | +also updated a number of HLS plugins to utilize this functionality, thus |
| 38 | +reducing CPU and memory usage and improving speed. The plugins that have been |
| 39 | +updated in this way are `overloaded-record-dot`, `hlint-plugin`, |
| 40 | +`explicit-imports`, `refine-imports`, `type-lenses`, `explicit-records`, and |
| 41 | +`class-plugin`. |
| 42 | + |
| 43 | +<b>Relevant code contributions</b> |
| 44 | + |
| 45 | +* <https://github.com/haskell/haskell-language-server/pull/3621> |
| 46 | +* <https://github.com/haskell/haskell-language-server/pull/3678> |
| 47 | +* <https://github.com/haskell/haskell-language-server/pull/3688> |
| 48 | +* <https://github.com/haskell/haskell-language-server/pull/3658> |
| 49 | +* <https://github.com/haskell/haskell-language-server/pull/3679> |
| 50 | +* <https://github.com/haskell/haskell-language-server/pull/3682> |
| 51 | +* <https://github.com/haskell/haskell-language-server/pull/3729> |
| 52 | +* <https://github.com/haskell/haskell-language-server/pull/3743> |
| 53 | +* <https://github.com/haskell/haskell-language-server/pull/3750> |
| 54 | +* <https://github.com/haskell/haskell-language-server/pull/3769> |
| 55 | + |
| 56 | +--- |
| 57 | + |
| 58 | +<table> |
| 59 | + <tr><td><b>Project</b></td><td>Cabal File Support for HLS</td></tr> |
| 60 | + <tr><td><b>Contributor </b></td><td>Jana Chadt</td></tr> |
| 61 | + <tr><td><b>Mentor</b></td><td>Fendor</td></tr> |
| 62 | +</table> |
| 63 | + |
| 64 | +Jana Chadt worked on improving support for Cabal files in HLS. The work has |
| 65 | +been summarized in [this |
| 66 | +gist](https://gist.github.com/VeryMilkyJoe/268448ff8daea9f467930c771e60b9c8), |
| 67 | +which includes links to relevant PRs and issues. There is also [a blog |
| 68 | +post](https://discourse.haskell.org/t/hsoc-hls-cabal-file-support/7331) |
| 69 | +detailing the new HLS functionality. |
| 70 | + |
| 71 | +<b>Relevant code contributions</b> |
| 72 | + |
| 73 | +* <https://github.com/haskell/vscode-haskell/pull/618> |
| 74 | +* <https://github.com/haskell/haskell-language-server/pull/3268> |
| 75 | +* <https://github.com/haskell/haskell-language-server/pull/3766> |
| 76 | +* <https://github.com/haskell/haskell-language-server/pull/3761> |
| 77 | +* <https://github.com/haskell/haskell-language-server/pull/3778> |
| 78 | + |
| 79 | +--- |
| 80 | + |
| 81 | +<table> |
| 82 | + <tr><td><b>Project</b></td><td>HLS: Goto 3rd Party Definition</td></tr> |
| 83 | + <tr><td><b>Contributor </b></td><td>Elodie Lander</td></tr> |
| 84 | + <tr><td><b>Mentor</b></td><td>Zubin Duggal</td></tr> |
| 85 | +</table> |
| 86 | + |
| 87 | +Elodie Lander worked on allowing the HLS goto definition functionality to work |
| 88 | +with definitions from outside of the current project. Although primarily |
| 89 | +focused on HLS, this work involves contributions to other key Haskell |
| 90 | +infrastructure: GHC, Cabal, HieDb, and haskell/actions. |
| 91 | + |
| 92 | +<b>Relevant code contributions</b> |
| 93 | + |
| 94 | +* <https://github.com/haskell/haskell-language-server/pull/3676> |
| 95 | +* <https://github.com/haskell/haskell-language-server/pull/3725> |
| 96 | +* <https://github.com/haskell/haskell-language-server/pull/3749> |
| 97 | +* <https://github.com/wz1000/HieDb/pull/57> |
| 98 | +* <https://github.com/wz1000/HieDb/pull/56> |
| 99 | +* <https://github.com/wz1000/HieDb/pull/55> |
| 100 | +* <https://github.com/wz1000/HieDb/pull/60> |
| 101 | +* <https://github.com/haskell/cabal/pull/9019> |
| 102 | +* <https://github.com/haskell/cabal/pull/9244> |
| 103 | +* <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11083> |
| 104 | +* <https://github.com/haskell/actions/pull/290> |
| 105 | + |
| 106 | +--- |
| 107 | + |
| 108 | +<table> |
| 109 | + <tr><td><b>Project</b></td><td>Standardize GHC's Error Dump in JSON Format</td></tr> |
| 110 | + <tr><td><b>Contributor </b></td><td>Ben Bellick</td></tr> |
| 111 | + <tr><td><b>Mentor</b></td><td>Aaron Allen</td></tr> |
| 112 | +</table> |
| 113 | + |
| 114 | +Ben Bellick contributed a new [well-defined JSON interface for GHC diagnostic |
| 115 | +emissions](https://github.com/benbellick/tech-proposals/blob/specify-json-dump/proposals/0000-specify-dump-json.md), |
| 116 | +which will be available via a new `-fdiagnostics-as-json` flag. The existing |
| 117 | +under-specified `-ddump-json` flag has been deprecated in favor of this new |
| 118 | +interface. Additionally, Ben made valuable contributions to the effort of |
| 119 | +converting GHC error messages to use the new structured representation. |
| 120 | + |
| 121 | +<b>Relevant code contributions</b> |
| 122 | + |
| 123 | +* <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/11093> |
| 124 | +* <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10574> |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +<table> |
| 129 | + <tr><td><b>Project</b></td><td>Teaching Weeder About Type Classes</td></tr> |
| 130 | + <tr><td><b>Contributor </b></td><td>Vasily Sterekhov</td></tr> |
| 131 | + <tr><td><b>Mentor</b></td><td>Oliver Charles</td></tr> |
| 132 | +</table> |
| 133 | + |
| 134 | +Vasily Sterekhov implemented support for detecting unused type class instances |
| 135 | +in [Weeder](https://github.com/ocharles/weeder?tab=readme-ov-file#weeder), |
| 136 | +along with several other significant improvements. See the [Weeder 2.7 release |
| 137 | +notes](https://discourse.haskell.org/t/weeder-2-7-released-with-type-class-instances-and-more/7356) |
| 138 | +for details. |
| 139 | + |
| 140 | +<b>Relevant code contributions</b> |
| 141 | + |
| 142 | +* <https://github.com/ocharles/weeder/pull/126> |
| 143 | +* <https://github.com/ocharles/weeder/pull/133> |
| 144 | +* <https://github.com/ocharles/weeder/pull/136> |
| 145 | +* <https://github.com/ocharles/weeder/pull/132> |
| 146 | +* <https://github.com/ocharles/weeder/pull/137> |
| 147 | +* <https://github.com/ocharles/weeder/pull/134> |
| 148 | +* <https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10701> |
| 149 | + |
| 150 | +--- |
| 151 | + |
| 152 | +<table> |
| 153 | + <tr><td><b>Project</b></td><td>Structured Errors for cabal-install</td></tr> |
| 154 | + <tr><td><b>Contributor </b></td><td>Suganya Arun</td></tr> |
| 155 | + <tr><td><b>Mentor</b></td><td>Gershom Bazerman</td></tr> |
| 156 | +</table> |
| 157 | + |
| 158 | +Suganya Arun implemented structured errors for Cabal, including the assignment |
| 159 | +of a unique code to each error which can be then be referenced on the [Haskell |
| 160 | +Error Index](https://errors.haskell.org/). You can read more about the results |
| 161 | +and challenges of the project in [this blog |
| 162 | +post](https://summerofhaskellstructerrors.blogspot.com/2023/10/soh2023-structured-errors-and-error.html). |
| 163 | + |
| 164 | +<b>Relevant code contributions</b> |
| 165 | + |
| 166 | +* <https://github.com/haskell/cabal/pull/9018> |
| 167 | +* <https://github.com/haskell/cabal/pull/9143> |
| 168 | +* <https://github.com/haskell/cabal/pull/9162> |
| 169 | +* <https://github.com/haskell/cabal/pull/9191> |
| 170 | +* <https://github.com/haskell/cabal/pull/9219> |
| 171 | +* <https://github.com/haskell/cabal/pull/9276> |
| 172 | +* <https://github.com/haskell/cabal/pull/9324> |
| 173 | + |
| 174 | +--- |
| 175 | + |
| 176 | +<table> |
| 177 | + <tr><td><b>Project</b></td><td>Maximally Decoupling Haddock and GHC</td></tr> |
| 178 | + <tr><td><b>Contributor </b></td><td>Gregory Baimetov</td></tr> |
| 179 | + <tr><td><b>Mentor</b></td><td>Laurent P. Rene de Cotret</td></tr> |
| 180 | +</table> |
| 181 | + |
| 182 | +Gregory Baimetov contributed to the effort towards [decoupling GHC and |
| 183 | +Haddocks](https://github.com/haskellfoundation/tech-proposals/pull/44). |
| 184 | +Although the original goal proved to be too ambitious, he has produced a |
| 185 | +[prototype of a JSON serialization for the Haskell |
| 186 | +AST](https://github.com/Greg8128/proto-docser-hs) as well as a [document |
| 187 | +explaining the difficulties |
| 188 | +encountered](https://docs.google.com/document/d/1nykZgSi9k_jP1N4ZVZhSdce2jFpRdwNNT3X2YQLF9vo), |
| 189 | +which should be of value to future work on this issue. |
| 190 | + |
| 191 | +--- |
| 192 | + |
| 193 | +<table> |
| 194 | + <tr><td><b>Project</b></td><td>Representing Pattern</td></tr> |
| 195 | + <tr><td><b>Contributor </b></td><td>Saachi Kaup</td></tr> |
| 196 | + <tr><td><b>Mentor</b></td><td>Alex Mclean</td></tr> |
| 197 | +</table> |
| 198 | + |
| 199 | +Saachi Kaup worked with various libraries to explore pattern visualization, |
| 200 | +drawing connections to the traditional mandalas common in Southeast Asian art. |
| 201 | +She put together [a blog post on the Tidal |
| 202 | +website](https://tidalcycles.org/blog/blog_topic_mandalas) describing her |
| 203 | +process and showcasing some of the images that were produced. You can also view |
| 204 | +the [code repository](https://gitlab.com/Saachi_Kaup/TurtlePatterns). |
0 commit comments