Skip to content

Define guidelines for preprocessors, libraries, frameworks #7150

@romainmenke

Description

@romainmenke

Guidelines already exist for polyfills : https://www.w3.org/2001/tag/doc/polyfills/
A similar document with considerations and suggestions could be created for CSS preprocessors, libraries, frameworks.
(Any tool can choose to adopt these or not)

The goal of this document would be to prevent conflicts between future CSS features and non-standard things in developer tools.

if this already exists please let me know, I couldn't find it

"preprocessors, libraries, frameworks" will be referred to as "tools".


  1. In tools it is preferable not to invent new syntax as they are not used in a vacuum.
    Developers also use linters, static analysis and need IDE features (syntax highlighting, auto complete, ...).
    Using existing syntax/grammar with custom keywords makes it much easier to roll out a new feature in one tool, without requiring the whole ecosystem to adapt.

  2. tools can move at a much faster pace than the CSS spec and browsers.

  3. The most obvious name for a feature is often the best name. (and multiple distinct features can all have the same best name)

  4. there is no working group for tooling (that I know of)

These factors make it absolutely certain that conflicts will keep on happening without proper guidelines.


Conflicts are not only a burden on the creators and users of preprocessors when tools and source code need to be updated.
Users might have years of experience and knowledge associated with how a certain keyword works.

This is an issue today with PostCSS plugins transforming nested CSS.
Users expect & to behave in a certain way based on experience with Sass and see the specced feature as bugged.

Whereas avoiding conflicts will allow developers to freely mix tooling features and native features.


Note :

It is not my intention to have a document that defines how tools must work or what they can or can not implement.

Only to have a safe framework to let tools grow together with native CSS features.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions