Interchangable Backends
It would be very nice if safecopy supported interchangable backends - I'd like to use safecopy and it's versioning, but actually store the data in a human-readable format like json, xml, oder whatever.
Second that. I managed to work out a draft but unfortunately the maintainer is very unresponsive. I may just end up forking this.
Sounds great! I'd be very interested and can provide help if needed.
Cool, help is always appreciated :)
You can check out the value-builder branch in my fork. I managed to remove the cereal dependency and replace it with a general value container that can be used as a base for different backends. My idea was to have a general safecopy package, and then backend-specific packages like safecopy-cereal, safecopy-aeson and so on.
The put part is unfinished but looks good so far, and I haven't gotten around to doing the get part yet. I've also extended the TH code, so that the field names are also put into the value container, which will be useful for json, xml and other key-value based backends. The value container is just a list of Values, and a Value is just an ADT with different constructors for all primitive (and some other) types. I had tried a type-level based solution, but it got complicated fast, so I'm just sticking with the ADT thing for now.
So if you want, you can look around the source and see if there's something that you'd like to do. If you'd like to discuss something, we can do it in the issue tracker I guess.
This would be neat. Especially if the extra backends can be put in separate packages as suggested.
I realise this issue is rather old now, but in case anyone happens across it, I'm working on modular backends for acid-state in acid-state/acid-state#96, including the possibility to leave out safecopy altogether (or, in principle, to use a version of safecopy with a different backend).