A few weeks back Charles posted about Distributed Design in the context of the overall vision Will laid out late last year. Branching and Merging picks up where Charles left off—why we’re doing it, what it is. And as always, we would love to hear your feedback.
Branching and merging is a way of working with design files that enables you to:
- Have multiple people explore variations on the same design, in parallel, in separate spaces
- Easily choose the best designs at any time from all variations for your project
- Break off into a new branch to try something different at any point, while keeping all other variations you’ve made, intact
- Get variations back into your primary source of truth for the project as the team moves toward a final version of the design
Branching and Merging technology has a long history in the software development world—and there are many parallels with the design world. A good example is GitHub, which enables software developers to explore variations on their program code, then easily share and capture only the best results in their final product. This is the model that we’re using in Fusion 360 for Branching and Merging. In our case, we have a strong visual component that suits the visual paradigms designers expect.
Our visual approach to Branching and Merging functionality makes it transparent to you – you don’t need to manage duplicate designs or handle conflicts, or be concerned about losing any options you explore.
So how does it all work?
A branch is something you create to work on a part of the project in your own discrete workspace. The project itself is what we call the “Main” branch, or just “Main”, and Main is your source of truth when you look at the project overall.
You create a branch from Main (or from another branch), and you can do that from any point in Main or the branch, and your new branch will start off with the data as it was before you branched.
Fusion branching operates at a project level. So you branch from a point in an entire project, not from a single design. This helps you—and the other members of your team—to manage a set of related designs in a unified project space. This allows you to focus on the quality of the overall design in a truly collaborative environment.
Let’s look at an example of a mountain bike project tree with branches that four designers are working on.
The Main branch is shown in green, and the three branches — one that Jules (me) is working on, one that’s Ji-Young’s, and one that’s Amy’s — each have unique colors. Fusion assigns colors automatically, and this color coding carries across the interface so you always know what branch you are working on.
In the tree, solid dots are milestones that depict the states of each design branch at points in the project’s history. You can step back to any of the milestones, and you can branch from any milestone.
Other people can work in your branch too, and work they do in their branches doesn’t affect the main project — or other branches — at all.
Understanding it all is easy.
Here is an example of the project overview dialog, which shows our current state (in development):
The project has Main and three branches. The most recent state of Main is currently selected — as indicated by the blue highlight — and the middle column shows all of the designs in Main. If you select the Change List at the top of the column, you can review all of the designs which have changed. And the model viewer is on the right, showing the selected design and an expandable history of versions.
You can manage project data from this interface as well.
If you wanted to add changes that you made in one branch to another branch, you can start a Merge from any point in the branch that has a design you’d like to use. Your target could be Main, or it could just be another branch. Let’s look at the Merge dialog (in development too):
In Fusion 360, merging is a visual experience that allows you to quickly decide what designs, or what versions of designs, you want to make part of the main project.
The beauty of it is that there is no risk with your data when you branch, and you can explore to your heart’s content. That’s because you can always revert back to your earlier milestones. And you can always keep branches and mainline work in their own tracks, in parallel but discrete spaces.
Think about how you work today and what it would take to do this kind of experimentation. Normally, you would have to copy designs, and it would be hard to keep track of which one you thought was best. Other people might step on your design work, and you might wish you could quickly find and go back to something you crafted three weeks ago.
We think Branching and Merging could play an important role in your future, but we’d love to hear what you think about it.
Please let us know—and happy designing!
Jules