scratch-gui
scratch-gui copied to clipboard
[FEATURE REQUEST] Add a Share Button
Expected Behavior
I've been waiting for about a year for someone to suggest this. So I'll take up the initiative of suggesting it myself.
There should be a way to simultaneously collaborate with people on projects either as a built-in feature or as an addon in the addon menu. This will become especially useful when multiple people want to contribute on the same project at the same time such as during group projects, recreational usage or for teaching sessions.
I came up with a mockup of how I personally would design the feature if it were me. Here are a few mockup designs below:
The share button

Expected behavior when the share button is clicked.

The share button when viewed in the navigation

The modal when viewed on the page

I also thought up of this on the way while working on those above. It would be nice that if when people join the collaboration session that there be small colored circles showing that the person joined the session. Below is an idea of how it would look if three people joined the collaboration session (I have the spacing of the circles a bit off but don't mind that)

Another Idea
There should be a box shadow around the blocks of the same color of the circles displayed up in the top right corner whenever someone is editing along with the same time as you.
Concept

The box shadow should just be a simple outline as just an indicator/hint and shouldn't be something that would be distracting or annoying to the user.
Ideas on getting it to work
Websockets would be a solid choice for this idea but a peer to peer protocol such as WebRTC would be a better choice in terms of performance and security.
In the second screenshot of my mediocre mockups you may notice an URL that gets generated when the share checkbox is clicked. This is the collaboration sessionID that is used to connect to the TurboWarp session using a different device. The URL may be constructed as:
`https://turbowarp.org/editor?sessionid=${sessionID}`
The sessionID is a 32-character randomly generated string that is appended as a query-string parameter to the URL of the editor route that identifies the exact collaboration session that the editor is wanting to join and when another user clicks this URL and attempts to connect to the session he will be displayed with an exact replica of the host-user's editor and will be able to edit along with the host user while not being limited in terms of the functionality of the editor.
You may also notice that in my second sketch I also have a limit of how many users can join...
There are two different errors that can be displayed
Soft-Error
When the collaboration session is full and another user tries to join he will be presented with a generic error as a popup informing him that the collaboration session has reached it's limit and that no more users can join but that he may ask the host to raise the limit
Hard-Error
When the collaboration session has reached it's maximum hard-limit of 100 people and another user tries to join he will be presented with a generic error as a popup informing him that the collaboration session has reached it's limit and that no more users can join. This error is different as it does not prompt the user to ask the host to raise the limit
Actual Behavior
There is no share feature.
By the way, there already exists a browser extension to add collaborations to vanilla Scratch (but it might be kinda buggy and possibly result in loss of work if you're not careful making backups).
By the way, there already exists a browser extension to add collaborations to vanilla Scratch (but it might be kinda buggy and possibly result in loss of work if you're not careful making backups).
Yes, that is almost exactly how I was planning it in my head. First time I'm hearing about this though. It looks very impressive in both size and functionality.
[EDIT 10/29]: Found BlockLive's GitHub repository and it seems to use WebSockets. So that means that my idea is actually very feasible.
@GarboMuffin Bump.