The Future of Design Systems: CDN Based Open Design Eco-System

 

When we talk about an open world, we inherently refer to an attempt towards making it possible so that all the entities in that eco-system can talk to each other. It would involve peopleprops and processes – the typical 3 components we use in a service design model (https://www.nngroup.com/articles/service-design-101/)

Any service design tool helps to find out the touch-points and what is happening around that with the user at the center through tools like Empathy Maps, User Journeys, Service Design Blueprints and so on.

However for a future world of automation and machine learning, it becomes critical to ensure that these touch points are also considered the other two i.e. props and processes at the center. The DesOps is practically all about finding out this and enabling those touch points through the act of optimzing, reducing or removing them, to improve the operation.

In the same context we look at the design systems in use, (e.g. in a visual design and UI design and development scenario – a branding guideline, widget library, collection sample code organized in someway) also are part of bigger eco-system, where the future automation of design with machine learning they need to talk to each other. Being a set of “prop” they need also to interact with “people” and “processes”. This means, a design eco-system of future should be open, where collaboration from “people” or the “designers” is made possible where design systems follow a common model to become part of the common language.

At the same time the design systems should semantic so that the machines can infer them and take logical decisions (read: https://www.linkedin.com/pulse/open-design-system-adding-semantics-part-3-heredity-samir-dash/)

Then how to achieve this?

One of the possible way, as I see is to build the open design “eco-system” with the two components in them.

The first one is a Content Delivery Network (CDN) that would allow different design systems to share their content for reusability and collaboration against some namespaces (or an identifier path )

Secondly, it should follow a model that is scalable, extensible and can align to semantic model. One such model as I was writing about earlier is the Nuclear Design Model. (read https://www.linkedin.com/pulse/photo-essay-semantic-design-system-part-2-nuclear-model-samir-dash/ )

So the Open Design (Eco)System would be combination of a CDN with a Nuclear Design Model.

To achieve this in design dimensions of different domains e.g. UI design, Visual Design, Branding, Voice based System Design, Business Process Design, Service design, Content Design, Learning or Instructional Design, System Design etc. etc. we need to use different technologies, framework and methodologies depending on the area it touches upon, and I think this would is a great opportunity for all service designer in today’s world to explore these and define.

In the UX India workshop I took an example case of UI design and development scenario targeting web technology, and attempted on a Proof -of – concept (POC) using HTML, CSS and JS.

I created a basic css representations of the Nuclear Model using CSS3 Variables, that allowed modification of properties which was an essential part of building an inheritance model of properties.

So I started with a basic bucketing of the entities at a conceptual level, with a namespace model and folder structure.

ODS-Global was the global namespace tagged to a folder that contained two set of entities i.e. Tokens and Primitives.

In Tokens (representing properties and attributes) I kept all the list of tokens without assigning them to any particular entities. Then under Primitives, 3 main primitives were defined (namely Shape, Image and Text), where each one defined which tokens belong to them.

Then each design system created by anyone would have a separate namespace folder under which there are buckets/folders for each entity type, namely :

Tokens – set of properties or attributes defined with default values

Primitives – applied a set of selective tokens

Derivatives – these are derivations from any primitive with modified values to the tokens they are associated with)

Patterns – combination of derivatives in an integrated way

Template – combination of patterns.

Views – combination of templates.

The above diagram shows the conceptual structure and how inheritance is happening based on the approach mentioned above. This conceptual structure now can be represented in CSS , HTML and JS as following

And the following image shows how the entities get their default properties and if needed over-ride them while maintaining the scope of their entities.

See how in a design system DS1 the properties change, keeping the same list of tokens intact, to provide one-to-one mapping among the design systems.

When I translated this into CSS and HTML and JS structure, I got the following structure of folders and files for the POC.

In the actual application, only referring to the namespace and type of entity is good enough to load the right pattern from any design-system part of the open design eco-system.

You can download and play around the code of the sample above from github:

https://github.com/OpenDesignSystem/ODS-CDN

Note: this is a prototype of the concept and is not optimal for any production usage. Ther are a lot scope to improve the implementation. For example usage of @import in CSS in real time may not be practical, but it might be good idea to write a preprocessor that would build the final CSS and JS from the namespace, like NPM.

Here are some screenshots from actual POC we ran in the workshop:

The following a example of pattern called “label” from a designsystem namespace “com-company1-ds1” . This is made with derivatives from 2 basic primitives i.e. “Shape” and “Text”.

The following a example of pattern called “button” from a designsystem namespace “com-company1-ds1” . This is made with derivatives from same 2 basic primitives i.e. “Shape” and “Text”.

The following a example of pattern called “editable-textbox” from a design-system namespace “com-company1-ds1” . This is made with derivatives from same 2 basic primitives i.e. “Shape” and “Text”.

The following a example of a template (not created a formal template class though ) of a login form from a design-system namespace “com-company1-ds1” . This is made with patterns from same namespace.

Hope you enjoyed this quick and dirty article written in 30 mins. If you get the concept from the article, my goals are met 🙂

Download the sample code to play around from here: https://github.com/OpenDesignSystem/ODS-CDN

View the part 2 of the workshop slides here that is related to this activity:

https://www.linkedin.com/pulse/workshop-deck-part-2-applying-desops-your-enterprise-samir-dash/

You can view the first part of the slides of this work shop here:

https://www.linkedin.com/pulse/workshop-deckapplying-desops-your-enterprise-samir-dash/

You can explore more here:

https://www.linkedin.com/pulse/open-design-system-adding-semantics-part-3-heredity-samir-dash/

‘Semantic Design System : Redefining Design Systems for DesOps’ https://www.slideshare.net/MobileWish/semantic-design-system-redefining-design-systems-for-desops-v10-1sep-2018

Nuclear Design: https://www.linkedin.com/pulse/photo-essay-semantic-design-system-part-2-nuclear-model-samir-dash/

Open Design System Ontology: https://www.linkedin.com/pulse/photo-essay-semantic-design-system-part-3-open-ontology-samir-dash/?

(c) Samir Dash, 2018. All rights reserved. This content including the images are licensed under a Creative Commons Attribution 4.0 International license