Community Working Group posts: We Want Your Feedback on an Updated Drupal Code of Conduct

Over the last few months, a group of Drupal community members from the Community Health Team have been working on updates to the Drupal Code of Conduct, with the assistance of a diverse group of community leaders and stakeholders from around the world.

The draft version of that updated Code of Conduct is now available for community review.

We are asking community members to provide constructive, actionable feedback in the Community Working Group's issue queue or share their thoughts privately via this form between now and November 30.

Feedback will be reviewed by the Code of Conduct committee to inform any changes to the draft document before it is finalized and shared with the Community Working Group prior to adoption.

Why do we need to update the Drupal Code of Conduct?

The current Code of Conduct was adopted in 2010 and last revised in 2014. Over the last five years, the Community Working Group (CWG), which is responsible for maintaining the document, has received consistent feedback that the Code of Conduct should be updated so that it is clearer and more actionable:

  • A set of recommendations for improving the Code of Conduct was shared as one of the high-level findings from the community discussions facilitated by Whitney Hess in April and May 2017.
  • 63% of respondents to a community governance survey held in July 2017 said that updating our Code of Conduct should be prioritized as part of the process of overhauling community governance.
  • Improving the community Code of Conduct so that it is clearer and more actionable was also one of the key takeaways of the community governance discussions that occurred in the fall of 2017.
  • In the spring of 2019, the CWG solicited feedback from community members about the current Code of Conduct and what steps should be taken to review and update it. The conclusions of that survey echoed earlier community feedback:
    • Respondents were overwhelmingly glad that Drupal has a code of conduct and liked its positive language
    • They felt that the current Code of Conduct is not specific enough when it comes to anti-harassment language, scope, and consequences
    • When it came to updating the Code of Conduct, respondents wanted the CWG to include members of Drupal Diversity and Inclusion, as well as camp organizers and other consultants.

What changes are in the updated Drupal Code of Conduct draft?

Overall

  • All new and existing copy has been reviewed for readability and rewritten to use plain language wherever possible.
  • Section headers have been reworded to provide more context.
  • Examples of positive and unacceptable behaviors have been added to each section. These may be put in expandable fieldsets in order to improve readability.
  • Instructions for reporting Code of Conduct violations are now broken out as a separate sidebar to make them easier for people to find.

Introduction

  • The introduction has been rewritten to make it more consistent with Drupal’s Values and Principles.
  • A pledge to welcome and support people of all backgrounds and identities has been added
  • An explanation of what the Code of Conduct covers, who it applies to, and where it is enforced has been added
  • An explanation of the consequences of violating the Code of Conduct has been added

We are considerate of the needs of others (formerly “Be considerate”)

  • A recognition that community members communicate in different ways and use different languages has been added
  • A reminder that community members should be valued equally whether they are volunteers or paid to participate in the community has been added

We treat each other with respect, even when we disagree (formerly “Be respectful”)

  • Language on resolving disagreements has been moved from “When we disagree we consult others” into this section

We are collaborative (formerly “Be Collaborative”)

  • Language that community members should take responsibility for the impact of their words and actions has been added
  • A reminder to listen to others and keep an open mind has been added.

We do not tolerate abusive behavior (formerly ”When we disagree, we consult others”)

  • Language about disagreements and conflict resolution has been moved into “We are collaborative”.
  • Added language that taking action against harassment and abuse is a shared responsibility.
  • Added language clarifying how the Conflict Resolution Team reviews and responds to incident reports

We ask for help when we need it (formerly “When we are unsure, we ask for help”)

  • Added language about documenting work
  • Added language that contributors may not always have time to answer questions
  • Added language about reviewing existing documentation before asking for support
  • Added language about updating inaccurate or outdated documentation

We step down considerately (formerly “Step down considerately”)

  • Added language about being being able to take a break or step away
  • Added language about leaving things better than we found them

We are here for each other (new section)

  • Reiterates shared commitment to a diverse, welcoming, and inclusive community.

Who was involved in developing the updated Code of Conduct draft?

This effort was led by a group of Community Health Team members:

This group also involved a number of community stakeholders in the process including the full membership of the Community Health Team, and over a dozen other community leaders including members of Drupal Diversity and Inclusion, the Event Organizers Working, the Drupal Security Team, and past and present Drupal Association staff members. These community members were asked to provide feedback based on their personal perspectives and experiences, not on behalf of their affiliated groups or teams.

The group also solicited feedback on draft versions of the document from community members based in different areas of the world, including North and South America, Europe, Africa, and Asia.

What process was followed to create the Code of Conduct draft?

The group began with a chartering exercise to define shared goals, measures of success, opportunities, and constraints. A timeline was then created with key milestones, divided into two-week sprints.

The group then identified a set of existing open source codes of conduct to review along with the existing Drupal CoC. Different CoCs were assigned to different team members to identify their distinct elements (e.g., “examples of positive and negative behaviors”, “statement of scope”, “enforcement expectations”). The group met to discuss the different elements and voted on which ones they felt were “must haves” “should haves” and “nice to haves” for an updated Drupal CoC. The text of those elements was then collated into a single document and shared with community stakeholders for review and comment.

Following the initial review of that document, the group then worked to create an initial draft using clear and consistent language. This draft was shared with community stakeholders for review and went through multiple rounds of revision based on their feedback.

Updates were posted to the Drupal Community Working Group’s blog throughout the process.

What’s next?

Following the community review period, the group will meet to review all feedback and determine what changes need to be made to the draft document before it is finalized.

The finalized draft will then be shared with the CWG’s Conflict Resolution Team, which is responsible for maintaining the Drupal Code of Conduct and related documentation. They will consult with others and make any final changes before updating the Code of Conduct page on Drupal.org with the updated copy.

Sooper Drupal Themes: What is low-code Drupal development?

Image removed.

The Drupal and wider DXP community are embracing low-code development.

Low-code development is a broad topic, but at its core, it’s an approach to building digital applications that aim to reduce the gap between developers and non-developers. In other words, it lets you do more things while using less code. 

Instead of writing code, compiling it, and running it to view the results, low-code development lets teams work the other way around: users manipulate elements via a visual interface, and the full code quietly adjusts itself behind the scenes.

Gartner estimates that by 2024, more than 65% of application development will follow a low-code approach, so here’s what you need to know about this fast-growing trend: who it’s for, what it looks like, and what pros and cons come with its adoption. 

Low-code tools and platforms

Low-code is everywhere, and it’s for everyone. 

 identifies two major audiences for these types of platforms: 

  • So-called citizen developers (also known as power users) rely on low-code platforms to accomplish various tasks despite their lack of formal technical knowledge (e.g. marketers, designers, managers)
  • Development teams, who benefit from low-code solutions through the ability to utilize their existing skill set faster and more efficiently

One of the most recognizable examples of a low-code platform geared to the former audience is the WYSIWYG (what-you-see-is-what-you-get) website builder, which lets users manipulate visual elements as they would appear on the page, and the underlying HTML, CSS, and JavaScript is generated accordingly. This means that marketers and designers can collaborate on landing pages without having to work with a front-end developer. 

Common types of low-code platforms and apps include:

  • Enterprise app creation platforms like Zoho and QuickBase
  • WYSIWYG page builders and visual layout editors for content management systems, such as DXPR Layout Builder for Drupal or Elementor for WordPress
  • Workflow automation software like IFTTT, Zapier, Integromat, and Microsoft Flow (for end-users), or Microsoft PowerApps (for developers and IT professionals)
  • Ecommerce-in-a-box solutions such as Shopify
  • Marketing automation software like MailChimp and Marketo

Low-code development advantages

There’s a reason why low-code development is seeing a surge in popularity: it comes with a host of benefits for marketers, designers, developers, and entire organizations. It’s also a great way for self-taught people - who make up a growing part of the workforce -  to quickly acquire new skill sets, as it greatly reduces the learning curve for complex technical concepts.

Easy to learn (for everyone)

Low-code applications enable everyone in an organization to benefit from powerful workflows and capabilities that were once the sole realm of those with development or scripting knowledge. 

For marketers, this could mean no longer relying on developers to build new landing pages and forms for a website; for designers, it might look like automatically exporting visuals as code rather than having to translate them manually before handing them over to the dev team.

Accelerates work

Even if you know how to accomplish something via programming, it doesn’t mean you wouldn’t prefer a quicker way to go about it. 

Low-code development speeds up processes on multiple levels: not only are fewer people needed to create a given asset, but the ability to create flexible, reusable components eliminates considerable effort from recurring tasks.

Lowers bug risk and increases security

Manually writing code is a task that’s particularly prone to mistakes, and anyone who’s had to parse through dozens upon dozens of lines of code to pinpoint a problem will agree that those mistakes often take quite a bit of time to fix. 

By automating code generation based on visual inputs and reducing the amount of “hand-written” code required, low-code applications take things like typos and open tags out of the equation entirely. Another advantage of working with low-code solutions is the enhanced security that comes with large-scale, extensively tested, and monitored platforms. Comparatively, entirely custom-built solutions tend to be at a higher risk for vulnerabilities.

Reduces costs

Thanks to all the aforementioned benefits, adopting low-code solutions is often the most cost-effective move for businesses. It’s a great way to make operations more efficient while saving time and effort for everyone involved. It also eliminates many of the more minute aspects of quality assurance and streamlines the testing process.

It also gives teams the means to take their skills further, so what might previously have required expensive third-party consulting can now be accomplished in-house.

Low-code development drawbacks

Nothing is perfect. While their benefits outweigh their downsides in many, if not most, cases, low-code platforms do have certain disadvantages when compared to fully custom solutions.

  • It might make things harder to fix. If you build something without fully understanding what you’re doing and how it works, it’s likely going to take more than a quick glance under the hood to identify and solve potential issues.
  • It can lack nuance. With low-code platforms, a single person can often build what would otherwise require input from multiple sources. This is a clear benefit in most situations, but it does mean that certain more specific elements risk being overlooked. 
  • It can skew perceptions of scope. If building a landing page typically takes only a few minutes thanks to reusable components, requesting additional resources such as developer hours when a more complex version is required can be slightly more challenging to justify. It’s important to keep everyone on the same page when it comes to the limitations of a given platform or tool.

Low-code solutions for website development

One of the areas where low-code solutions really shine is streamlining website development thanks to user-friendly visual tools. Content management systems such as Drupal offer increasingly intuitive ways to build complex information architectures and data retrieval systems without the knowledge of PHP or SQL. When it comes to user-facing elements, DXPR provides a low-code solution that empowers marketing teams to unlock the full potential of Drupal sites. If you’re interested in building better sites, faster (and really, why wouldn’t you be?), check out the DXPR demo to see how easy it can be.

Evolving Web: The Future of Drupal – What You Can Look Forward To!

Image removed.

One of the reasons I love going to DrupalCon is that it’s a way to absorb everything new coming out of the Drupal community, and all the good things we have to look forward to in upcoming versions of Drupal. Here’s a summary of what I’m excited about right now!

New Goodies for Content Creators

Content editing features have been a focal point for Drupal in recent years. CKEditor 4 (the WYSIWYG editor that ships with Drupal) will soon be replaced by CKEditor 5. This new version provides improved editing features for content creation and editing features. These include track changes and revision history, intelligent text predictions and the ability to export to PDF. CKEditor 5 is now stable in Drupal 9.5 and undergoing testing so it’ll be ready when Drupal 10 is released.

The Drupal community has also made massive improvements to Localize.Drupal.org. This website, which is a means of incorporating languages into Drupal Core, promises to better translate the Drupal admin UI, which will result in a better UI for people who edit Drupal in other languages.

There is also an initiative underway to overhaul the Drupal toolbar in a way that is beneficial for content editors. The existing toolbar lacks submenu navigation and takes up too much space on the page in vertical mode. The goal is to adapt the toolbar so that it’s easier to use and more accessible for both content editors and site builders by introducing an up-to-date UI navigation pattern, adapting the information architecture and opening the possibility to include multiple menus that are built for the needs of different types of users.

Changes for Site Builders

DrupalCon Prague also brought news from the distribution and recipes initiative. Another tool that promises to make site building easier, recipes represent a more granular way of adding configuration to your site, allowing for a mix and match of a sort that you can’t do with distributions.

The current goals of the Distribution and Recipes initiative are to improve distribution discovery, allow for multiple distributions to be used on the same project, be installable at any time in a project's life cycle, provide for easier updates and enable distributions to ship demo content. A patch that can install modules, create and update configuration and apply other recipes is ready to use. More information is available at https://drupal.org/project/distributions_recipes.

Another exciting new initiative for site builders is the new project browser tool under development. This will enable site builders to search for contributed modules more easily through Drupal’s admin UI. Currently site builders are presented with an overwhelming selection of 55-plus categories of modules on Drupal.org. The new browser will simplify this with a more limited set of categories (which were brainstormed at DrupalCon), featuring useful information to help builders select modules that are good fits for specific projects.

Changes for Developers

A major piece of news from DrupalCon Prague of relevance to developers was the introduction of GitLab as a standard tool for developers to use to manage code and keep track of changes. This replaces the development tools offered on Drupal.org with a more complete set of tools (such as more streamlined merge request processes) and a whole product behind it. GitLab integration has already been added to Drupal, now it is now being added to all modules.

Automatic updates for Drupal Core were a major theme at DrupalCon Portland earlier this year and were again discussed at DrupalCon Prague. The Portland event featured considerable beta testing of the new update system, which brought this important feature closer to completion and ready for inclusion in Drupal 10. This is one of Drupal's most frequently requested features and will ensure that all Drupal websites stay secure throughout their lifecycle.

The future of Content Management

At DrupalCon I had the opportunity to give a presentation on the future of content management and how Drupal has evolved beyond simply being a content management system. It still functions as this, but it is also a digital experience platform and a platform that’s optimized for implementing your content strategy, whose strengths lie in its flexibility in terms of layering functionality on top of content in a way that actually integrates with your content.

I discussed how one of Drupal’s core strengths is its flexibility in creating structured content that matches your content strategy. This means you can create a strong strategy and build your Drupal platform to support it. Drupal can also integrate with other data sources and marketing tools in an open way, giving you choice as to what technology and marketing stack you want to use.

To sum up, I made a case for Drupal as an open digital experience platform. Focusing on content strategy first typically yields better results in terms of how you structure your content and the functionality, technology and marketing stack you layer on top of it. I also made the case that you need a strong content governance plan to keep your content strategy in place and in use in order to leverage Drupal in this way.

The roadmap for Drupal 10 and Beyond

One source of information for what’s coming down the line in the Drupal project is the twice-yearly Driesnotes, presented at each DrupalCon. In his customary keynote speech at DrupalCon Prague in September, Drupal founder Dries Buytaert expressed a certain frustration that his company doesn’t promote itself as well as it could. He began by discussing his discomfort with social media platforms and other forms of proprietary software while lauding Drupal as an open web champion, citing the freedom it provides to users to own their own content and code.

In his keynote, Dries spoke at great length about the many initiatives underway as part of the Drupal project, including the introduction of GitLab, which he cited as a major step towards making it easier for people within the Drupal community to contribute to the platform. He also noted that since his previous DriesNote in Portland, Drupal has achieved stability for Olivero and CKEditor 5, made preparations for the introduction of PHP 8.2, upgraded to Symfony 6 and made Drupal Core smaller – all of which will be included in the Drupal 10 launch at the end of 2022.

Dries also touted project browser and automatic updates as major initiatives that, while not set to be ready for Drupal 10, will probably factor into Drupal 10.2 or beyond. He cited these as features that enable average users to be part of Drupal and the open web (and will facilitate upgrading to Drupal 10). These features also help promote the great work done by Drupal developers, making that work more accessible to all Drupal users.

Have a migration project in mind? Join our migration workshop to learn more about moving your content and configuration into Drupal 9. This course takes Drupal 10 readiness into account, so you’ll also be ready for Drupal 10’s release or to migrate directly to Drupal 10, depending on the timing of your migration project.

 

//-->

 

+ more awesome articles by Evolving Web

Drupal Core News: New provisional Drupal core release manager: longwave

I am pleased to announce that Dave Long (longwave) has accepted our invitation to become a provisional Drupal core release manager!

Dave is based in the UK and has been contributing on Drupal.org for over fourteen years. He has been especially active in the development of Drupal 9 and 10, and is credited on over a thousand core issues. He is also a provisional member of the Drupal Security Team and has contributed significantly to core security advisories over the past six months. Dave is also a regular contributor to the Bug Smash Initiative which aims to improve Drupal by fixing known bugs, and was previously a maintainer of the Ubercart shopping cart for Drupal 7.

Dave first discovered Drupal in 2006 with version 4.7 and has used it ever since for numerous web projects as a freelancer and since 2014 as a senior developer at Full Fat Things.

Dave's leadership, patience, responsiveness, communication skills, and deep technical expertise in the Drupal core issue queue make him ideally suited to the role of a provisional core release manager. Dave will collaborate with the core release management team (catch, xjm, and quietone) on Drupal core releases, and with the Drupal Security Team on keeping core secure.

Please join me in welcoming Dave to the committer team!

Specbee: What is BEM (Block, Element, Modifier) and How can it be used with Drupal Emulsify Twig

What is BEM (Block, Element, Modifier) and How can it be used with Drupal Emulsify Twig Ravikant 08 Nov, 2022 Subscribe to our Newsletter Now Subscribe Leave this field blank

When working with open-source technologies and software, it is even more important to simplify the effort needed to read and understand your code. A good naming convention helps you solve larger problems rather than focusing on syntax and style preferences during code reviews. Seasoned developers understand the significance of well-written and organized code when working with larger websites with tons of style elements.

BEM (Block, Element, Modifier) methodology is a widely used naming convention for CSS classes that is gaining popularity because of the ease of use it offers. The fundamental concept of BEM is component-based web development. BEM makes interface development easy and fast, especially when you’re handling large projects with complex UI. Let’s explore more on BEM and how it can work with the Drupal Emulsify Twig module.

What is BEM

The BEM methodology was introduced to help make CSS classes easier to access, understand and scale. It can accelerate the development process and helps build reusable components.

BEM includes three parts:

  1. Block
  2. Element 
  3. Modifier

Block

Blocks are the outermost and functionally independent component and are reusable. Examples: header, footer, sidebar, menu, content, etc.

Features:

  • Block names should always reflect the block's purpose. 
  • Blocks should not use margin or position. If you need to add margin or position then you need to apply it to the inner containers.
  • Don’t use CSS tags or ID selectors when using BEM.

Example:

Element

Elements are child items of a Block. Each element can have only one block and cannot be used outside of it. Examples: menu items, list items, input field, etc.

Features:

  • The element name (class) should describe its purpose (title, caption) and not its state (small/red). 
  • The element and block are separated with a double underscore (__). Like this: block-name__element-name.

Example:

       Icon Image    

Modifier

A class name through which you can define the appearance, state, or behavior of a block or element. Examples: red, large, disabled, fixed, etc.

Features:

  • The modifier name describes its appearance. For example, if the appearance is “_large”, then the modifier class will be as icon-button__title_large.
  • The modifier is separated from the block or element by a single underscore (_).

Example:

       Icon Image    

Types of modifiers

1. Boolean

You can check the condition of the boolean value and set it in a variable. This variable can pass as a modifier value.

2. Key-value

The structure of the modifier's full name with key-value will follow one of these patterns:

  1. block-name_modifier-name_modifier-value
  2. block-name__element-name_modifier-name_modifier-value

Naming Conventions: Rules and Schemes

There are different naming schemes. All schemes have some common rules like:

  • Names are written in lowercase Latin letters.
  • Words are separated by a hyphen (-).

1. Classic Naming Schemes

The classic naming scheme is the default naming scheme of BEM.

Block-name__elem-name_mod-name_mod-val

  • The element name and the block name are separated by a double underscore (__).
  • The modifier name and the block or element name are separated by a single underscore (_).
  • The modifier value and modifier name are separated by a single underscore (_).

2. Two Dashes Naming style

block-name__elem-name--mod-name--mod-val

  • The element and block name are separated by a double underscore (__).
  • The block and element are separated by a double hyphen (--).
  • The value of a modifier and modifier are separated by a double hyphen (--).

3. CamelCase Naming Style

blockName-elemName_modName_modVal

  • Each word after the first word begins with an uppercase letter.
  • Blocks, elements, and modifiers are used the same way as in the standard naming scheme.

4. React Naming Style

BlockName-ElemName_modName_modVal

  • Block's name and element’s names begin with an uppercase letter. 
  • The modifier’s name begins with a lowercase letter.
  • An element name and the block name are separated by a single hyphen (-).
  • Names and values of modifiers are separated the same way as in the standard scheme.

BEM in Drupal with Emulsify Twig module

In Drupal, we can use the BEM Twig function with the help of the Emulsify Twig module. The BEM function lets you create BEM classes on elements in the components. Below mentioned are some BEM Twig extensions and their usage.

1. Simple block name (required argument):

This creates:

2. Block with modifiers:

If you want to add multiple modifiers, you can do so using an array.

This creates:

3. Element with modifiers and blockname (optional):

This creates:

4. Element with blockname, but no modifiers (optional):

This creates:

5. Element with blockname, modifiers and extra classes:

This creates:

6. Element with extra classes only (optional):

This creates:

Add Attributes Twig Extension

The Add attributes Twig function allows you to add HTML attributes to the elements of your components. Take a look at some Add Attributes functions below:

{% set additional_attributes = {   "class": ["icon-button", "icon-button__title"] } %} {% set additional_attributes = {   "class": bem("icon", ["small", "red"], "icon-button"), } %}

Final Thoughts

BEM methodology is extremely useful to developers who want to write and maintain better quality code that can be easy to be handed over and understood. Every element has a purpose which can be easily identified by its name and which block it is coming from. When used right, you will see that using BEM can boost development speed. If you liked what you read, sign up for our weekly newsletter where we'll send you fresh, piping-hot insight right to your inbox!

Author: Ravikant

Meet Ravikant Kumawat, a front-end developer who loves to keep up with the latest technologies. When not working, he dives into his books and fancies a great vacation with his family from the hills of Kashmir to the beaches of Kanyakumari. Also, Ravi can be a great bank for exclusive secrets!

Drupal Drupal Development Drupal Planet Drupal Module

Leave us a Comment

 

Recent Blogs

What is BEM (Block, Element, Modifier) and How can it be used with Drupal Emulsify Twig

Image Image removed.

The Drupal 9 Webform Module – A Brief Tutorial

Image Image removed.

How to React Quickly in Drupal

Want to extract the maximum out of Drupal? TALK TO US

Featured Success Stories

Image removed.

Upgrading and consolidating multiple web properties to offer a coherent digital experience for Physicians Insurance

Image removed.

Upgrading the web presence of IEEE Information Theory Society, the most trusted voice for advanced technology

Image removed.

Great Southern Homes, one of the fastest growing home builders in the United States, sees greater results with Drupal 9

View all Case Studies

Talking Drupal: Talking Drupal #372 - CKEditor 5

Today we are talking about CKEditor 5 with Wiktor Walc & Piotrek Koszuliński.

For show notes visit: www.talkingDrupal.com/372

Topics
  • What is CKEditor
  • What does it do for Drupal
  • Differnece between CKEditor 4 and 5
  • Biggest benefit
  • Improvements to the editing experience
  • Plugin ecosystem
  • Plugin language
  • Roadmap
  • Paid Features
  • Supporting the Drupal community
  • Security
  • Native Web Components
Resources Guests

Wiktor Walc - ckeditor.com @w_walc Piotrek Koszuliński - ckeditor.com @reinmarpl

Hosts

Nic Laflin - www.nLighteneddevelopment.com @nicxvan John Picozzi - www.epam.com @johnpicozzi Randy Oest - randyoest.com @amazingrando

MOTW Correspondent

Martin Anderson-Clutz - @mandclu Metatag

Previously discussed in episodes: 70 as MOTW (8y ago!) and mentioned in 31, 46, 137. And 185 Brief description: Allows your Drupal site to provide meta tags on content to implement SEO best practices and maximize online findability Brief history

  • How old: created in 2009
  • Versions available: Supported versions for Drupal 7, 9, and 10
  • Current version released Sep 29, 2022 Usage stats: 381,821 Maintainer(s): Dave Reid and DamienMcKenna - renowned Drupal contributors Module features and usage Allows content editors to populate common (and uncommon) meta tags either manually for each piece of content, or to have them filled out programmatically using tokens A wide variety of submodules to address different use cases where meta tags are helpful: social sharing, verifying site ownership (e.g. for Google Search Console), and more For any site that considers SEO a priority (which is probably most public-facing sites), setting Metatag should really be one of the first things Discussion: Given how widely used this module is, does anyone have specific experience with Metatag to talk about?

Freelock Blog: A new approach to Drupal theming, just in time for Drupal 10

A new approach to Drupal theming, just in time for Drupal 10 John Locke Sun, 11/06/2022 - 18:07 Image removed.

Over the past few months, I've fielded a lot of minor styling requests, and as I work through each problem, I've almost always ended up with substantially less code than was there before. When I look through our portfolio of sites, most of them use tons of CSS to style all the various parts of a site -- and in many cases, the same styling reappears a bunch of different places. This leads to inconsistent styling, slow page loads, and more effort needed to make minor changes.