In the world of UI / UX / Graphic design tools there are a number of options that live and are good in their own right. But for me and many others, versioning design assets is a big part of client sign off, documentation and engineering hand off. There are third party services, tools and platforms that allow versioning of different assets butt all with limitations and other or hindrances. Pricing models and features across multiple software applications can be costly to a single developer never mind a team to find a mix of the right fit. You might need a requirement gathering tool, design tool, a tool to allow sign off, a prototyping tool a versioning tool and the hand off tools.

The Problem

Figma and more recently Sketch (who just announced versioning) both take the approach of collaboration and versioning in a traditional model commonly seen in the likes of Google Docs. But this has it's flaws - and big ones that stop me using them in a professional capacity. When Sketch announced versioning on Twitter, I tweeted the following:

https://twitter.com/ChrisMJ83/status/1136357388813066241

After that tweet, I was inundated with other designers liking and messaging similar thoughts. I am not the only one who see's the need for a new or more so familiar versioning model in design software today.

I have had numerous conversations with designers across the globe who use Figma in production with their versioning to find out what pit falls they have fallen into, what it took to resolve them and to gain an understanding of their process when designing in their software.

In Figma (and soon to be Sketch) their versioning model I think has a major flaw. Given the following scenario can you spot it?

1. Designer A makes a change to Page 1
2. Designer B makes a change Page 2
3. Designer A names version "v1"
4. Designer B makes a change to Page 2
5. Designer A makes a change to Page 1
6. Designer A rolls back to "v1"

Do you see it? Any changes that Designer B would have made in Page 2 at step 4 would have been affected and wiped out when Designer A rolls back to "v1". Figma gives you the ability to name a version. But this has impact across the full file and not just isolated to what they may be working on. This model of collaborative versioning will cost your project time trying to redesign all the lost features across numerous pages and ultimately money.

Out of all the conversations had not one of them had a common approach to project structure, versioning files, white-labelling design (specific brand colours and variations if working with multiple clients who use a design system etc), merging of assets from multiple designers and of course rollbacks. Even Figma themselves (and I suspect Sketch will too ) did not have a solution to their own model.

Here in lies a problem. In software we have processes around development, requirement gathering and QA. Most engineers, developers or indie hackers follow a process that could be widened out to a team at some stage or another with a few tweaks. But for designers, if you are collaborating with other designers in your collaborative design software of choice who all take different approaches to the same problem then there is an issue.

Let's move away from a design file having pages being called "Homepage - v1" or "JIRA-3918 -CUSTOMERS_NAME - shopping cart - idea 3" to a design file with structure and organisation no matter what level you are looking at it from.

When it comes to customer sign off or developer hand off everything will be in a contained place shareable to who ever it may concern. Give customers a login to see only a specific branch to gather comments and open that feedback loop quicker. Likewise developers could log in and see assets that are signed off by the customer and ready to be developed and for QA knowing that what ever they are looking is the source of truth means they can test and validate the developers work.

Solution

With all that in mind here is my brain dump of ideas I would like to have in tomorrows design software.

Requirements