Multiple users editing the same prototype
Shared prototypes is a feature in Justinmind that allows different users to work on the same prototype. There are other ways to share your prototype with other users if you just want to get feedback but this is the only option to have different users with their own Justinmind installations working on the same prototype file in a synchronized way.
Shared prototypes use a check in/check out model that works at the level of Screens, Scenarios and other elements within a prototype. That means users can work on different screens at the same time, even if they’re offline at that moment. At any given point, one of those users can get the updates from the changes done by the others.
There are a few concepts you need to be familiar with in order to get started with Shared prototypes:
A Shared Prototype is like a regular prototype but it has a synchronized copy residing in the Justinmind Server. The Server not only has a copy with the latest changes but all the history of changes done by all the users that have changed the prototype at a given moment. You can turn any regular prototype into a Shared Prototype and also get a regular prototype file from any version of a Shared Prototype.
The Prototype owner is the user who uploaded and shared a prototype. In addition to being able to edit this prototype, they can also:
- Invite users to edit their shared prototypes
- Remove a user’s access to their shared prototypes
- Rename their shared prototypes
- Delete their shared prototype from the Justinmind server
To change the owner of a Shared prototype, the prototype owner should navigate to the main menu in Justinmind and select File > Share with users > Manage Shared Prototypes. A dialog will show up with a list of all the shared prototypes of that user. Then, select the prototype that you want to change the owner of and, in the right side, click on the ‘pencil’ icon next to the name of the owner. A new dialog will show up listing all the users in your account. You can select any of those users as the new owner of that prototype.
Only users that have access to the same account can work on Shared Prototypes. They have to be ‘prototyping users’, meaning Reviewers and Developers in your account can’t connect to a Shared Prototype. They can only access the prototypes that have been shared to review.
These are the operations you can perform with Shared prototypes from Justinmind’s User Interface module:
Operations from the ‘File > Share with users’ menu
All the operations with Shared Prototypes are within the File > Share with users menu. All but the ‘Open shared prototype’ which is in the File menu next to the regular Open option. Other than that, these are the different options you can find in the Share with users menu.
- Open shared prototype – This option allows to connect to an already existing Shared Prototype, created by you or by any other user in your account that has invited you to that prototype.
Once selected, a dialog will show up listing all the Shared Prototypes you have access to. Just select the one you want to connect to and click ok. If “(Local copy)” appears next to a prototype’s name, it means you have already opened that prototype in the past and you have all the changes you did to that prototype stored in your computer. Another benefit of those prototypes is that you can connect and work with them even if you don’t have internet access at that moment.
On top of being able to connect to a prototype, you can also check all the version history and some additional information like the owner or number of versions. From this same dialog you can add or remove users to that prototype.
- Share prototype – click to turn the current opened prototype into a Shared Prototype. A dialog will show up and you will need to set a name for that shared prototype. That is the name that will show up for any invited users in the list of Shared Prototypes.
After setting a name, another dialog screen will appear, prompting you to invite users to this shared prototype. To invite users to edit your shared prototype, click the ‘+’ icon. In the dialog that appears, keep the first radio button selected to invite a user currently associated to your online account, or select the second radio button to invite a new user. You’ll need to fill in their email, first and last names. Then, click “OK” twice. The invited users will get an email notification with instructions on how to connect to that shared prototype.
Manage shared prototypes – click to see a list of all your Shared prototypes, including options to view and edit the users, history, and owner of the prototypes.
Invite users – click here to modify which users can edit the shared prototype. Either the owner of the shared prototype or any user that has been invited to the prototype can add other users to it.
Once you’ve selected “Invite users”, the following dialog will appear:
Here, you’ll find the list of users that have been invited to the prototype. Click the ‘add new user’ to invite another user to this prototype. To remove one of the users from the list, move the mouse over the user and click on the ‘trash’ icon that will show up.
Note that when you remove a user, all the local changes of that user that weren’t commited before, will be lost.
In the dialog that appears, you can choose between adding one of the users in your account to the share prototype or create a new user altogether. In both cases, when you finish and click ok, those users will receive an email with information about how to connect to that prototype.
View locked elements – this option shows a list of all the elements (Screens, Templates, Scenarios, etc.) that users are working on. You can’t work on one of those elements until the user releases that lock meaning that they’re done working on them.
Commit all – click to upload all local changes made to the shared prototype to the server. In the dialog that appears, you’ll find:
- The change (modify, delete or add) made to a prototype’s component.
- To which type of component the change has been made (e.g. template, screen, data master).
- The name of the component.
- A comments box in which you can leave a comment related to the change made. This comment will show up when you check the history of versions of this prototype.
Click “Ok” update all local changes.
Update all – click to load all new changes made by other users to the shared prototype. In the dialog that appears, you’ll find:
- The version number (each time a user hits “Commit” when working on a shared prototype, they create a new version).
- The date and time of the version.
- The name of the user who made the changes.
- Any comments included.
- A list of all the changes applied in this version.
Discard all changes – click to discard all local changes. Discarding local changes means ignoring all changes made after the last commit and replacing your current prototype with the latest version available.
Unlock all – click to unlock all locked components. If you had commited your local changes, then the locks of those elements are released so another user can work on them. If you didn’t commit the changes then you’ll need to commit or discard them first.
Show history – click to display the prototype’s version history. Here you’ll find all versions for this prototype from all the users. You can select any and export that version as a vp file so you can compare what the prototype looked liked with the current version. In the dialog that appears, you’ll find:
- The version number
- The date and time of the version
- The name of the user who made the changes
- Any comments included
- A list of all the changes applied in this version
- New prototype from version – click to create a new prototype from a the selected version. The new prototype will not be a shared prototype.
Locking elements of a shared prototype
When working on a shared prototype, components are locked by users so that they can be edited without having changes overwritten by other users. Lockable components include screens, templates, masters, data masters, scenarios, variables, requirements and comments.
Every lockable component can be locked/unlocked from its contextual (right-click) menu. The following options will show up that won’t in a regular prototype:
- Commit – when you click this option, a dialog will show up to create a new version of the prototype with the changes done in that element.
- Discard changes – click to discard the local changes made to the selected element.
- Lock/Unlock – click to lock or unlock the selected element. When you lock an element, a ‘lock’ icon will show next to it to confirm that the element has been locked by you and that no other user can work on that element until you release the lock. There are two ways to lock a prototype’s element:
Note: you can only unlock elements that are currently locked by you. If you are the owner of a shared prototype, you also have the power to unlock elements someone else has locked. In order to do so, just remove the user who has the elements locked.
- Change anything from an element, like moving a rectangle in a screen for instance. If no one else is also working on that screen, a dialog will appear prompting you to lock the screen: If you lock it, no one else will be able to work on that screen until you unlock it. That applies to any other element like Templates or Scenarios for instance.
- Another way to lock an element through the contextual menu. Right click on the element (e.g. screen or template) and from the contextual menu that appears, select the “Lock” option
If you own a shared prototype or you are the owner of a Justinmind account that has shared prototypes, you can perform the following advanced operations. All of these operations can be accessed from the same dialog that pops up when selecting “Manage shared prototypes” from the “File > Share with users” main menu option.
When you’ve selected “Manage shared prototypes”, a new dialog will appear with a list of all the shared prototypes you own or have stored in your account and you have permission to modify:
- Click the “Manage Users” button to manage the users who have access to the shared prototype. The “Invite users” dialog will appear. For more information about adding/removing users, see the Add/Remove users section above.
- Click the ‘pencil’ icon next to the owner’s name to change the shared prototype owner.
- If you move the mouse over the list of prototypes, a ‘trash’ icon will show up. Clicking that icon will delete that shared prototype and all its revisions as well.
Deleting a shared prototype
When you click the ‘trash’ icon in the Manage shared prototypes dialog, a confirmation dialog will pop up before executing the operation:
Enter “DELETE” to confirm the operation. This operation will delete the prototype and all its shared information (revisions, invited users and history). Once deleted, none of the users who were working on this prototype will be able to commit changes and their prototypes will convert into local prototypes so they can still keep working on them.
If for any reason you don’t have internet access, you can work offline on your shared prototypes. However, you won’t be able to commit, update or lock new elements until your internet connection has been restored.
While offline, you will only be able to work with your currently locked elements. It’s important to lock the elements you are going to work with before starting your work offline.
How to work offline
When opening a shared prototype, your connection to the servers will be checked. If Justinmind can’t establish a connection, a dialog will pop up asking you what you would like to do:
Click “Work offline” if you want to open a locally-stored copy of the prototype and work on it offline. A new dialog will show all the locally-stored copies available. Select the desired prototype and click “OK”.
Save changes when working offline
When working offline with a shared prototype, changes can’t be committed until your connection has been restored. However, you can save changes locally, and commit them once the connection is restored. To do so, go to the “File” main menu option and select “Save a copy”. Choose where you want to save your local copy and click “Save”.
When working with a shared prototype with an internet connection, Justinmind performs synchronization checks with the servers to detect differences between the user’s local copy and the servers’ copy of the shared prototype.
These checks may detect when a prototype has been deleted from the server, when your permissions to modify a prototype have been revoked, or when the prototype has been modified by other computers using the same user.
Some of these checks will generate a message (e.g. “Prototype deleted” or “Permissions revoked”):
However, if the problem is related to lock synchronization, a dialog will appear with the following options:
- Revert to last revision – click to open the last prototype revision. Note that you will lose all local changes.
- Work offline – click to start working on the prototype as a local copy