matterhorn-chat / matterhorn

A feature-rich Unix terminal client for the Mattermost chat system
BSD 3-Clause "New" or "Revised" License
1.05k stars 77 forks source link

Allow building with aeson 2.0 #759

Closed sternenseemann closed 2 years ago

sternenseemann commented 2 years ago

Currently it is not possible building matterhorn with aeson >= 2.0. Since the ecosystem is converging to that version at the moment, this makes packaging matterhorn somewhat annoying.

jtdaugherty commented 2 years ago

Hi @sternenseemann, thanks for opening this. Regardless of what the ecosystem is doing, it should not be necessary to build against Aeson 2.0 to build Matterhorn. If you are wanting to package Matterhorn, it might be helpful for you to coordinate with us here to know what platforms and versions of GHC (as well as other packages) we support. If you are running into a situation where you need Aeson 2.0 for some reason, can you say more about that?

sternenseemann commented 2 years ago

We are not only packaging, but as many Haskell-related packages as possible (in fact we have been shipping between 5000 and 7000 of the 16000 total available hackage packages). To make this feasible we aim to create a consistent package set with in the best case a single version for every package we want to ship. For this we take a stackage solver as a starting point (since these are 2000 or so packages with the same mission statement and maintainer support in achieving this) and build the rest of our package set around it.

Thus, we need to follow where the ecosystem converges (and are currently working on switching to GHC 9.0.2 and aeson 2.0) or we risk not being able to ship recent version of popular packages (pandoc, shellcheck, ...). It's of course not impossible to build some packages with differing versions of dependencies, but this requires manual intervention and thus extra work, so we always appreciate upstream maintainers supporting our “standard” (i. e. stackage versions, in fact packages in stackage almost always work without any problems immediately).

jtdaugherty commented 2 years ago

It's helpful to know a bit more about the larger effort that is motivating your request, but I'm not really sure what to say. It may just be best if this package is not part of the package set that you are maintaining. As a project we already select particular platforms and build configurations to support, and while it's nice if people want to build our project from source, it isn't the way we recommend people use the project unless they're going to hack on it. Unlike perhaps most of what you're including in your package set, Matterhorn's primary user base is not Haskell developers (which would be the case with most Haskell libraries), but Mattermost users who like Unix terminal applications.

Now, as it happens, Matterhorn does support aeson 2.0 in its development branch and that will be available in the next release. But that doesn't really solve the deeper problem here, which is that ecosystem evolution should not necessarily force arbitrary packages to upgrade on a timeline that doesn't makes sense for those packages, especially when the target audience for those packages is not the Haskell developer community first and foremost.

arrowd commented 2 years ago

If you are wanting to package Matterhorn, it might be helpful for you to coordinate with us here to know what platforms and versions of GHC (as well as other packages) we support.

I'm packaging for FreeBSD and we are switching to GHC 9.2.2. Is there any ETA when you support this compiler version?

jtdaugherty commented 2 years ago

@arrowd Not at the moment. I'll see about putting out a release soon.

jtdaugherty commented 2 years ago

@arrowd I just released 50200.16.0 that includes prior changes to build on GHC 9: https://github.com/matterhorn-chat/matterhorn/releases/tag/50200.16.0

arrowd commented 2 years ago

Awesome, it worked. Thanks for being a responsive upstream.

jtdaugherty commented 2 years ago

I'm glad to hear it!