Re: [community-group] The Designer’s Workflow (#43)

# Opinion on: Adobe DSP package format

Even if it might not reach the discussions anymore, I want to leave a remark on Adobe's DSP format here, as some might think of it as a solution to what we discussed here so far. I post it here, as I have no interest in supporting Adobe as a company for free with their pseudo open source efforts, which are full of hooks to establish connection to protected intellectual property of them later, after they absorbed all the interesting feedback.

So what is so interesting about it? It has various bad design decisions, that it can serve as an example of how to **not** do it, seriously.

I am referring to these repos:
https://github.com/AdobeXD/design-system-package-dsp
https://github.com/demianborba/spectrum-dsp

## Exchange format or storage format?

It seems to be meant for being hosted in some sort of git repository or other version controlled storage. If this is the case, it doesn't need `author` and `lastUpdated` information on each item in the json files, this is meta information managed by the hosting system.

As a schema for data exchange, including such time stamps might be ok (while I miss the actual schema definition, there are just examples of application given). But then I wonder why there is the concept of folders, a server application is missing and import paths seem to be allowed being local and relative instead of forming URIs.

It seems design goals and value propositions of the format are not clear at this point. This involves the risk of messing up the structure quickly.

## Versions of a standard

It states some Version 1.0, while Adobe's own example Spectrum-DSP states 0.0.1 what is another theme. Is it defining the parsing standard or is this free to use for indication of your own's design system grade. What can be expected from version increments is not at all described.

## What's in the box?

It is very fuzzy, what Adobe aims for to pack into this container.

- Written documentation, including example pictures, through using markdown, it also describes to some extend layout structure already and this way affects and fixates later consumption
- Token information, as source of truth
- Configuration and/or references to build engines (deployment configs)
- Processed output of tokens for different scenarios
- Vendor extensions for anything not covered

Fun fact: Markdown isn't really a standard and its inventor seems to have no interest in developing it into one. Using CommonMark would be at least a safer choice.

## Vendor extension

The `/ext` directory is the _Pandora's box_. Instead of accepting the fact, that a young standard might not cover all aspects right away, this allows for building and establishing any proprietary extensions to that format with a shortcut. Adobe could for the context of their software bring in any extension and by market dominance force other vendors into compliance with that, charging for development documentation or even requiring reverse engineering. It bypasses a discussion and agreement in an open form, while `DSP` users, who don't look into code, will wonder about growing incompatibilities.

To give a good example: I would prefer defined profiles as MPEG LA is using since h.264 codecs. HTML/XML namespaces work in a similar fashion.

## Tests for the Interface

Is there any sort of tests or validators provided for the format? Maybe at least a reference implementation for writing it? Am I not supposed to expect that from a vendor which earns millions a year and is so experienced in the field of code and design, am I?

## Spectrum's VS Code integration

- Abusing VS Code as a browser to show documentation, just because, … why actually? Motivation could be to use VS Code as a surface for subtile advertising. I think I don't need to elaborate more, what to think about this. It is definitely an effect of the weak or missing value proposition mentioned above.

- The [VS Code code snippets helper](https://raw.githubusercontent.com/demianborba/spectrum-dsp/master/assets/code-completion.png) floods the developer with a fully rendered out list of processed tokens available in the whole system. It does not extend on the [IntelliSense](https://en.wikipedia.org/wiki/Intelligent_code_completion#IntelliSense) conceptional idea of analyzing the context. Is it React or some iOS or Android-native code - so then reduce the options to the applicable set!



-- 
GitHub Notification of comment by sebfriedrich
Please view or discuss this issue at https://github.com/design-tokens/community-group/issues/43#issuecomment-731072136 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Friday, 20 November 2020 10:03:20 UTC