Skip to content

Getting Started

Dave Cridland edited this page Mar 9, 2015 · 2 revisions

This page gives a general Getting Started guide to new developers wishing to get involved with Openfire. It's particularly aimed at Google Summer of Code students wishing to get started with Openfire development.

Last Review Date: 2015/03/09

First Step: Clone

We do our development via GitHub's Pull Requests, and your own development needs to take place within your own repository on GitHub as a result.

So the first step is to clone the repository via the GitHub website.

Second Step: Checkout and Build

Openfire is an Ant based project with embedded third-party JAR files, with a Makefile to drive it; this isn't ideal for a number of reasons, but it does make the checkout and build process very easy (though not very fast).

All you need to do on Linux is to use "git clone" to setup your local repo (which takes a while due to the embedded JAR files), and then within that, do "make".

You may wish to do "make eclipse" in order to get an Eclipse .settings file suitable for Openfire, too.

Third Step: Finding a task

The best thing to do is locate an interesting looking bug and fix it.

Our issue tracker is Jira; you'll find the Openfire bugs here:

https://igniterealtime.org/issues/browse/OF/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel

Of particular interest are the bugs we've triaged as minimal and medium effort:

https://igniterealtime.org/issues/browse/OF-762?jql=project%20%3D%20%22OF%22%20AND%20resolution%20%3D%20Unresolved%20AND%20%22Expected%20Effort%22%20in%20(Medium%2C%20Minimal%2C%20Unknown)%20ORDER%20BY%20priority%20DESC

Once you've picked one, talk to us about it in the chatroom open_chat@conference.igniterealtime.org - we can let you know if someone else is working on it, and give any pointers about where to start.

Fourth Step: Working Pattern

Make small changes, and commit often, to a branch on your own repository. That way, people can review your work as you go.

Don't merge with the trunk - instead pull and rebase. This will make it simpler to generate a clean Pull Request at the end.

Avoid reformatting code you're not touching; this makes diffs easier to read.

Fifth Step: Creating a Pull Request

Once your code is ready, you'll need to create a PR through GitHub.

Before doing so, ensure that the commits are in order. Squash any closely-related commits, but keep any JAR updates as distinct commits. "git rebase -i" is your friend here. Ensure you're up to date with trunk, and rebased onto it.

Make sure you're not including any unrelated code changes - and especially no formatting changes.

Sixth Step: Review

You'll find that we will comment on your PR via GitHub. Our comments are generally for discussion purposes, so feel free to engage us there, or go to the chatroom for more immediate feedback.

Assuming we're happy with the code and the outcome of any discussion, we'll then merge your PR into the trunk.

Seventh Step: Contribution

At this point, you are a contributor to one of the most heavily deployed XMPP servers in the world. Congratulations!