Collaborate Developer Diary #1: Exploring the New Design
Based on a set of guiding principles focused on delivering value to teams with diverse skill sets, we are designing a brand new experience for Collaborate.
As we mentioned in our last blog post, we are doing a series of “Developer Diary” posts to share what we’ve been working on for Collaborate. In this entry we’ll be exploring the new UI in more depth, talk about command-line support and share some details on the current state of development.
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 are still on track to release a package in August that has feature parity with the existing Collaborate. Branching and some of the history functionality that is described above will come in future package updates shortly after the initial release.
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.