I don't think Material is a framework, but I agree it depends on the definition of framework. If I use this:
In computer programming, a software framework is an abstraction in
which software providing generic functionality can be selectively
changed by additional user-written code, thus providing
application-specific software. A software framework is a universal,
reusable software environment that provides particular functionality
as part of a larger software platform to facilitate development of
software applications, products and solutions. Software frameworks may
include support programs, compilers, code libraries, tool sets, and
application programming interfaces (APIs) that bring together all the
different components to enable development of a project or solution.
Frameworks contain key distinguishing features that separate them from
- inversion of control: In a framework, unlike in libraries or normal user applications, the overall program's flow of control is not
dictated by the caller, but by the framework.
- default behavior: A framework has a default behavior. This default behavior must be some useful behavior and not a series of
- extensibility: A framework can be extended by the user usually by selective overriding or specialized by user code to provide specific
- non-modifiable framework code: The framework code, in general, is not supposed to be modified, while accepting user-implemented
extensions. In other words, users can extend the framework, but should
not modify its code.
then Material is not a framework, but a guideline to build frameworks. For example, Materialize is a framework built on Material guidelines. Another example is what I build for my team: a very customized version of Bootstrap that uses Material (a re-work from http://fezvrasta.github.io/bootstrap-material-design/ which is a bit dirty and loads a lot of unnecessary things) and has an aditional bridge to Polymer. So in my case, the frameworks are Bootstrap and Polymer, while Material is the guideline I used to built it.
This being said, going to the OP's points:
- Philosophy/Intent - since Materials Design appears to be device/platform/channel agnostic in theory, but not sure if this is also the case in practice. Bootstrap appears to be dedicated to mobile devices but is probably semi-agnostic.
I think it's EXACTLY the opposite: Material is agnostic until you use
a framework. Also, build 10 sites with Material and everything will
start to look the same. On the other side, Bootstrap has a "mobile
first" philosophy, but is the most used framework for desktop
- Coverage - there are many questions asked about 'gaps' in Bootstrap, probably because of the lack of standardization of UI design patterns and the need for customized UI components. It seems like Materials design may potentially cover more use cases and scenarios.
see my comment above. I think Bootstrap potentially covers ALL cases, not
most, something Material fails to do
- Flexibility/Extensibility - both seem well designed and easily customizable (at least judging by the amount of code on CodePen for Bootstrap), which actually leads to the problem that Microsoft has faced with its definition of its Microsoft Fluent design concept.
If I take the definition of frameworks I provided above, then yes, I
In the end, I think Bootstrap provides a framework to built code upon, and same happens with Polymer, while Material provides a set of UX and design guidelines that helps UXD maximize results, so I don't see then as opposite, but totally complementary (hence why I built what I built)