I started looking at existing CSS frameworks, trying to find one that was right for me […] the only viable option was the Yahoo UI Library, but […] YUI is just way too bloated for what I want from a framework.” — Olav Bjørkøy, 2007 “ ! ! ! ! bit.ly/P9RWf1
Why people don’t use CSS frameworks Far too bloated. Most projects are unique—how can standard CSS accommodate bespoke UIs? Far too prescriptive and opinionated. They try to be all things to all men. They get in your way.
Unique projects This is the problem with (conf)using UI Toolkits. Fully designed components aren’t reusable cross-project. This is where OOCSS is a GoodIdea™.
Why the strong opinions? It’s something we can all do ourselves—we don’t need any help, right? It’s ‘easy’, so it’s easy to have an opinion. As things get more complex, we have less opinions.
If even the tiniest backwards incompatible changes to the public API require a major version bump, won't I end up at version 42.0.0 very rapidly? “ ! ! semver.org
UI Toolkit Great if you need a full UI out of the box. If you’re not great with either design or front-end dev. Fantastic for prototyping. Not suited to client work, or working with bespoke designs.
Nick Payne Software Engineer. Much cooler than I am. Keep Open-Sourcerer. Doesn’t want to be bogged down by UI. Needs something off-the-shelf. Needs a quick win. That’s fine. @makeusabrew
UI Toolkit CSS Framework Does the work for you. Offers a helping hand. Quick-win. Major commitment. Answers the ‘what?’ Answers the ‘how?’ Gets the job done. Gets the job started.
What is wrong with CSS? It’s old. Really old. It can’t be changed. It operates in a global namespace. It’s based on inheritance. It’s very, very loose. Source order is critical. The cascade needs managing. Specificity negates all of the above.
Where does that leave us? With an old, loose, leaky, globally-operating, inheritance-based language which is entirely dependent on source-order, except when you introduce its own worst feature: specificity.
Should I write my own? What is its reason for being? Will it be similar to anything that already exists? Will it be a Framework or a UI Toolkit? Will you open-source it? Do you expect people to use it?
Recap Do we really mean framework? Do very little, if not less. Solve the tricky bits. Get out of the way. Let people do the fun stuff because of you. Get a goal, purpose, and roadmap in place.