A few tradeoffs we had to make:
- As mentioned below - flatbuffers makes the startup time faster while trading off some flexibility
- Smaller code size means trading off dependency on some libraries and broader support vs writing more things from scratch more focused on the user cases people care about