@hecate I tried to generalise a data structure (make its member types parameterisable) and ended up enabling quite a lot of language extensions.

I've merged this so far due to time restrictions, but if you're interested I'd be grateful for feedback on my type design, see

@schmittlauch From a quick look, yes the language extensions are normal. I don't usually bother with them since they are included by default in my personal stack template. See especially the "Any Flavor you like" paragraph

@hecate Fortunately, the part I refactored is covered by tests.

All the network IO will only get tests after my deadline, as I am really short on time right now.

@hecate So after the deadline, project progress is likely stalling for severla months while I'm cleaning up all the technical debt, hundreds of warnings and missing tests /0\

@hecate Definitely, though I'm not fully sure wheter it makes sense to start on it right now.

Configurability using TOML would be neat though. There are many TODOs in the code of values needing to be moved to FediChordConf and read from there. And FediChordConf should better be created from a TOML file instead of command line arguments.

@schmittlauch That sounds pretty sane. :)
Keep me informed of how things play out!!

@hecate scavenging all the missing configuration inputs could indeed be a good way of getting familiar with the code.
So feel free to start any time, this probably won't get in my way too much.

@hecate What annoys me the most is the need for `FlexibleContexts` and additional type hints in DHTProtocol.hs

Also it might be possible to completely revamp the class and instance hierarchy, by making all these functions class functions and parameterising the instances only instead of the class/ newtype itself.

@schmittlauch That one is actually the most normal :P I'm not sure of anything about RankNTypes, but FlexibleContexts lifts a GHC restriction that many people find stupid
Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!