Aww yeah, our first release since leaving Twitter is here with Bootstrap 2.2.0! We originally planned to release this as 2.1.2, but given the timing and scope we’re bumping the version. Included in this release are dozens of bug fixes, documentation enhancements, and a few new and improved features.
tl;dr
2.1.2 is now 2.2.0: four new example templates, added media component, new typographic scale, fixed that box-shadow mixin bug, fixed z-index issues, and more.
Highlights
Added four new example templates to the docs, including a narrow marketing page, sign in form, sticky footer, and a fancy carousel (created for an upcoming .net magazine article).
Added the media component, to create larger common components like comments, Tweets, etc.
New variable-driven typographic scale based on @baseFontSize and @baseLineHeight.
Revamped mini, small, and large padding via new variables for inputs and buttons so everything is the same size.
Reverted 2.1.1’s .box-shadow(); mixin change that caused compiler errors.
Improved dropdown submenus to support dropups and left-aligned submenus.
Fixed z-index issues with tooltips and popovers in modals.
Hero unit now sets basic type styles for the entire component, rather than on .hero-unit p { ... }.
Updated JavaScript plugins and docs to jQuery 1.8.1.
Miscellaneous variable improvements across the board.
Miscellaneous documentation typos fixed.
For the full list of issues included in this release, visit the 2.2.0 milestone on GitHub. Otherwise, be sure to visit the docs or download the latest to get your hands on 2.2.0.
As a quick side note, we’re still working on moving Bootstrap to its own organization on GitHub. That will come with a couple other big changes, but more on that soon. We’ll be jumping on the next release shortly for more bugfixes, but until then enjoy the fixes and new hotness!
Lastly, thanks everyone again for submitting issues and contributing—you rock!
Working at Twitter the last two and a half years has been incredible. Both Jacob and I have worked with a lot of amazing people on some pretty amazing projects, but nothing has been more enjoyable or rewarding than working on Bootstrap. Despite us leaving Twitter to go our separate ways, we’ll both be continuing our work on the project.
Bootstrap will remain a Twitter project on GitHub for the time being, but we’ve realized the project has grown beyond us and the Twitter brand. It’s a huge project playing a pretty awesome role in the web development industry, and we’re excited to see it continue to grow. To that end, we’ve begun working to move Bootstrap into its own open source organization. It will take time, but we’re dedicated to making it happen.
In the coming weeks, we’ll release another bugfix update (2.1.2) to address a few things, and then it’s full steam ahead on improving some key areas of the framework (modals, carousels, customizer, etc). We’ll share more info on those updates as plans take shape.
Until then, we have nothing but love for Twitter and the web development community. Thank you all so much for everything.
Two weeks later, we’ve closed another 500 issues against Bootstrap. That includes all the dupes—you nerds like reporting typos—and invalid issues that don’t end up making it on the official release milestone. But, what’s awesome is that we have 2.1.1 ready to rock with 73 bugfixes.
New feature: alert text. We documented these new classes, like .text-success, at the bottom of the Typography section along with the long undocumented .muted.
Fixed a lot of typos in the docs. Spelling is hard.
Made the .box-shadow() mixin more durable. It no longer requires escaping for multiple shadows, meaning you can easily use variables and functions in them once again.
Widened .dl-horizontal dt and .horizontal-form .control-group to better handle the increased font-size.
Dropdown submenus improved: now you only see the next level, not all levels, on hover of the submenu toggle.
Clarified jQuery and Bootstrap template requirements in Getting Started section.
select now utilizes @inputBorder.
.lead now scales up from @baseFontSize instead of being a fixed font-size and line-height.
Fixed the vertical three color gradient in latest Firefox.
Reordered some variables that caused errors in certain Less compilers.
There’s a bunch more, so do run through the 2.1.1 milestone when you can, but those are the big ones.
Next up
More bug fixes, more feature improvements. 2.1.2 will be coming shortly and we’ll work to improve a handful of issues that we punted on for 2.1.1. Beyond that, we’ve scoped out the next few releases around a set of key components like modals and carousels.
We’ll continue to add new features as appropriate, but we’re primarily focused on improving current functionality in the next few months.
Roughly two weeks ago we upgraded the blog to use Jekyll and GitHub Pages instead of WordPress. When we did that, we forgot about the RSS feed. A few awesome folks noted we were missing it and so we’ve added it back. Unfortunately it’s not the same URL, but it’s there nonetheless.
It’s also in the <head> of the blog’s pages, so entering just the root URL should resolve fine for you in most RSS apps. Again, sorry for the oversight and please continue to let us know if we can do anything else to improve the blog.
After a smaller 2.0.4 release, we’ve got another huge update that resolves tons of bugs, improves the flexibility and durability of our code, and introduces a few awesome new features. It’s a big release wrapped in a brand new set of docs and we couldn’t be more stoked to launch it.
tl;dr
New docs, affix plugin, submenus on dropdowns, block buttons, image styles, fluid grid offsets, new navbar, increased font-size and line-height, 120+ closed bugs, and more. Go get it.
Improved documentation
In addition to sporting a fresh visual style, the content of our docs has been overhauled once again. Good-bye long-winded marketing copy and multiple columns, hello succinct and directive single-column documentation. We’ve got a new tagline, new layout and navigation, and (more) clearer examples.
Key changes and new features
We had higher expectations for the number of new features in 2.1, but we toned it back to get this release out the door in a manageable form. We’ve still added some great new features and fixed tones of bugs, so here’s a brief overview of what’s new.
Submenu support on dropdowns. We avoided this for some time as we thought it would unnecessarily complicate things, but we’ve backtracked on that and opted to add them in. See the docs for more info.
Affix JavaScript plugin. Make anything stick to the top of the viewport as you scroll with our newest plugin, built to power our new docs navigation.
Block level buttons. Add .btn-block to a button to make it full-width.
State classes on table rows. Better convey success, warning, and error messages in tables.
Improved disabled states on navs and dropdowns. Where by “improve” we mean actually present—just add .disabled to the li.
The navbar component is now white by default, with an optional class to darken it. In order to have two options for the navbar, light and dark, we needed to have better defaults. Having a lighter default navbar means fewer lines of code as we don’t need to override anything for the basic navbar functionality and the override it again to restore the default styles. Missing the black? Just add .navbar-inverse to get the dark gray navbar back.
Improved prepended and appended inputs. No need to place the input and .add-on on the same line of code (sorry about that by the way). Break them up as you like and they’ll still stick together with some crafty font-size working.
New base font-size and line-height. 13px/18px is out, 14px/20px is in. This also has changed the size, line-height, and margin of our heading elements, buttons, and more.
Added variable for navbar collapse trigger point. Instead of a fixed pixel width of 980px for triggering the collapsed navbar, we now use a variable so you can customize it for your projects.
Fluid grid offsets. Thanks to our contributors, the fluid grid now has offset support to match our fixed (pixel) grid.
Fluid grid system variables are no longer fixed percentages. Instead, they are calculated in LESS with percentage() based on the default, fixed-width grid variables. Math!
Removed LESS docs page. We will no longer document variables and mixins in two places—rewriting that stuff was painful and took too much time. Instead, just checkout the .less files.
Thanks, nerds
Once again, we couldn’t have done this without all you nerds out there supporting us with your contributions, bugfixes, and feature requests. You keep this project going strong and we thank you deeply for your support.
<3
For the full changelog, visit the GitHub wiki page and the 2.1.0 milestone. We’ve already begun slating things for 2.2, but currently have no estimates on when that will be released or what exactly will make it in. We also may do a 2.1.1, but again, no promises at this point. Live in the now!
We’re stoked to release Bootstrap 2.1 next week Monday at our first birthday party, but to make it a great release, we need your help testing it out.
While 2.0.4 was a smaller release, 2.1 is a much larger effort that closes nearly 100 issues and adds a handful of great features. You can see the full list of changes changes in 2.1 thus far by browsing the milestone on GitHub.
What’s included
At a broad level, we’ve got overhauled docs. They’re drastically streamlined, redesigned, and better than ever. They even include a new page for getting started with an overview of the framework. New framework features include submenu support on dropdowns, block level buttons, and the affix plugin. We’ve made many other key changes, so be sure to check it out.
We’ll have a more complete list of changes with our release next week.
How to help
Just like last time, we’re pushing out a release candidate of the 2.1 code and docs. Here’s how you can help us out:
Checkout the 2.1.0-wip branch, or browse the release candidate docs so you can easily load it up on devices and such for testing.
Load up the new docs in your favorite, or your least favorite, browser or device and start testing.
Open a new issue on GitHub to report bugs. Please include as much context and information as possible. If it’s a visual bug, please include a screenshot. If it pertains to JavaScript, consider including a jsfiddle or jsbin.
If you’re submitting a pull request against 2.1-wip, be sure to read the Contributing to Bootstrap wiki page first.
Sorry about the database connection issues some of you may have seen in the last 24 hours. We’ve moved off WordPress for our blog and are now using GitHub pages and Jekyll. Jekyll is an amazingly lightweight and simple site generator from Tom Preston-Werner, cofounder of GitHub. Here’s why:
Instead of a database, we have flat Markdown files.
Instead of hosting code on servers from Media Temple or another hosting provider, everything is on GitHub.
The posting process is as simple as writing a post and pushing the gh-pages branch.
It’s simple, fast, and pain free. We love it and encourage you to check it out in the future. Stay tuned in the next two weeks or so for more information on our next release. Until then, enjoy the updated blog.
Following up on the large 2.0.3 release a few weeks ago, we have a fresh update to address some documentation issues and basic CSS bugs. 2.0.4 includes around thirty closed issues and is our first version under our updated release approach (shorter, more concise releases).
As always, here’s a quick overview of some of the top changes.
Docs
Added type="button" to all dismiss buttons in alerts and modals to avoid a bug in which they prevent their parent’s form from properly submitting.
Added simple documentation to Base CSS for .lead.
Added new CSS test to illustrate how the navbar, static and fixed, behaves.
Clarified grid sizing copy to include mention of responsive variations.
Reformatted the LESS docs page to prevent terrible table displays at smaller grid sizes.
Miscellaneous typos and tweaks.
CSS
Refactored forms.less to make our selectors more specific for fewer overrides and less code. Instead of a generic input selector and various resets, we target each type of input like input[type="text"], input[type="password"], etc.
Form field state (e.g., success or error) now applies to checkbox and radio labels.
Removed redundant CSS on <p> for font-family, font-size, and line-height.
Removed redundant color declaration from the <label> element.
Added variables for dropdown dividers border colors.
legend and .form-actions share the same border-color, #e5e5e5.
Fixed some responsive issues with input-prepend and -append, notably with the fluid grid.
Added special CSS to prevent max-width: 100%; on images from messing up Google Maps rendering.
Scope opened dropdowns to only immediate children to avoid unintended cascade.
Similarly, scope floated-right dropdowns to immediate children with .pull-right > .dropdown-menu.
Updated .placeholder() mixin to use & operator in Less for proper output when compiling.
Added -ms-input-placeholder to .placeholder() mixin.
Added CSS3 hyphens mixin.
Fixed a bug in IE7/8 where certain form controls would not show text if the parent had a filter opacity set.
After three large point releases focusing on massive amounts of bugfixes and documentation changes, we’re going to change up our release strategy to push out smaller, more frequent updates.
Why?
Releases with a hundred bugfixes are difficult to test, take much longer to ship, make changelogs super long and verbose, and have a tendency to introduce additional unforeseen bugs. In hindsight, our 2.0.3 release should have been a 2.1 given its sheer scope and the time it took to ship. Going forward, we’ll try to improve the frequency of the patches to get you better code faster.
So what’s next?
At the Twitter UK Open House in London last week, we said 2.1 was our next priority. While that’s still true, we’re backing up and rethinking it’s scope. Bootstrap 2.1 may end up much narrower in focus to help us ship it earlier. We’ll still tackle all the same issues and new features we originally planned for, but across more releases. In addition, 2.1 might not be our very next release as some of those unforeseen bugs have already cropped up.
tl;dr
To keep up with the community and improve code quality, we’ll be shipping more releases more frequently.
There is a thread on the mailing list about how to describe Bootstrap and instead of isolating our response to just one email, I’ll just blog about it. As it stands, some folks are unsure how to describe Bootstrap to those unfamiliar with it. So here it is, straight from the official horse’s mouth.
Name
Casually, it’s just Bootstrap. That’s noun and verb, for those wondering—Bootstrap the project and “to Bootstrap a project”, respectively. Formally, we call it Twitter Bootstrap, a change that came with v2.0.0. Previously we called it “Bootstrap, from Twitter” to emphasize the project over our employer, but it just became too verbose and awkward to say.
Related, the shorthand abbreviation we use is BS—not TB, TBS, or TwBs. I don’t know why, but this feels better than TB since that’s the name of an infectious disease and all that.
Description
We worked at this for a good bit before setting on our current tagline, “Simple and flexible HTML, CSS, and JavaScript for popular user interface components and interactions.” Previously, it was much more descriptive to the framework’s contents, and thus quite long and wordy. We wanted to convey the technical details properly heading into 2.0.0 (when we changed the tagline), but without the bulk. Instead, we focus on the roles Bootstrap can assist folks with: HTML, CSS, and JavaScript. Any other description is fine, but I wanted to share some insight into the official tagline just for context.
Framework
Another focal point in the email thread was the question of referring to Bootstrap as a framework. That’s accurate enough for sure, but also somewhat limiting depending on how you want to use it. Holistically, Bootstrap certainly is a framework (or toolkit or whatever) for prototyping and building production ready stuff on the web. That said, on an individual component level, Bootstrap is a tool for performing common web development tasks faster and easier.
So there you have it, a quick low-down on how we’re thinking and talking about Bootstrap. When it comes right down to it, Bootstrap is whatever you want to make of it, so dive in and see where it can help you out the most.