I was asked to use Bootstrap for a project because the future-maintainers didn't feel too good about their CSS skills. Bootstrap offered them a few things they definitely wanted:
- something documented (the Bootstrap site pretty much states what each class is supposed to do)
- LESS (I'm not sure why but I think maybe they wanted variables for colours, since they were so picky about their colours they'd actually sent me pantone numbers, which were pretty useless by themselves)
- a grid (grid is an option, responsive is an option (but it was desktop-first, so not really mobile-friendly), fluid non-grid is an option, and px-based is an option and you can mix these)
- something anyone else they called on later would be familiar with
I ranted and wailed and gnashed teeth at Bootstrap as I got elbow-deep in the poop.
It was craploads of bloataceous nonsuccessful cetaceans, for small things. Lots of code partially because they attempted to address every possible edge case in a wide variety of browsers, kinda like what the jQuery guys do. If you actually need to support browsers so old you can't even install them anymore, then the bloat of Bootstrap is probably exactly what you need. They do drop support for something occasionally, and I think the icon font guy never bothered to do IE6, but they still account for a lot of things.
It had accessibility problems, many of which were merely caused by sh*tty HTML. Examples would be <li class="heading">this is styled to look like a heading</li> as the first item of a list, meaning the reasons you would even have a heading (structuring your page) are gone, taking with it accessibility and navigation benefits.
There was a toggle "button" which at the time (this may have been fixed by now) was nothing more than an empty anchor with an arrow image in it and an onclick event. Without an href if wasn't even focusable in browsers like IE.
Placeholders encouraged in place of actual labels. Arg. No experienced coder would leave them out, but newbies looking at the examples in the docs got placeholder-examples for form elements they certainly used, for I have run across these sites. The point of the documentation is to show what the classes do, but they also have example HTML to go with it.
Lots of stuff that only worked with the mouse, including lots of :hover with no :focus and click events on non-focusable things. Why even pretend to give a rat's about one special type of mobile phone user (only the ones that start with an "i") when you deliberately outline:none one of the most used input devices evar? I believe Chaals spent some time on Github trying to explain to the Bootstrap guys why outline:none and utter lack of :focus styles were bad, but I dunno if he actually convinced them, since I stopped following the conversation a while back.
So most of those I spent time fixing myself and rightfully charged the client for it. Also they had chosen the grid, which by default wanted space around everything on the page, but the design called for some full-width boxes and some boxes with grid-spaces. So I simply didn't add a lot of grid elements so I could style them appropriately, but that mean they got a 80% grid page and a 20%... normal page. Dunno if that's making things difficult for them today. The CSS (in this case) would have been much simpler without all the <span class="row_blah"> in it, actually, but this was only a few pages and not a whole 9000+ page setup. The client also didn't really need browser calculations of widths in % with tens of decimal places (width: 30.057743229837293%;), especially since no browser actually reads past 2 if that. But Bootstrap's grid does offer that.
I ended up learning LESS, which I use today in my job only because someone decided on it long ago. Unless you're using some of its advanced features (it can do some calculations, and non-cascading inheritance, guards, and overrides), it's pretty much just writing sloppy CSS with harder debugging (unless you install plugins to do simple dumb stuff like show you line numbers). I save no time using LESS with a decent text editor, but it might have saved me time if I were using a MickeyMouse editor like Notepad++, because you type just a little bit LESS. Thus the name, I suppose.
SASS, and especially SASS+Compass are apparently way better alternatives to LESS, which to me doesn't really mean anything. "OO" on a declarative language smacks to me of bags of syntactic sugar on a pile of ketchuped and tobasco-sauced bacon. Which obviously some people really, really like.