.. image:: https://secure.travis-ci.org/GeoNode/geonode.png
    :alt: Build Status
    :target: http://travis-ci.org/GeoNode/geonode

=========
 GeoNode
=========

If you just want to try GeoNode, it is recommended to use Ubuntu 12.04 and install the latest stable release::

    sudo add-apt-repository ppa:geonode/release
    sudo apt-get update
    sudo apt-get install geonode

If instead, you are interested in doing development on the source code, here are the instructions for Ubuntu 12.04::

    # retrieve latest apt-get list
    sudo apt-get update

    # Essential build tools and libraries
    sudo apt-get install -y build-essential libxml2-dev libxslt1-dev libjpeg-dev

    # Python native dependencies
    sudo apt-get install -y python-dev python-imaging python-lxml python-pyproj python-shapely python-nose python-httplib2 python-pip python-software-properties

    # Setup virtualenv tools
    sudo pip install virtualenvwrapper

    # Java dependencies
    sudo apt-get install -y --force-yes openjdk-6-jdk ant maven2 --no-install-recommends

    # Supporting tools
    sudo apt-get install -y  git gettext

    # Node and tools required for static development
    sudo add-apt-repository -y ppa:chris-lea/node.js
    sudo apt-get update
    sudo apt-get install -y nodejs
    sudo npm install -y -g bower
    sudo npm install -y -g grunt-cli

    # Add virtualenvwrapper to your environment
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
    export WORKON_HOME=~/.venvs
    source /usr/local/bin/virtualenvwrapper.sh
    export PIP_DOWNLOAD_CACHE=$HOME/.pip-downloads

    # Setup a virtualenv for geonode
    mkvirtualenv geonode
    workon geonode

    # Clone GeoNode
    git clone https://github.com/GeoNode/geonode.git

    # Install GeoNode in the local virtualenv
    # In pip 1.5 pyproj needs to be whitelisted
    pip install -e geonode --use-mirrors --allow-external pyproj --allow-unverified pyproj
    cd geonode

    # Compile GeoServer
    paver setup

    # Start the development servers
    paver start

    # Visit the development geonode site
    http://localhost:8000


openSUSE Development Build Instructions::

    # Add Application:Geo and Python repositories
    zypper -ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_12.2/ GEO
    zypper -ar http://download.opensuse.org/repositories/devel:/languages:/python/openSUSE_12.1/ python
    zypper refresh

    # Basic build packages
    zypper install gcc gcc-c++ python-devel libgeos-devel libproj-devel

    # Python native dependencies
    zypper install python-pip python-virtualenv python-imaging python-lxml

    # Java dependencies
    zypper install java-1_7_0_openjdk-devel ant maven

    # Supporting tools
    zypper install git gettext-runtime

    # Create virtualenv and activate it
    virtualenv venv --system-site-packages
    source venv/bin/activate
    cd venv

    # Clone GeoNode
    git clone https://github.com/GeoNode/geonode.git

    # Install GeoNode in the local virtualenv
    pip install -e geonode --use-mirrors

    cd geonode

    # Compile GeoServer
    paver setup
    
    # Start the servers
    paver start

Windows Development Build Instructions::


    Prerequisites:
    # Java JDK
    # Python 2.6+
    # ant (bin directory must be on system PATH)
    # maven2 (bin directory must be on system PATH)
    # Python distutils (easy_install)
    # git

    # Install and configure from the windows command prompt
    If you don't already have python virtualenv installed, then do it now:
         easy_install virtualenv

    # Create virtualenv and activate it
    cd <Directory to install the virtualenv & geonode into>
    virtualenv venv
    venv\scripts\activate

    # Install Python native dependencies
    easy_install PIL lxml==2.3
    # this command will look for and install binary distributions (pip install will attempt to build and fail)

    # Clone GeoNode
    git clone https://github.com/GeoNode/geonode.git
    
    # Install GeoNode in the local virtualenv
    pip install -e geonode --use-mirrors

    cd geonode

    # Compile GeoServer
    paver setup
    
    # Start the servers
    # This WON'T work on windows without changes to pavement.py 
    # and a windows batch script for starting jetty    
    paver start

Mac OSX Development Build Instructions::
    
    # you may need brew install various dependencies 

    mkdir -p ~/pyenv
    virtualenv ~/pyenv/geonode    
    source ~/pyenv/geonode/bin/activate
    git clone https://github.com/GeoNode/geonode
    cd geonode
    pip install lxml
    pip install pyproj
    pip install nose
    pip install httplib2
    pip install shapely
    pip install pillow
    pip install paver

    # Node and tools required for static development
    brew install node
    npm install -g bower
    npm install -g grunt-cli

    #Install pip dependencies
    pip install -e .

    #Paver handles dependencies for Geonode, first setup (this will download and update your python dependencies - ensure you're in a virtualenv)
    paver setup
    paver start
    
    # Optional: To generate document thumbnails for PDFs and other ghostscripts file types
    # Then download ghostscript: https://www.macupdate.com/app/mac/9980/gpl-ghostscript
    sudo apt-get install imagemagick
    brew install imagemagick
    pip install Wand==0.3.5

Once fully started, you should see a message indicating the address of your geonode.
The default username and password are ``admin`` and ``admin``::
  
  Development GeoNode is running at http://localhost:8000/
  The GeoNode is an unstoppable machine
  Press CTRL-C to shut down

Before starting GeoNode (paver start), you could test your installation by running tests::

    paver test
    paver test_integration
    
In case you want to build yourself the documentation, you need to install Sphinx and the run 'make html' from within the docs directory::

    pip install Sphinx
    cd docs
    make html
    
You can eventually generate a pdf containing the whole documentation set. For this purpose, if using Ubuntu 12.4 you will need to install the texlive-full package::

    sudo apt-get install texlive-full
    make latexpdf

.. note:: 

  When running ``virtualenv venv`` the ``--system-site-packages`` option is
  not required.  If not enabled, the bootstrap script will sandbox your virtual
  environment from any packages that are installed in the system, useful if
  you have incompatible versions of libraries such as Django installed
  system-wide.  On the other hand, most of the times it is useful to use a version of
  the Python Imaging Library provided by your operating system
  vendor, or packaged other than on PyPI.  When in doubt, however, just leave
  this option out.

Development Roadmap
===================

Geonode's development roadmap is documented in a series of Geonode Improvement Projects (GNIPS). 
They are documented here: https://github.com/GeoNode/geonode/wiki/GeoNode-Improvement-Proposals.
GNIPS are considered to be large undertakings which will add a large amount of features to the project. 
As such they are the topic of community dicussion and guidance.
The community discusses these on the developer mailing list: https://groups.google.com/a/opengeo.org/forum/#!forum/geonode-dev
Github issues tracks features and bugs, for new developers the tag 'easy-pick' indicates an 
issue that should be relatively easy for new developers to understand and complete. Once you have completed an issue
a pull request should be submitted. This will then be reviewed by the community.

GPL License
===========

GeoNode is Copyright 2010 OpenPlans.

GeoNode is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GeoNode is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GeoNode.  If not, see <http://www.gnu.org/licenses/>.
