After much internal debate we chose the JSON format. We stay committed to keep it as open and easy to work with as possible. Plugin developers are already parsing and modifying the JSON file to programmatically change a Canvas view, and I think that's a fantastic start!
We used to use d3-force for force simulation, but then we rewrote it in wasm ourselves for performance.
The new editor in Obsidian was made possible by CodeMirror 6, and it has been powering both the Live Preview mode (like Typora) and the source mode in Obsidian ever since.
It can be a bit overwhelming to get into first, but as we experimented more with it, we found it to be extremely extensible and powerful. It's also highly performant for large documents. Another major reason we chose CM 6 is that it's also one of the only code editors that work decently on mobile.
While developing the new editor, Marijn was also amazingly responsive in investigating and fixing all the big and little things we ran into, even relatively niche issues like IME input bugs.
If you find CM 6 useful, consider what you can to support the project! Funding link is here: https://marijnhaverbeke.nl/fund/
File Provider is something we'll attempt to implement sometimes in the future to support other sync providers.
More info available at https://help.obsidian.md/Obsidian/iOS+app#Sync
https://obsidian.md/canvas#protips