Dependencies

Installing the 3rd party dependencies

Note

Windows environment: We recommend installing the required tools using Chocolatey You will need Node.js (nodejs.install), Git (git.install) and optionally to build using Makefile, GNU Make (make) If you have trouble setting up a development environment on Windows, please read this post in the mailing list.:

We use development tools which depend on Node.js and npm (the Node package manager).

If you don’t have Node.js installed, you can download and install the latest version here.

Alternatively you can use your operating system’s package manager to install Node.js.

Also make sure you have Git installed. See here.

Now use git to check out the Converse repository:

git clone git@github.com:conversejs/converse.js.git

Now go into the repository checkout and run make dev in order to set up the development environment.

cd converse.js
make dev

On Windows you need to specify Makefile.win to be used by running:

make -f Makefile.win dev

Alternatively, if you don’t have GNU Make (necessary for the make command), you can use NPM directly:

npm install

This will install the Node.js development tools and Converse’s dependencies.

The front-end dependencies are those JavaScript files on which Converse directly depends and which will be loaded in the browser as part of the bundle in dist/converse.js (or dist/converse.min.js).

To see the 3rd party dependencies (not just the front-end dependencies, but also ones necessary for development tasks like making builds), take a look at the list under the devDependencies in package.json.

Note

After running `make dev`, you should now have a new node_modules directory which contains all the external dependencies of Converse. If this directory does NOT exist, something must have gone wrong. Double-check the output of `make dev` to see if there are any errors listed. For support, you can ask in our chatroom: dicuss@conference.conversejs.org.

If you don’t have an XMPP client installed, follow this link to conversejs.org where you can log in and be taken directly to the chatroom.

Brief description of Converse’s dependencies

Converse relies on the following dependencies:

  • moment.js provides a better API for handling dates and times.
  • Strophe.js maintains the XMPP session, is used to build XMPP stanzas, to send them, and to register handlers for received stanzas.
  • lodash provides very useful utility functions.
  • Backbone is used to model the data as Models and Collections and to create Views that render the UI.
  • backbone.overview provides Backbone.Overview, which is to Views as Backbone Collection is to Models. It also provides the Backbone.OrderedListView which is used to show alphabetically sorted lists, such as your contacts roster.
  • backbone.vdomview provides Backbone.VDOMView that uses the Snabbdom virtual DOM for rendering DOM elements.
  • pluggable.js provides the plugin architecture for Converse. It registers and initializes plugins and allows existing attributes, functions and objects on Converse to be overridden inside plugins.

Libsignal

Optionally, if you want OMEMO encryption, you need to load libsignal separately in your page.

For example:

<script src="3rdparty/libsignal-protocol-javascript/dist/libsignal-protocol.js"></script>

The reason libsignal needs to be loaded separately is because it’s released under the GPLv3 which requires all other dependent JavaScript code to also be open sourced under the same license. You might not be willing to adhere to those terms, which is why you need to decide for yourself whether you’re going to load libsignal or not.