When selecting the technology used for each aspect of Indicia, we have given preference to
- Technology which is widely used and therefore familiar to a large pool of developers
- Capabilities for supporting biological databases, in particular the mapping aspects
- Free and open source, so there are no costs for developers wishing to join the project
Database - PostgreSQL with PostGIS¶
PostgreSQL is a true open source database widely acknowledged as a serious rival to other well known commercial options, both in terms of speed and power. It is the ideal choice for Indicia because of the free PostGIS extension which converts PostgreSQL into a powerful spatially enabled database. This optimises the data for storing spatial data such as location boundaries and species records and also provides in-built support for questions such as “tell me which records are within the boundary of this location”.
Indicia does not use MySQL to store its records despite that database being more widely available than PostgreSQL, because MySQL’s support for mapping data is too limited for our needs.
Language - PHP¶
The language used for the Core Module development is PHP, selected mainly for its ubiquitous nature and therefore ease of finding developers, getting support and hosting. PHP is also a fairly easy language to get started with and many tools available for free.
Rather than build everything from scratch, Indicia uses existing frameworks to make the development of Indicia simpler, just like Indicia provides a way to make the development of online recording websites simpler.
Kohana is a framework which effectively provides a ready made layout for a PHP web application. It structures the application using a pattern known as Model View Controller and also provides lots of built in libraries and extensions to make day to day development tasks easier. Documentation for Kohana 2 as used by Indicia, is no longer on the Kohana website.
OpenLayers is an library of code for adding dynamic maps to web pages. These maps are used to allow input of a grid reference, to draw the boundary of a site, or to output a report data onto maps. OpenLayers has the advantage of being agnostic about the layers you choose to load onto the map, so you can easily use Google or Bing base layers, or can even load your own.
Although Indicia can be integrated into any website capable of running its PHP code on the server, for those who are starting from scratch Drupal provides a powerful and flexible tool for building websites in general and with tight integration with Indicia it is particularly suitable for building websites with an online biological recording component.