Often file sizes on a project get very large (>1GB) and every edit made to a file, even changing render settings saves the entire file every time.
It makes granular version control difficult. Version control addons often save the entire blend file so for a 1GB file with 100 checkpoints, it’s a 100GB project. Even version control that works on objects inside a .blend, saving the .blend saves every checkpoint.
Some modern apps use package/bundle formats where a bundle bit is set on a folder that makes it behave like a file.
This would be a folder structure that resembles the layout seen when switching the outliner to ‘blend file’ except small items can be grouped together like scenes, cameras, lights etc:
The file would have an extension like .blendpkg.
Inside can be .blend files but they’d be separated. Each mesh in a project can go in a separate .blend file (e.g project.blendpkg/Meshes/sculpt.blend) so if a project has a large sculpt object, it is saved in its own .blend file. Project settings like render setting would go in a separate one. Every time render settings are changed, only the settings are saved, not the sculpt.
This allows a few things like asynchronous file loading and saving. Projects would open instantly and large objects get loaded when they are ready. It allows granular version control. Inside a project, a mesh can have multiple versions that can be reverted back to in the same scene and these don’t get saved again when the main project is saved.
The format can optionally and transparently maintain a USD scene description inside the package. There is a desire to have universal scene and material formats to get away from the need to import/export between every single program but there’s always the risk that a common scene description will be missing some data.
A package format alleviates that problem as the USD part doesn’t have to cover everything, all of the data would be saved in the separated .blend files and the USD would be only as much as was implemented. But it would be enough to avoid an import/export step because the USD would be inside the .blendpkg and other apps could read/write it directly and the changes can get synced back to the .blend files inside Blender.
It can also maintain MaterialX (or game engine shader) equivalents when a .blend is saved. Even if the main Blender materials aren’t exactly matched, they would be much closer than manually setting up shaders.
Addons would be able to save custom data into the .blendpkg when the file is saved.
It allows adding compression to separate elements like shape keys and meshes to save a lot of space without having to compress everything.
This kind of file format could be made by an addon but it would be best as an internal file format so that it’s well supported across different Blender versions.