[later phase] Theme Builder vision

Created on 29 May 2024, 4 months ago
Updated 7 August 2024, about 2 months ago

Low-code builders want to rapidly build enterprise-grade, digital experiences tailored to brand and content strategy at scale. They want to configure sites using a web browser with simple text entry and mouse gestures, by no-code and low-code tools limited to creating simple HTML, CSS, JS, and editing templating code.

In other words, low-code builders are enabled to build and customize experiences end-to-end, custom to brand, via no-code and low-code tools in browsers; this includes being able to modify or override template files. For instance, the page template, node templates, menu templates or views templates.

Low-code builders also want to be able to modify CSS or JavaScript that is part of the design system. This could be individual Experience Builder components, including component CSS, and component JavaScript.

In the beginning, all of these actions are achieved through a low-code experience using a code editor within the browser. Some of them will be eventually moved to be managed through a no-code experience. By moving maintenance of common tasks such as creation of components from low-code to no-code tools, maintaining and building experiences becomes more convenient for low-code builders, while also enabling non-technical builders to create more ambitious experiences.

Low-code builders have the option to export the look and feel of the experience as a design system, which could be imported to another instance of Drupal. For instance, they may want to export no-code components, code components part of the design system, template overrides, and custom CSS. The design system may also have no-code configuration options (e.g. color schemes, fonts, spacing, etc) to enable non-technical builders to create experiences tailored to their brand and content strategy. When imported, the design system results in a site that has the same look and feel, optionally with knobs and levers (the so-called "no-code configuration options"). A single Drupal instance may have a single design system but multiple style guides. For instance, a single site could have a light and dark style guide.

A low-code builder who's maintaining a design system wants to be able to provide updates to the design system. This could include (but not limited to); improvements to components, patterns, CSS or template overrides, as well as completely new components, patterns, or style guide no-code configuration options.

Technical builders familiar with Drupal can use familiar tools, like SDC, to build components in an IDE and expose them to the Experience Builder. Exposing a component to the Experience Builder should be as easy as it is with competing products.

These tools should integrate seamlessly with the no-code experience. For instance, non-technical builders may start the component creation process in a visual UI in the browser, and hand off to technical builders by exporting the component to code. Technical builders can then continue the process by adding advanced functionality in code in their IDE. The internals of the code created components are not editable via no-code interfaces, but may be edited via in-browser code editor. Code components may provide no-code configuration options that may be edited when the component is being used.

Code-created components may also be used to build new components, in other words they could be decorated using no-code components. Code-created components can be part of the design system, meaning that when a low-code builder is exporting the design system to be used in other systems, the code created components should be part of the design system.

Non-technical builders may use pre-existing Drupal design systems created by low-code and technical builders to implement digital experiences tailored to brand and content strategy. The pre-existing Drupal design systems may be available within an organization, or as open-source within the Drupal ecosystem. Non-technical builders are able to configure predefined options, such as color schemes, fonts, and spacing to build experience custom to brand. They can also create pages and patterns using pre-existing components using no-code tools. Eventually, they will also be able to build new components, and modify page templates using no-code tools.

๐ŸŒฑ Plan
Status

Active

Component

Theme builder

Created by

๐Ÿ‡ซ๐Ÿ‡ฎFinland lauriii Finland

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @lauriii
  • ๐Ÿ‡ซ๐Ÿ‡ฎFinland lauriii Finland
  • e0ipso Can Picafort

    In the beginning, all of these actions are achieved through a low-code experience using a code editor within the browser.

    I have to admit I can't get over my initial reaction about a "code editor within the browser", it gives me pause. What is the rationale behind this requirement? I would prefer, if possible, to not do this and jump straight to the no-code solution, without this stepping stone.

    The design system may also have no-code configuration options (e.g. color schemes, fonts, spacing, etc) to enable non-technical builders to create experiences tailored to their brand and content strategy.

    Yes!

    Exposing a component to the Experience Builder should be as easy as it is with competing products.

    Any examples of what it is like with competing products?

    Thanks for this writeup @lauriii. My favorite part is that technical-builders and low-code builders are on the same track, even if using different tools. I think that having significantly different theme building experience would have eventually sidelined one or the other. I know we are focusing on the ambitious site builder persona, but at the end of the day there are lots and lots of technical builders building Drupal sites that we need to keep prioritizing. I see this vision supporting that.

  • ๐Ÿ‡บ๐Ÿ‡ธUnited States andy-blum Ohio, USA

    In the beginning, all of these actions are achieved through a low-code experience using a code editor within the browser.

    If part of the rationale for low-code, in-browser editing is to help ease new Drupal users into the developer role, I wonder if it makes sense & would be possible to ease them into industry-standard tools as well. Could the in-browser code editor be vscodum-based with some well-curated extensions? This could also help pipe new drupal users into contribution via DrupalPod.

  • ๐Ÿ‡ฉ๐Ÿ‡ชGermany marcus_johansson

    Hi guys, @mindaugasd made me aware of this thread, because he had seen some of the stuff I was prototyping, so I just wanted to chime in for two reasons - I was playing around with this some time ago with ACE Editor and even custom fields that might visualize an idea what can be done. This was very much prototyping, but I have some ideas from that time. I put in a message in the beginning as well regarding the other thing I think its important to highlight - the usage of AI for this and what was possible back then (and probably moreso now).

    The video is available at https://www.youtube.com/watch?v=NEtsYDzeq-g&ab_channel=DrupalAIVideos, you can skip until 8 minutes into that video to get some ideas of how it looked and what is possible at minimum with AI.

  • ๐Ÿ‡ง๐Ÿ‡ชBelgium wim leers Ghent ๐Ÿ‡ง๐Ÿ‡ช๐Ÿ‡ช๐Ÿ‡บ

    We're not intending to work on this in the months to come. But that doesn't mean the discussion cannot continue here โ€” just that our focus will be on the Page Builder part of XB.

    Linking related issues to improve discoverability.

  • ๐Ÿ‡จ๐Ÿ‡ฆCanada mandclu

    I really like the proposed ability to export and import the overall look of a website as a "design system". I wonder, however, if referring to this as a "skin" would be more equivalent to the same capability in other systems marketers are used to. Perhaps it was would be useful to get real user input on the question of what to call this.

    Also, I think it would be really useful if these could be projects on drupal.org and able to be searched and browsed using the Project Browser.

  • Assigned to lauriii
  • ๐Ÿ‡ง๐Ÿ‡ชBelgium wim leers Ghent ๐Ÿ‡ง๐Ÿ‡ช๐Ÿ‡ช๐Ÿ‡บ

    A โ€œskinโ€ to me sounds more like you could use all the same components but make them look differently.

    A โ€œdesign systemโ€ does more: it defines what the components are too, not merely what they look like.

    A design system itself could have skins, but skins would inevitably be tied to a design system.

    ๐Ÿ‘†๐Ÿป My understanding, and itโ€™s been at least a month since I discussed design system details. ๐Ÿ˜… Letโ€™s see what Lauri says when heโ€™s back from vacation on Monday ๐Ÿ˜Š

Production build 0.71.5 2024