So, last week @beep and I had a fascinating conversation with @petermcreaper and @mkeftz about the work they're doing on @interplayapp; among other things we circled around the ideas Peter mentioned in his post about design artifacts… it's worth a read. pete.studio/notes/design-f…
@petermcreaper's thesis in that post is pretty straightforward: the intermediary design files accumulated in the process of developing a site — particularly one that's heavily component and pattern based — are disposable, temporary artifacts and not the "source of truth."
It's a thing @gregddunlap and I talked about over the years WRT content models — it's fascinating to (again!) see similarities popping up. With content, you accumulate an endless pile of spreadsheets and similar docs to iron out types, properties, relationships, and so on.
The workflow generally goes something like: Creator ideation -> Stakeholder review -> Creator refinement -> Implementation scoping -> Dev build. From that perspective, once implemented in live code the intermediary artifacts — spreadsheets, Figma files, etc — are dead weight.
In fact, some say those artifacts can be _worse_ than dead weight if not carefully kept up to date when new features and changes are made to the system. The artifacts become a snapshot in time, before the 'real' thing was built, but are often treated as the current truth.
To that extent, a lot of @interplayapp's magic is focused on making it possible to capture rich metadata in the design components themselves — so that notes about intent and usage live in code, then make their way BACK to tools like Figma when new designs need to leverage them.
@justafish did something cool like that years back on the @MSNBC project; Drupal tooling to re-export a content type definition spreadsheet every time the Drupal config changed, so that content strategists and editors referring to the spreadsheets would never fall out of sync.
The biggest challenge, I think, is the underlying assumption that "code running on a particular platform" is (or should be) the source of truth for UX, or content, or… well, anything other than "the current state of the executable."
Code, by definition, is the absolute best source of information on _what has been built and what it does_… But it's notoriously bad at describing its own goals — what was the intention of the feature? What situations is it expected to handle? And so on.
Often, the canonical content model and the one that's materialized in a particular CMS's configuration diverge from each other — fussy tweaks have to be made for performance, or things that are easy to express in a "pure" content model diagram require workarounds in a given CMS.
I'm nowhere near as comfortable commenting on the nuances of workflow for design system evolution (that's very much @beep's bag), but it feels like teams will need to learn to express and document "Intent, With A Capital I"… not JUST the details of the current state.
The huge advantage of "code as the source of truth" is that it makes a whole ecosystem of supporting tools easier to build — treating the goofy artifacts as disposable ephemera you regenerate if you need a "fresh" one means never wondering if MODEL-LATEST-final.XSL really is…
But it also means trusting that everyone is synchronizing around that metadata in the code, keeping it updated, noting the places where real-world usage is growing past original intent, and fuzzy stuff like that.
Without that careful attention, the code risks falling out of sync with reality just as the PSDs or the Figma files or the Wireframes or Spreadsheets risked falling out of sync with the code. A design system, like "the content," evolves over time even if we pretend it's static.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
There are three basic ways to approach content modeling, and I'd argue that each of them have _strengths_ but no single one is philosophically correct or incorrect. Each is just a place to start.
The approach you hear about when a content architect describes ~the process~ is what I think of as "platonic content." You start with a communication or publishing concept and iron out your content types, their properties, etc. in a way that best describes their essential nature.
"We want to do interviews. What _is_ an interview, conceptually? Well, we'll need a subject, perhaps multiple subjects…" and so on.
Here to say once again that Screaming Frog SEO is an amazing nuclear-powered chainsaw of a tool for web work.
Its out of box config is geared towards SEO optimization (naturally, given the name) — making sure all your pages have decent metadata, stuff like that. But learning how it does what it does and configuring it to your needs turns it into something much, much more.
Most CMSs leave some default CSS classes or IDs in their markup to indicate template or content types used when rendering a page — Screaming Frog lets you run custom regexes during its crawl to extract those, generating a pre-categorized list of what content type each page is.
The concerns that nag me about the booming universe of Design Tokens are all issues @davereid and I encountered when we built and supported the Token system for Drupal. I'm still trying to suss out how much of that is "learning from experience" vs "applying the wrong lessons."
The token system for Drupal was originally conceived around '07 or so. Its ecosystem was evolving to give site builders composable pieces ("image-displayer" and "grid-display" and "pager") rather than drop-in functionality ("forum", "gallery", etc).
Around then we built one of the first large-scale production sites that used Drupal's early "click-together tools" instead of pure code: Sony/BMG Music's artist site platform, which allowed them to spin up new interactive community sites for each artist in just a couple of days.
While breaking down the different conceptual building blocks of modern evangelical "Purity Culture" for the next episode of @CRightcast I've come across a critical component that — weirdly enough — also appears a lot in the internet Rationalist community.
A big part of tackling complicated issues — poverty, why evil exists, why my wifi keeps dropping — is getting to root causes and patterns, rather than just focusing on the surface stuff. It's important!
Often, the process of searching for those underlying patterns can help us sort through the confusion and identify how a challenging problem can be solved.
…But that "what's REALLY going on here?" process can also be used to obfuscate, to minimize, to shift blame.
The latest episode of @CRightcast was a very rough one to research and record. Content warnings VERY much apply for it and this thread — it covers child sexual abuse, religious abuse, and the ways some fundamentalist groups explicitly silence victims and protect abusers.
The story that prompted this departure from our Reconstructionsm series was Josh Duggar's arrest for possession of child sexual abuse materials, and the Duggar family's connection to fundamentalist teacher Bill Gothard. rightcast.substack.com/p/episode-13
Gothard and his IBLP/ATI organizations are regarded as "extreme" and "legalistic" by the most Christians, even inside the Christian Right… but his bent towards authoritarianism and rigid enforcement of patriarchal gender roles is treated as "oldschool" rather than "dangerous."
Eavesdropping on @Netlify's Headless Commerce Summit, and there's a lot of interesting stuff happening — but it's also telling how much of the headless excitement and messaging centers on "you only have to focus on delivering the best front end experience for your end users".
SUPER COMPELLING for a FED team frustrated by tight coupling with legacy systems or services, but… for people in charge of the whole product (or teams handling that backend stuff) the challenges still gotta be solved, with the added lift of keeping the complexities hidden.
Decoupling and headless approaches can definitely deliver significant advantages — esp. for orgs that really need to use the same pipeline for many different content/interaction endpoints — but the complexity doesn't go away, only shifts around.