Skip to content

Add two more HLS project ideas #181

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions content/ideas/hls-more-cabal-plugin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
title: Haskell Language Server: Cabal Plugin Continuation
---

The [`hls-cabal-plugin`](https://github.com/haskell/haskell-language-server/tree/master/plugins/hls-cabal-plugin) is a Haskell Language Server (HLS) plugin that allows HLS to be a Language Server for `.cabal` files as well as Haskell files.
While the plugin already provides many core features, there are more possible features that would increase the ergonomics of working with cabal files, such as:

* Goto-Definition for local stanzas, such as library, executable or common stanzas
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could also potentially do something like this for non-local packages by linking to Hackage? I think the textDocument/documentLink request might work for that.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I have even more ideas, but I figured, it might be fun to let the mentee come up with their own nice features and ideas.

* Integrating the [`cabal-add`](https://github.com/haskell/haskell-language-server/issues/3853) into HLS
* Prompt to add unknown modules to `exposed-modules` and `other-modules` sections.
* Completion of local and non-local package names
* Completion of package version bounds
* Showing documentation for keywords and enum values.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe also hovers for package names showing the package description etc?


With some creativity, we can come up with many more features.

**Mentorship**

Fendor

**Difficulty and size**

The difficulty of this project is medium, as there are two rather big existing projects that developers need to understand in order to provide improvements.

The estimated size of this project is 175 hours, but there is likely 350 hours worth of work depending on the mentee's interests and ideas.

33 changes: 33 additions & 0 deletions content/ideas/hls-test-suite-improvements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: Haskell Language Server: Test suite Improvements
---

Haskell Language Server (HLS) has an extensive test suite that is run on every commit.
Over time, the test suite has degraded in performance, reliability and consistency.
This has become a bottleneck in the development of HLS, as a slow and unreliable test suite deters new contributors and makes life more difficult for maintainers.

This project aims to improve the quality of the test suite by:

* Reducing the overall test suite execution time
* Fixing flaky test cases
* Removing artificial wait times in test cases
* Unifying the style of tests in HLS

The issue [#3736](https://github.com/haskell/haskell-language-server/issues/3736) provides some ideas on how to improve the test suite further.

To achieve the aforementioned goals, some of the following intermediate steps could be helpful:

* Unifying testing infrastructure of ghcide and plugins
* Enabling parallelism of test case execution
* Exploiting custom LSP messages to reduce flakiness of tests written in lsp-test
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe also "Modifying lsp-test to make it easier to use reliably"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This project idea avoids proposing modifying lsp-test itself, as it may require a bigger redesign. I feel like, we can get in a lot of low-hanging fruits without modifying lsp-test itself.


**Mentorship**

Fendor

**Difficulty and size**

The project itself is not too difficult, as there is lots of prior work and many low hanging fruits.
However, there is a fair amount of working with the internals of Haskell Language Server which can be intimidating as they tend to be underdocumented.

The size of this project ranges from 175 hours up to 350 hours, depending on the exact scope of the proposal.