Loading...

Mozilla
Privacy & Security

Nebula Design System

Learn More

Creating the Nebula Design System

I started working at Mozilla in 2021. The privacy and security org was small, and I started working in a team of 6 talent UX people. Mozilla VPN was a relatively new product, and our other products were still only in the “freemium” phase.

We knew the team would be growing, and the need for design consistency would soon be a priority. We knew we needed a design system, and having built a design system at my previous company, my task was to own the creation of an org-wide design system from scratch.

THE CHALLENGE

What do we want to accomplish?

Before starting, I had to determine the product and business goals. This included internal interviews with the design team, engineering team and managers. I needed to understand their business goals and our product goals.

High Level Goals:

  1. Create efficiency for our design team, by saving time and the company money
  2. Creating a bridge between designers and engineers, so that we have a single source of truth to refer to
  3. Create true design consistency between 4 different product offerings

My Role:

I owned and led this initiative as the sole designer. I was responsible for research, execution of the visual assets and documentation. I also worked together with a team of 10+ talented UX people to create a design language that would be the foundational piece to everything we do.

The design system launched company-wide in early 2022, and the design language launched in early 2023.

The approach

In order to have a truly complete design system, you need to have 3 main components. These are the foundational building blocks to creating a design system:

  1. A design language
  2. A component library
  3. Documentation
design thinking
AUDIT

What do we currently have?

image

Before starting any work on a new design system, I had to lead an internal audit of everything we had in Figma. Long story short, we didn’t have much. What I did find was that the entire org was working with an extremely limited figma file of loose components akin to a small UI kit.

After cataloging and organizing what items can be salvaged and reused, I was able to start working on reimagining our team’s new design system.

Other internal products

image
image

I also looked at our company branding and other design systems and brand guidelines within the company. We had the Firefox brand guidlines and the Mozilla brand guidelines. Our products borrowed from both of these resources, so it required the creation of something new.

COMPONENT LIBRARY

Text styles

The Mozilla brand has a design system called Protocol that was used for mainly marketing related web surfaces, the font sizing, line height and font weights would all be reused in our system. The only thing we would change would be the font pairing. We would use the same font-families used in the Firefox design system - the Firefox fonts are more UI friendly. I worked with engineers to add design tokens that matched the CSS classes within the codebase to create consistency between the design and the code.

image
image

Colour palette

Another thing we were able to salvage from the previous system was the colour palette. We essentially used the same palette as all Mozilla/Firefox products, with a few additions. The lead designers for all of the core “Privacy and Security” products worked together to create primary color palettes for each product, and use these primary colours to inform minor tweaks to the larger, more robust secondary palette.

image
image

Creating a component library of 40+ components

I organized these coponents by device (Web vs. mobile) since our products were either web-apps or cross-platform apps. I also made sure to categorize them using Atomic Design Principles as a guide.

Using 1000+ variants to hold component states

The previous UI Kit did not have any variants. I was able to take each component and create 1000+ variants. This made it inifinitely easier to display state in our designs without having to recreate the components over and over.

Using variables for easy coponent modification

Another upgrade I made to the system was utilizing variables. This would allow us to modify components without having to detatch the instance. For example, adding icons to the left or right side of buttons.

Creating resposnive components

Since we were scaling this design system to be used by 4 products, I needed to make these components adaptable. Using autolayout, I was able to make responsive components that we could resize to whichever viewport we were designing for.

Introducing: Nebula Design System

We chose the name "Nebula" as a reference to Atmoic Design. A Nebula is also a region in space where new stars begin to form, similar to where we were as a design team.

DOCUMENTATION

Creating a source of truth

A design system is the source of truth for your company's visual design language. I worked closely with UI engineers to realize their main goals for the design system:


  1. Create robust documentation on usage of different styles and components across products
  2. Create design tokens that would match their respective CSS styles across codebases
  3. Allow this to be a tool to onboard new engineers into our org
image

Why are we documenting?

A design system is more than just a UI Kit. Every UI component would have detailed usage documentation for designers, engineers or any team members to understand. We were in the process of moving our documentation to a documentation site called supernova, but it never materialized due to layoffs.


image

Using design tokens

Design tokens are an integral part to creating a cross-functional design system. I worked with the engineers from multiple products to understand the naming conventions of their CSS classes. Using those classes I was able to construct design tokens that would easily match those CSS classes to create value for both designers and engineers.


DESIGN LANGUAGE

Creating our core design principles

image

UX team workweek - Austin, TX

The Privacy and Security UX design team traveled to Austin, TX and during this work week, one of the main items of work we needed to accomplish was to create design principles. These principles would be the foundation of our design language, and round off the last pillar of our design system.


❤ Open

It's about being empathetic and connecting within the community.

Mozilla is rooted in community involvement and growth. People should experience our Privacy and Security as a part of their everyday life and circles. Our products should empower people and meet them where they are. It's not open when things are overly constraining, require expertise, or do not provide a path forward.

🤩 Delightful

It's about adapting to change, offering flexibility and freedom.

We strive to guide people to the joy of the internet. Our products should provide memorable experiences with exceptional quality. We want to go above and beyond other privacy and security services to provide a flexible end-to-end experience. Nobody should feel overwhelmed or helpless.

⚡ Disruptive

It's about changing the perspective and crossing new boundaries.

Mozilla is optimistic about the future of the internet online and digital experience. People should be motivated to explore and express themselves online. Our products should positively transform people's attitudes and behaviors towards privacy and security. We strive to offer privacy and security with convenience, not as a tax.

The impact 🚀

Although we had already launched the visual components of the design system much earlier than we created our core principles, the completion of this work felt extremely validating for our team. I think the impact goes much deeper than increased design efficiency and consistency, but it solidified us as a real org within Mozilla. Here are my “some data, mostly vibes” impacts:

  • Company-wide design system acknowledgment
  • A cross-functional source of truth for everyone on our team to use
  • Time and money saved on faster more efficient designs
  • A solid foundation of 40+ components and 1000+ variants, to scale