Snapshot-Revisions/Recall feature
Hi,
A little feature suggestion:
- As a user, I want to save the current state of the document so I don't have to rely on multiple files to do it.
- As a user, I want snapshots to be embedded into files, so I'm not dependent of the machines I'm using and can share the file with different revisions.
- As a user I want to see a list of the snapshots for the current document with a timestamp and an editable note and/or name for each one, so I can organize/browse them easily.
- As a user I want to delete a specific snapshot from the list.
- As a user, I want to export a specific snapshots or current state, so I can share the file without the "history" (a "sanitized" version)
- As a user, I want to recall snapshot of the document so I can go back to previous revisions.
- As a dumb user, I want a snapshot to be created for me each time I recall a previous snapshot, so I avoid incident, loosing progress, miss-clicks.
Extra sugar (mostly "useless" or require a lot of effort regarding the benefits, but would be nice):
- As a user, I want a new "branch" (is in fact mostly just conceptual) to be created when I recall a snapshot and edit it, so I can progress in different way and keep a clear view of where I'm coming from
- As a user, I want a visual representation of the snapshots history (bit like a revision graph) so I can be better informed where I am and where I'm coming from.
- As a user, I want to recall only certain parts/measures/instruments from a specific snapshots into the current document so I can "merge" different snapshots (extra hard to be stable imho)
If I could contribute to musescore through github, I would, but I'm afraid my proficiency in C++ is not enough for the standard of the team. I also checked the plugin section, but didn't find something similar.
In the end it could be just a "zip file" approach (like microsoft office openxml .x formats, from what I read quickly in the handbooks, could be supported "easily" through *.mscz ?) with additional metadatas about each file, doing behind the scenes what a user would do manually, it's mostly a convenience thing, as the manual workaround can be adopted, yet, having this feature fully integrated into musescore could unlock some sweet features imho.
Also thank you for musecore, it's been about two years for me now, and wouldn't go anywhere else.
Have a fantastic day
love and play.
Comments
I personally don't think file version management should be the job of MuseScore.
Save your scores into a local git repo (mscx might be preferred then) if you so wish and use MuseScore as a diff tool between those versions.
Then again, I've seen other requests for some form of "track changes" and the mscz format is already a zip-container. So I also don't see a technical roadblock reason against such a feature.
In reply to I personally don't think… by jeetee
I agree with you, that's a fairly good point, one tool for one job, and in my case, indeed using vcs will do most of the job easily, it's a strategy I used in the past for non code stuffs and musical projects and we should advocate for a broader usage of vcs-ish solutions to "non technical" people as GUI makes most of them quite accessible, and it can solve and help a lot of different scenarios, so deeply I'm with you ^^
but vcs can be scary for a lot of the less technical people, ending up in file names based strategy on a cloud storage, requiring a lot of discipline to not go wrong at some point. They also provide, imho, way more features (and complexity) than what the average "document writer" would require. I see quite a lot of tools including some sort of simple revision management built in (for instance ms office, cubase as some sort of it as well as tools from adobe cloud and a screen shot from MU4 show a "save as" and "save as new" related to what looks like cloud/collaborative features. Perhap's something similar already in the pipe ?) a full fledged vcs would totally be out of scope for most software product indeed :)
Perhap's making a similar feature built-in and integrated would allow the less technical users to take advantage of it ? Being able to save/recall without third party "geeky" software in a few clics (as it could be seen by the less technical) could improve their experience ? And giving them a revision management strategy that would be better than what they would come up with by themself.
But I totally understand it could end up in a bigger scope that is not a priority or would be conceived as not a responsibility of musescore and let the users handle themself that part, "hoping for the best". It could also means changing a bit the way the file format works, which could be seen too as a red flag for compatibility issues and ending up with another fileformat that will support revisions would also be for me a big no no.
I would totally try to submit an implementation of it, but I've worked in a managed world most of my dev time, and when going unmanaged, there was enough code reviews and testing that I and the product could go along, but a lot of important memory and security related matters that needs to be addressed in C++ would, imho, ended up in at least a lot of refactoring or just refusal of my contribution (and so, "wasting" my time, as well as the musescore team time too), the evil is in the details (and lack of good practices/experience on a specific tech), but if I'm wrong, let me know, it would be a pleasure to help.
Have a great day
love and play.