The following libraries are used into TAO :

Library Version License Used for Could be replaces by
require.js 2.3.6 MIT Module and asset loading, dependency injection, configuration and bundling import / export, browserify, rollup, SystemJs, webpack, etc.
jQuery 1.9.1 MIT DOM Manipulation, Ajax Requests Native APIs
jQueryUi 1.9.2 MIT DEPRECATED TAO installer and item creator drag and drop Integrated componentsi, interact
interact 1.3.4 MIT Drag and Drop, Gestures and resizing
popper 1.14.5 MIT Tooltip, poppers, relative positioning
lodash 2.4.1 MIT Data manipulation ES2015+ built-ins (partially)
handlebars 1.3.1 MIT Template and data binding
QUnit 2.9.1 MIT Testing
Grunt 1.0.0 MIT Task runner npm scripts
moment 2.11.1 MIT Date, time, duration, timezone and localization
d3 3.5.16 MIT Data visualization
c3 0.4.23 MIT Chart and plot
CKEditor 4.4.8 TAO-1 (OAT Fork, upstream 4.4.8) GPL Item Creator, WYSIWYG / HTML editor Anything else
MathJax 2.6.1 Apache 2 Rendering Math Expressions katex
Raphael 2.1.2 MIT DEPRECATED SVG & Graphic Interaction Native APIs
Async 1.5.0 MIT DEPRECATED Async flow Promise async/await
ESlint 5.0.0 MIT JavaScript code linter
Babel 7.4.3 MIT Transpile JavaScript
SASS node-sass 4.9.3 / libsass 3.5.4 MIT Compile SCSS to CSS

A dedicated npm package enforces you to use the correct version of the main libraries :

New libraries

If you add a library, please remove one...

If none of the libraries available in TAO help you to solve a problem, it's possible to add a new one, after some evaluation, based on the following criteria :

  • Size matter : the smallest possible
  • No or few dependency : no we won't include a framework to run only a part of it.
  • License : it should be compatible with GPLv2 (Apache licenses aren't compatible for example)
  • Alive : the library should be still maintain and active (in some situation we can think taking the ownership if the library is vital for our business)
  • Clean API : the library should expose a clean API that won't constrain us in using it