It's been a little more complex than expected consuming hydrant because I was expecting I could read the fjall database myself. But, it turns out, Hydrant vendors a variety of forks internally, such as an fjall fork, and more.
As a consumer, interoperation with external libraries would be really appreciated.
I see in #3 there is intent to go the other direction: to fork/vendor jacquard too. I'd really love if we could go the other direction & use upstream libraries wherever possible, and work on getting features we want upstreamed. Ideally there'd be feature flags that might help us consume/use upstream versions instead, too, if the features are non-essential (for example the fjall fork added zstd support, which is good to have, but not essential).
i don't want to maintain the codebase for different versions of upstream/forks, i don't really see the benefit of that, consumers can just use whatever hydrant uses. in case of jacquard i will probably completely replace it eventually, probably aside from jacquard-repo since we don't really use most of the things it provides and it just becomes an annoying "fight the dep" scenario since i already had to write my own versions of a few things / fork it in the past to fix things because i'd really rather not be locked to upstream...
i could consider a zstd build feature but zstd is pretty integral since its just miles better compared to any other compression and with no downsides so idk if i want to have it be "optional" really.
consumers also arent really expected to consume the fjall db either, its not something i want to "support". i can expose some abstracted methods to help with this, like dumping the db as an impl Iterator or such, if that helps? there is also the
user-keyspacefeature that adds an api that lets the user create a keyspace in the hydrant db... if you tell me what you really need that'd be more helpful than me having to maintain support for forks / upstream and so on...