There are multiple ways of looking at file format:
- how readable they are (although that's something that should be taken care of by the apps)
- how usable they are with different tools (thinks about how html is rendered by multiple browsers)
- size of files and others.
how readable they are this is not something that need to be taken in consideration, as, once again, it's some computer work, unless we need to debug a specific file. And again, this will be rendered easier as the computer will clean the file on opening (think about prettifier and linter tools) to make it readable
Using XML would also be a good way, but then, going SVG as file format should be the best way to go as you'll be able to open your file in any app (from inkscape to illustrator, and even render it in the browser without any additionnal work). Also, svg tend to be usable in js environment, although it will add a little more work, but both way are good (less readable than js, and more complex if you want to bring version control).
Yaml is not the best for this use case, as the only separator is white space, so it's pretty easy to miss tabs and spaces and break a file with just indentation. Way to dangerous to build upon. And also, you will need a parser to use it on the web, and parser are all different, so you'll force the user to use a specific parser, reducing reusability of your file format.
I know nothing about file size, unless the fact that image/photo will take a lot of space. (captain obvious!). But svgs have svgz (gzip svg). One of the way to look at it is like epub files, which are a renammed zip file with all the content inside which mean less space. Also epub use a manifest file with all the meta data, and link to files in the epub (Something that would be pretting interesting to have in Akira as using the metadata, we could set version controlled comments/discussion system inside the file and in the browser)
Can't wait to use it.