Just as a warning, this one is a rant. But a rant with purpose. And let me also precede this by saying that I do think that twitter bootstrap is very well crafted, and by giving tons of props to Jacob and Mark for making such a well designed and thorough framework.
That being said, the widespread use of bootstrap in production sites is making me ill. In my humble opinion, bootstrap is a tool to be used for internal backends, documentation, etc. Things that are not user-facing. For example, if you are making an admin section for your website, bootstrap would be a perfect fit. In fact, if I’m not mistaken, this was the original purpose of bootstrap: a framework for internal projects at twitter, based off twitter’s design and style.
This means that you should not ever be using bootstrap as the design for your production site. It’s essentially copping out the the entire design phase. Losing the uniqueness and personality you can give to an interface by giving it a design that was hand crafted for your product and its personality. Losing all credibility with any designer/dev who will immediately recognize that you just made your site with bootstrap. Branding your site with Twitter’s brand, not your own. Is that what you want? It’s a sign of carelessness and laziness. It says this, from your mouth: “I can’t be bothered to actually design and code my own site, let me just use bootstrap! It looks great!”. No. No, no, no, no, no. Please don’t do this.
In addition, once you start using bootstrap, you are locked in. You are writing html their way, using their classes and their styles. You will find yourself writing very little css, most of your coding will be figuring out how to write classes onto your html elements to make them look the way you want by browsing through their docs. This means that:
1) You will often end up with ugly html with stuff life ‘span-5 push-2 btn-primary btn-large’ in your classes, and
2) Since you didn’t write your own html or css, if you ever want to get a real design on the site, you are pretty much going to have to start from scratch or go into their source and try to hack the shit out of it, which would probably take even longer than the former option.
There are very specific uses for boostrap which I mentioned briefly in the first paragraph. Internal projects. Things that only you and perhaps a few other people will see. Back end interfaces. Documentation. Things that would benefit by looking nice, but which you wouldn’t typically hire a designer for. But if you find yourself using bootstrap instead of a designer, or find a designer saying they will make you a design with bootstrap, you should start getting concerned. Very concerned.
That being said, I know Initializr just decided to include bootstrap, and I’m worried about the implications of this. I’ve already seen way too many production sites using boostrap, and I don’t want this to get worse. In addition, while the html5 boilerplate turns out a blank page when you load it, lets you do things your own way, and is very appropriate for all production sites, bootstrap is none of the above. It’s a framework, it’s opinionated, it forces you into writing code a certain way, and its use is not universal.
And finally, I’d like to shamelessly self-promote by mentioning that I have been tinkering with a very differently constructed framework that is appropriate for any site. It’s modular, flexible, gets out of your way when you need it, and lets you write code your own way while also providing solid base styles when you want them. More information on that to come - stay tuned.