OOUI/About the library

OOUI (Object-Oriented User Interface) is a library that allows developers to rapidly create front-end web applications that operate consistently across a multitude of browsers.

The OOUI library contains


 * a set of ready-to-use widgets, layouts, and windows that can be instantiated directly or easily extended,
 * a server-side component that generates compatible output in PHP for cases where JavaScript is not supported,
 * elements that can be easily mixed and matched to create custom user interfaces.

The library provides:


 * cross-browser compatibility. Interfaces built using library elements will look and act consistently across modern browsers.
 * understandability. Interfaces share a common API that is well documented and consistently used.  Both the JavaScript and PHP components use the same class and method names.  Basic elements are reused throughout the library, along with their APIs.
 * design . Themes specify how OOUI interfaces look and feel. Two themes are provided out of the box, the default “[ [Wikimedia User Interface |WikimediaUI]]” theme conforming to [ https://design.wikimedia.org/style-guide/ Wikimedia Foundation's design style guide] and another theme called “Apex” inspired by the skin of the same name.  Skin authors can create additional themes and use them in MediaWiki for a custom look and feel.
 * sensible event handling. OOUI components listen to low-level events and emit a meaningful event at the proper time (i.e., when something actually changes).
 * responsiveness. When the model changes, the view is updated automatically.
 * accessibility. WikimediaUI's widgets align to WCAG level AA conformance by default.
 * efficiency. The view is generated and updated client-side, requiring fewer road trips to the server.
 * object-oriented functionality. The library provides support for mixins and inheritance, including the inheritance of static properties.
 * openness. The library is open source and released under the MIT licence.

OOUI is available as a library in MediaWiki Core as of version 1.23. It was originally created for use by  VisualEditor, which uses it for its entire user interface.

Compatibility, Dependencies, and Installation
OOUI is compatible with most modern web browsers, and work toward supporting additional browsers is ongoing. See the VisualEditor documentation to get a general sense for which browsers are currently supported. Note that OOUI supports a superset of these browsers, as VisualEditor compatibility is especially restricted due to its use of contentEditable.

The OOUI library depends on OOjs and [ http://jquery.com/ jQuery,] both of which are available in MediaWiki core.

There are instruction on using the library in MediaWiki extensions.

Additional documentation
The following are useful resources:


 * [ https://doc.wikimedia.org/oojs-ui/master/js/#!/api JavaScript code-level documentation] &mdash; The generated documentation for the JavaScript interface provides a complete API reference, containing a description of each class along with all supported configuration options and methods. Each description also includes a list of mixin classes and subclasses.
 * [ https://doc.wikimedia.org/oojs-ui/master/php/ PHP documentation] &mdash; The PHP API is documented using the MediaWiki conventions and can be used to generate a readable reference (the PHP documentation may lack information on mixin methods).
 * Demos &mdash; Additional demos.
 * OOjs documentation &mdash; The OOUI library is built alongside and of and uses OOjs as its primer. The [ https://doc.wikimedia.org/VisualEditor/master/#!/api/OO code-generated documentation] might also prove useful.

Get involved
Join the IRC channel, a great place to ask questions, get help, and meet other developers.

Bugs can be posted to our bug tracker [ https://phabricator.wikimedia.org/maniphest/task/create/?projects=PHID-PROJ-dgmoevjqeqlerleqzzx5 Phabricator, tagged with OOUI].

If you’d like to get involved with the project, please say hello on IRC and feel free to jump right in!