Overview

Note that this section describes the not-common activity of building and modifying the core platform, not the more common activity of creating plugins of various types - for details on the latter activity, click here.

Note that in order to test the Infinit.e components, it is necessary to have an existing (binary) installation of Infinit.e, because Infinit.e uses standalone MongoDB and Elasticsearch servers for the datastore and text index. Quick install methods for Infinit.e are described here. There is also a downloadable VM here.

The elastic.url and db.server should then point to the locations of the elasticsearch/mongodb servers (and elastic.cluster should match the installed clustername). If you are running in a VM you will want to either set the network up to be bridged, or to port map 27017 and 9300 to the guest.

All of the code and libraries used in the Infinit.e platform is available under the Affero GPL (a few utilities are licensed under Apache 2.0, see the individual headers for more details), hosted on Github:

It is important to note that the Infinit.e Open Source software is currently developed under the Cathedral Model, which is to say that Ikanow will develop the majority of the software in between releases, and will be responsible for all of it. That said, we welcome patches and community contributions and will endeavor to build them into the next release whenever they have value for the community.

Before distributing modified software, please check the terms of the open source licenses to double check you are compliant with any restrictions and requirements.

Getting the source code

The links are above, simply fork a new branch from github (useful web page discussing the "fork and pull" development model).

Setting up a development environment

This section describes how to set up a Windows or Linux or Mac development environment for Infinit.e:

Additional step for developing widgets or modifying the GUI framework

To develop widgets or modify the GUI framework, the following steps are necessary separately to the above guide:

Building the JARs

All of the Java projects can be built by running the default ant target from the top level. 

The projects must be built in the following order:

The "infinit.e.builder" project has an ant script whose default target will build all the JARs and also the RPMs. (And also the GUI, which will fail if the Flex SDK isn't installed, or if iLog/Elixir isn't installed - so in practice you will want to comment a load of projects out).

Building the install RPMs

Once all the JARs have been built, the RPMS can be built in any order by running ant at the top level of the projects (in install order):

As above, note that the "infinit.e.builder" project has an ant script whose default target will build all the JARs and also the RPMs. (And also the GUI, which will fail if the Flex SDK isn't installed, or if iLog/Elixir isn't installed - so in practice you will want to comment a load of projects out).

Testing changes

Building a good JUnit-based test framework is on our roadmap, but it's not easy because of the number of external components (databases, Lucene indexes, etc) needed for many basic use cases. Therefore it is unlikely to happen until we find a willing intern!

In the meantime, the following test code exists:

Contributing code back

Simply initiate a pull request (useful web page discussing the "fork and pull" development mode).

Note that, like most other commercial companies who publish their software as open source, we require contributor agreements (personal or corporate) to be in place before we will accept contributions back into the branch.