Developer-friendly starter theme #3372
Replies: 3 comments
-
Meta: dawn is source-available, vs open-source, and that's gonna put the kibosh on a lot of things, so most the knowledge that's needed externally for the ecosystem to understand things with rigor stays undocumented, is in diaspora, or just plain internally silo'd and resisten to fundamental change even for the better. For sometime now the learning curve has had the ladder blown up from it so the amount of things new devs have to just know[1] continually gets steeper and high friction in comparison to a vintage theme like Debut that new devs may never even know existed. Due to the complexity explosion also bear in mind even MORE upcoming changes to the theme architecture such as theme-blocks > block-hierarchy.
Dawn is.. it's become alot. The twilight theme would introduce conventions for formatting and file organization and be the thing mentioned in the beginning of the architecture docs , i.e. themes/architecture/templates/product. It needs to easier for new devs to literally step through building up a theme ( nothing > skeleton > twilight > snippets/sections/settings > dawn > production or theme-store), and for adopters to gauge how monolithic dawn is to facilitate paring down features and identify longtail issues such as with accessibility by just being able to diff twilight vs Dawn.
would need to define base sections (i.e. no sliders), and the reusable snippets of common features(i.e. price) , and bare settings functionality.
For the developer experience(DX): The WHY of how consistency is arrived at, needs to be defined better from the get go. And like you noted there's non obvious conventions like why an SVG icon is inlined vs a snippet or even why all the icons are separate snippets, or why they aren't namespaced to show up at the end of the files list so we're not constantly scanning 40 files when looking for product snippets. I can understand why but the why's aren't defined for those without benefit of experience. Still a limiting factor is no build systems , or asset include system, so CSS & JS still tends to be monolithic & idiomatic (see .rte etc) for shopify behaviors. [1] Did you know the dawn theme uses BEM for class names, do you even know what BEM is, is it strict in the theme? do you even know a single place that documents that Dawn uses BEM? |
Beta Was this translation helpful? Give feedback.
-
It's absolutely crazy to me that this doesn't already exist. Since it seems like Shopify isn't prioritizing this, if anybody is interested in collaborating on creating it I'd definitely be down. |
Beta Was this translation helpful? Give feedback.
-
I am in on collaborating on this too! |
Beta Was this translation helpful? Give feedback.
-
Hello all!
Dawn is perfect for merchants, and sometimes good enough for simple developer customisation. But more than that and it's a royal pain.
The documentation is sparse. For example, there's nothing around how the grid system works. Don't get me started on the web components, which often are highly co-dependent. You often need to follow a looong chain to figure out what's going on.
The code can be messy and inconsistent. This one is probably more preference than anything. But it's crucial when developers want to extend the theme and are having to understand the way things are formatted. For example, some icons are inline whilst others are coming from a snippet.
There's too many options. I get it – Dawn is merchant-first and has to cover a massive spectrum of requirements. I don't have any issues with that, until I'm using Dawn for a client. It makes it excruciating to make changes since there's a 100 other side effects that will occur. That's 100 use cases I need to consider, when the client likely won't use any of them (but in the name of decency, I try to consider anyway).
So what do I propose? A "bare-bones" starter theme that puts the focus on extensibility (not to be confused with Checkout Extensibility). The use case for this would be custom theme development projects. The Skeleton Theme from the Slate days is probably the best example for this.
Here's the fundamentals:
I've been working with my own version of this for a good few years now, but it's hard to find the time to maintain it between projects. It would be ace if Shopify led something like this. And who knows, they might already be cooking something up.
Keep to hear feedback!
Adam
P.S. This is not a dig at the Dawn team or an op on its use in the non-custom space. They've built something that looks and functions great and has contributed to getting merchants selling quicker.
Beta Was this translation helpful? Give feedback.
All reactions