Collaborate Developer Diary #1: Exploring the New Design
We are thrilled to welcome Codice Software, the company behind Plastic SCM, to the Unity family! We built Collaborate to give users the ability to share projects amongst small teams who want an easy way to sync their projects without navigating the complexity of version control. We brought Plastic SCM into the fold for larger teams looking for more advanced features like branching, locking, merging and a standalone GUI. This means that we will no longer be doing the plan referenced in this blog post. We will continue to support Collaborate with its current feature set.
Collaborate was created because we believe that all creators should be able to enjoy the benefits of version control without having to understand its intricacies. Our first attempt at solving this was to create a simplified UI that abstracted away complex concepts. For example, the workflow of ‘add’, ‘commit’, and ‘push’ became just ‘publish’. From your feedback, we learned over the last year that having a simplified UI isn’t enough. Many of you wanted to personalise your experience by having the ability to choose the UI that best fit your comfort level with version control.
To guide the redesign, we’ve established a set of guiding principles. They are:
- Performance and stability are top priority.
- The UI should provide a simplified view that enables creators inexperienced with VCS to get up and running quickly.
- The UI should provide an advanced view that aligns with the workflow and terminology that experienced VCS users are familiar with.
- Standard routine actions should be so simple that they require no documentation.
- Advanced routine actions should require no documentation for experienced VCS creators and minimal documentation for inexperienced VCS creators.
- Features that are “risky” to a project in “the wrong hands” should be gated to prevent accidental use.
The new design
We wanted to share the latest iteration of the design, which has gone through some adjustments based on your feedback. This design will continue to evolve with the feedback you share with us.
Simple UI view
The goal with this view is to simplify the publish workflow as much as possible. For those familiar with “old” Collaborate, you’ll recognize similarities to that UI with a few notable changes:
- All modified files are listed.
- You can easily find specific files via the search bar.
- The “All” checkbox will let you quickly select/deselect the files.
Advanced UI view
The goal with the advanced view is to offer a UX that more closely mirrors typical git workflows. This view has all the same features as the simple UI, with a few key differences:
- The list of files is presented in a tree view, rather than a collapsed view.
- Only files located within the “Include” section will be published (rather than having to check a box). “Including” a file is the equivalent of executing the ‘git add’ command on it.
- You can easily find specific files that live in either the include or exclude section via the search bar.
Branching may be the most requested feature that we’ve gotten from you. For those of you not familiar, it is a way to work on your project in isolation from the rest of the changes that are being made by other members of your team. This is very useful if you are prototyping, making a risky change, or if you want to separate out your project by release. Branching features will be supported both within the editor and on the Services Dashboard.
Within the editor, you can create a new branch or switch to an existing one at the top of the window:
Switching to a new branch will automatically filter down your history view to show only changes made to files within that branch. We’ll share the mockups for merging branches later.
Viewing the History – Searching & Restoring
Being able to explore past changes is a key benefit to using version control. To aid in this, the history window will have more robust search capabilities such as by keyword (file name, commit ID, publish message, etc.) and/or date range. The filter will show all of the past commits that meet your criteria.
Once you’ve located the file(s) that you are interested in, you can access them via two methods:
- Rollback: This will replace your existing file(s) with the version that was published. You can do this to all the files in the commit or just a single one. It is very useful if your current version is no longer correct and you do not wish to preserve it.
- Restore: This will create a copy of the file rather than replacing your existing file. It is very useful if you want to explore how you did something in the past without losing unpublished changes.
Git command-line support
Collaborate working with git command-line is another one of our more highly requested features, and we’re happy to confirm that it will be supported! Like with most things, with greater flexibility comes greater challenges. To support it properly, we want to make sure that any changes made from the command-line or other git tools are expressed clearly in the UI. This can be challenging because Collaborate simplifies a lot of the git actions.
Imagine, for example, that you have modified five files and now they’re ready to go to the server. Using the command-line, you locally commit two of the files. Then you switch to the Unity Editor to continue working, and publish the rest of the changes to the server through Collaborate’s simple UI.
The problem with this scenario is that the simple UI wouldn’t normally have a way to show local commits that have occurred. However, now the UI will display a message reminding you of the local changes and guide you towards the advanced view which more closely represents what was done via other tools:
Where we are with development
Over the last month, we’ve been focused on adding the base code to perform git operations between the Unity editor and the Collaborate service. This means that we can now execute git commands needed to power the simple UI, advanced UI and some history functionality via the Unity editor. It also sets us up for our current bucket of work – making the UI pretty. More specifically, over the next month we’ll be working on the following:
- Creating reusable building blocks for many of the UI components, such as common buttons, search functionality, file lists, etc.
- Making server changes to support both new and old projects on the Services Dashboard.
Since most of our work has been focused on the architecture and backend, we don’t have much UI to show yet. However, here’s a small preview of our work so far:
We will share our progress with you and talk more about new features, such as workflows to better support large projects. So please join us on the Collaborate forum and stay tuned to this blog!
How you can get involved
We want to thank everyone who has signed up for the Collaborate UI study and who have provided us with feedback on the forums. Your feedback has been instrumental in helping us shape Collaborate, and we would love more of it! For those of you interested in participating, you have a couple of options:
- If you want to discuss the designs mentioned here, head over to this forum post.
- Sign up for the Collaborate UI study and provide critical feedback on the designs.
- If you just want to provide general feedback on features that you’re interested in, you can post them on the forum. We are always monitoring and may reach out to you to set up a call to discuss your requests in more detail.