Openfire is a free, open source collaboration & communication project written in Java and released under Apache-2.0. It has 3,064 GitHub stars, 1,404 forks and 53 open issues, and was last pushed 2 days ago. On this registry it ranks #26 of 41 tracked projects in Collaboration & Communication, with 5 head-to-head comparisons available.

What is Openfire?

Openfire is an open source real time collaboration (RTC) server for XMPP, also called Jabber, written in Java under the Apache License 2.0 and maintained as an Ignite Realtime community project for organisations and administrators that want to run their own instant messaging infrastructure.

What it is

Openfire is a real time collaboration server that speaks XMPP, described in its own README as the only widely adopted open protocol for instant messaging. It is a Java application built with Maven, and it belongs to the XMPP and Jabber ecosystem, which its repository topics list directly alongside collaboration, java, and xmpp-server. The project is an Ignite Realtime community effort, released under the Open Source Apache License, and it is developed in the open on GitHub with CI, nightly builds, and a public bug tracker.

The concrete problem it solves is running messaging and presence inside an organisation without depending on a proprietary, closed system. The Ignite Realtime community states its aim as disrupting proprietary, non-open standards-based systems, and Openfire is the server component of that effort: it replaces a hosted or vendor-locked collaboration backend with one the operator installs and controls, speaking an open standard rather than a private protocol.

Key capabilities

  • Serves the XMPP (Jabber) protocol as a real time collaboration server, per the project description and its xmpp and jabber topics.
  • Ships the core server as a Maven module at Openfire/xmppserver, with supporting modules for Openfire/distribution, Openfire/plugins, Openfire/starter, Openfire/i18n, Openfire/build, and Openfire/documentation.
  • Builds the complete project, plugins included, with ./mvnw verify; the core server plus dependencies and a runnable assembly build with ./mvnw verify -pl distribution -am.
  • Starts consistently across platforms through the starter module and the main class org.jivesoftware.openfire.starter.ServerStarter.
  • Supports an internationalised admin interface, with translation files in Openfire/i18n managed through Transifex.
  • Has an extensible plugin system, with build configuration in Openfire/plugins and a published plugin catalogue on the Ignite Realtime site.
  • Imports directly into a Java IDE as a Maven project, and can be run from IntelliJ IDEA with VM options such as -Dlog4j.configurationFile= pointing at distribution-base\lib\log4j2.

Who uses it and how

  • Organisations that want open-standards-based real time collaboration inside their own environment rather than a vendor-hosted proprietary system.
  • End users and developers in the Ignite Realtime community, which the README describes as composed of participants worldwide applying open standards to their businesses and organisations.
  • Administrators following the documentation published at igniterealtime.org, and operators tracking nightlies from the Ignite Realtime downloads page.
  • Contributors testing changes locally by building distribution and running the server from an IDE against the starter classpath.
  • Plugins and interface translators, who work through the plugin modules and the Transifex translation project respectively.

Getting started

Build and assemble it from source with the Maven wrapper: ./mvnw verify builds everything including plugins, while ./mvnw verify -pl distribution -am compiles the core server and dependencies into a runnable assembly. Nightly builds are also published at the Ignite Realtime downloads page for anyone who would rather not build.

How it compares

No comparable or competing products are named in the facts for this entry, so there is nothing here to contrast it with on licence, hosting, data ownership, or cost. Within this registry it stands alone as an XMPP server.

When to use it — and when not to

Choose Openfire when the requirement is a self-run XMPP server under a permissive licence and there is someone able to build and operate a Java and Maven project of this shape. Be aware that the repository README is oriented toward building and testing the code rather than deployment or administration, that documentation is hosted separately at igniterealtime.org, and that bug tracker access is limited to a few users, with new reporters directed to a Discourse account and the Openfire Dev category. Anyone expecting a turnkey managed service, or unwilling to work from source and nightly builds, should look elsewhere.

project readme (upstream, from github) — read inline

Openfire alt tag

Openfire CI Project Stats

About

Openfire is a real time collaboration (RTC) server licensed under the Open Source Apache License. It uses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber). Openfire is incredibly easy to set up and administer, but offers rock-solid security and performance.

Openfire is an XMPP server licensed under the Open Source Apache License.

Openfire - an Ignite Realtime community project.

Bug Reporting

Only a few users have access for filling bugs in the tracker. New users should:

  1. Create a Discourse account
  2. Login to a Discourse account
  3. Click on the New Topic button
  4. Choose the Openfire Dev category and provide a detailed description of the bug.

Please search for your issues in the bug tracker before reporting.

Resources

Ignite Realtime

Ignite Realtime is an Open Source community composed of end-users and developers around the world who are interested in applying innovative, open-standards-based Real Time Collaboration to their businesses and organizations. We're aimed at disrupting proprietary, non-open standards-based systems and invite you to participate in what's already one of the biggest and most active Open Source communities.

Making changes

The project uses Maven and as such should import straight in to your favourite Java IDE. The directory structure is fairly straightforward. The main code is contained in:

  • Openfire/xmppserver - a Maven module representing the core code for Openfire itself

Other folders are:

  • Openfire/build - various files use to create installers for different platforms
  • Openfire/distribution - a Maven module used to bring all the parts together
  • Openfire/documentation - the documentation hosted at igniterealtime.org
  • Openfire/i18n - files used for internationalisation of the admin interface
  • Openfire/plugins - Maven configuration files to allow the various plugins available to be built
  • Openfire/starter - a small module that allows Openfire to start in a consistent manner on different platforms

To build the complete project including plugins, run the command

./mvnw verify

However much of the time it is only necessary to make changes to the core XMPP server itself in which case the command

./mvnw verify -pl distribution -am 

will compile the core server and any dependencies, and then assemble it in to something that can be run.

Testing your changes

IntelliJ IDEA:
  1. Run -> Edit Configurations... -> Add Application
  2. fill in following values
    1. Name: Openfire
    2. Use classpath of module: starter
    3. Main class: org.jivesoftware.openfire.starter.ServerStarter
    4. VM options (adapt accordingly):
      -DopenfireHome="-absolute path to your project folder-\distribution\target\distribution-base" 
      -Xverify:none
      -server
      -Dlog4j.c
      -Dopenfire.lib.dir="-absolute path to your project folder-\distribution\target\distribution-base\lib"
      -Dfile.encoding=UTF-8
      
    5. Working directory: -absolute path to your project folder-
  3. apply

You need to execute mvnw verify before you can launch openfire.

Other IDE's:

Although your IDE will happily compile the project, unfortunately it's not possible to run Openfire from within the IDE - it must be done at the command line. After building the project using Maven, simply run the shell script or batch file to start Openfire;

./distribution/target/distribution-base/bin/openfire.sh

or

.\distribution\target\distribution-base\bin\openfire.bat

Adding -debug as the first parameter to the script will start the server in debug mode, and your IDE should be able to attach a remote debugger if necessary.

Frequently asked questions

Is Openfire free to use?

Openfire is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Openfire do?

An XMPP server licensed under the Open Source Apache License.

What is Openfire written in?

Openfire is primarily written in Java. Its source is publicly available at https://github.com/igniterealtime/Openfire, and it has 3,064 GitHub stars.