25 Aug 2017
Thoughts on Bootstrap 4
About two weeks ago Bootstrap 4 went into beta. There was a discussion on Designer News where I called them out for the lack of namespacing.
The question is, does anyone care anymore? How do you work on this for 2 years and don’t realize the need for namespacing? What is up with the load of utility classes that do one thing?
I have often used Bootstrap in the past but I am moving away from it completely. Just have to find a good popover/modal/tooltip replacement and I’m good to go with a clean BEM/ITCSS setup.
I regret the harshness of my initial comment when I am essentially criticising a free open source project, but I also stand by what I said.
The reason I am fierce in this is because the choices made by the framework authors directly avoid my daily work. Bootstrap is a super popular framework – given that we work on a lot of web app projects, the chances are big that when we enter a new project, it is Bootstrap-based.
Here’s another part I wrote, in the context of Bootstrap as a springboard for new developers:
The arguments that Bootstrap gets you started quickly and allows you to onboard new devs easily are true, but some web app projects tend to have codebases that have to be maintained for years. The initial simplicity then becomes a double-edged sword, where some choices within the framework that were made to keep things simple actually make things a lot harder. One doesn’t simply refactor after some choices have been made – why can’t we have good ones from the start?
Bootstrap is supposed to be a base starting point, but the problem is that it tends to stick around. Entire custom functionalities get built around its choices, making it hard to do the refactoring I talk about. Couple that with plugins or tech combinations (i.e. react-bootstrap), and it gets progressively harder to get rid of Bootstrap.
The entire reason CSS is so hated is because if you do it the wrong way, you are essentially creating an unmaintainable monster.
Over the past few years, people like Harry Roberts did some brilliant work evangelising people to treat CSS a bit more like a programming language, while still remaining aware of its own strengths (i.e. the cascade).
It’s sad that a leading framework like Bootstrap doesn’t adopt these lessons, instead opting for a combination of simplicity and the maintenance hell tachyons-style “utility CSS”.
I just have to ask, which lessons are we teaching the next generation of developers?
I have used Bootstrap for a lot of projects in the past, working out strategies to “fix” its faults. But there is a limit to what you can fix. Sometimes the problem it at the base.
There is undoubtedly something to be said for a framework that a lot of people know how to use, which has a vibrant plugin community, and good documentation. Regardless of its faults, Bootstrap might still be my choice for some projects. But I remain very aware of its faults, and wish that the creators would change their strategy, especially when it comes to namespacing.