nyxxxie/serenity

Change project data storage to something non-binary

nyxxxie opened this issue · 1 comments

Storing project data in a non-binary format (e.g. xml, json, etc) would allow for it to be friendly to version control software like git, enabling users to collaborate with other reverse engineers in their work.

Currently the project class stores all data in a sqlite database, which is great for performance and ease of query but is stored in a binary format that isn't friendly to git. I think an ideal solution would be to invent a project format that can be distributed as one compressed archive file and then decompressed into a collection of multiple files containing various pieces of data. Some of those files could be binary but serve as a caching mechanism and could be regenerated from info committed to version control.

The exact way this feature will be manifested will become apparent post-v1 when spade is usable and we have an idea how quickly the sqlite database expands.

Tacking on to this idea for later, we should probably extract to a tmp directory outside of the cwd. We might also consider integrating git directly into the project metadata storage system and provide a wrapper over it in spade (might have to if we extract to a tmp directory).