Fundamentally, most software really only has use for a relatively small number of general-purpose data formats. Sure, there's media (audio, video, images), but for most applications there's a library that does that and all you really have to care about is moving around the blobs of bytes. For general-purpose formats, I'd say you could get away with just SQLite and XML, but you probably want to add JSON to the mix for reduced pain and you almost certainly want a wire protocol for IPC and netwo...