scratchfoundation / scratch-www

Standalone web client for Scratch
https://scratch.mit.edu
BSD 3-Clause "New" or "Revised" License
1.59k stars 836 forks source link

feature request: Scratch project version history #5420

Open cwillisf opened 3 years ago

cwillisf commented 3 years ago

If we gave users access to historical versions of their project, they could in at least some cases:

We'd need to carefully consider how and where to present this feature:

Also, the recent Blockly summit included a demo of the MakeCode / PXT feature to diff block-based code. If we choose to implement user-visible project version history, we could consider a similar diff feature as an add-on in the long term.

jeffalo commented 3 years ago

as a long time user of scratch, i am really glad this is something being considered. 😃 i really hope this makes it to scratch.

not only is the ability to rollback a project a gamechanger, but simply having the backups would be really cool to see how your project evolved.

one quesiton though, are these project histories already stored? the wording of your first sentence sounds like it's already being collected. if so, how often are the backups made?

apple502j commented 3 years ago

I think Scratch Team already did recover some from the backups during the question mark bug.

Accio1 commented 3 years ago

one quesiton though, are these project histories already stored? the wording of your first sentence sounds like it's already being collected. if so, how often are the backups made?

IIRC, Paddle2See had a tool at one point that he could use to make copies of older versions of projects. His Fix-It account is full of restored projects. So my guess is that there is currently something that saves backups of projects, but I'm not sure how often though.

jemunm378 commented 3 years ago

This actually sound like a great idea! It would be better if it’s in the editor! Like it could mark "history" or something.

OftenUser commented 3 years ago

@jemunm378 same dude

AmazingMech2418 commented 3 years ago

I think this would be a great idea! Also, version history could save revisions that could allow for automatic attribution. Metadata tags could even be saved in scripts and assets themselves so that someone backpacking something will still keep the attribution metadata which could then be automatically added to the project page so people don't accidentally forget to give credit. The only issue though is, I'm not sure if the Scratch servers could handle all of this, given how it would require much more data to be saved per project.

gosoccerboy5 commented 3 years ago

I can attest. Too many times have I had "game.sb3", "game2.sb3", "game_final.sb3", "game_final_final_version.sb3". I would love to see this. Git is good at efficiently tracking changes so we could track project.json

AmazingMech2418 commented 3 years ago

I can attest. Too many times have I had "game.sb3", "game2.sb3", "game_final.sb3", "game_final_final_version.sb3". I would love to see this. Git is good at efficiently tracking changes so we could track project.json

I do think implementing Git into Scratch would definitely be a good way to handle this! And maybe then we could even have branches for Scratch projects, or even issues and PRs!

apple502j commented 3 years ago

Thing is, project.json can change randomly and is not very effective at detecting the changes (if it's just text); it's much better to compare screenshots

gosoccerboy5 commented 3 years ago

Thing is, project.json can change randomly and is not very effective at detecting the changes (if it's just text); it's much better to compare screenshots

oh