OOUI/About the library

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

The OOjs UI library contains The library provides: OOjs UI is available as a library in MediaWiki Core as of version 1.23. The library was originally created for use by VisualEditor, which uses it for its entire user interface.
 * 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.
 * 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 OOjs UI interfaces should look. A basic theme called Apex is provided by default. Interfaces built within MediaWiki will use the MediaWiki theme instead. This theme is updated to stay in sync with MediaWiki design changes. Additional themes can be created for a custom look and feel.
 * sensible event handling. OOjs UI 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.
 * 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.

Compatibility, Dependencies, and Installation
OOjs UI 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 OOjs UI supports a superset of these browsers, as VisualEditor compatibility is especially restricted due to its use of contentEditable.

The OOjs UI library depends on OOjs and 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:
 * JavaScript code-level documentation: 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.
 * PHP documentation: 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: Additional demos.
 * OOjs documentation: The OOjs UI library is built on top of OOjs. The code-generated documentation might also prove useful.

Contact
You can find us on IRC: #mediawiki-visualeditor on Freenode, a great place to ask questions, get help, and meet other developers.

Bugs can be posted to Phabricator: https://phabricator.wikimedia.org/maniphest/task/create/?projects=PHID-PROJ-dgmoevjqeqlerleqzzx5

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