Closer to code the better. I am hoping for a feature that allows you to control versioning over components individually. This is something that maps well to how the code version of a component is managed, and would be great to couple them tightly in order to avoid fragmentation. The idea is to start thinking of Libraries as packages. Bit.dev shows how this works on the code side.
Package > Button v1.0.1
Where/how do you think the versioning should be done? Since people work on the files, the file itself will be often in a “dirty” state between versions.
One could imagine doing named snapshots of a file, which would also be close how e.g. google docs manages versions in a way that one does not need to deal with it if one does not want/need to. I would be not very happy with a git like system as it mismatches how most designers work and is confusing even for many devs.
I’ve been thinking about this in the perspective of design systems, and we actually enforce a bit of process similar to devs. Nobody works on the main branch, and you create a branch for specific issues in Figma. You can’t just go work on any aspect of the system without the risk of creating conflicts, but I don’t think that is actually any better. The alternative isn’t much better though, since it is all just “dirty”, autosaved versions, and it is often hard to figure out who worked on what with many contributors.