/hfos

Hackerfleet Operating System

Primary LanguagePythonOtherNOASSERTION

Build Status Quality Coverage Requirements Status Stories Ready

HFOS - The Hackerfleet Operating System

A modern, opensource approach to maritime navigation.

This software package is supposed to run on your ship/car/plane/ufo's board computer.

Obligatory Warning: Do not use for navigational purposes!

Always have up to date paper maps and know how to use them!

Included modules

  • webui (compatible with all modern browsers)
  • nmea bus parser
  • dashboard
  • offline (cached) moving maps
  • openseamap
  • openstreetmap
  • openweathermap
  • ship info wiki
  • man over board alert system
  • and lots of other useful layers

Work in progress (1.1)

  • Full GDAL based raster chart support
  • Dynamic Logbook
  • GRIB data (in charts)
  • Navigation aides, planning
  • Datalog, automated navigational data exchange
  • Crew management, more safety tools
  • wireless crew network and general communications

License

Copyright (C) 2011-2015 riot <riot@hackerfleet.org> and others.

This program 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.

This program 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 this program. If not, see <http://www.gnu.org/licenses/>.

Bugs & Discussion

Please research any bugs you find via our Github issue tracker for HFOS and report them, if they're still unknown.

If you want to discuss (opensource) maritime technology in general incl. where we're heading, head over to our Github discussion forum ...which is cleverly disguised as a Github issue tracker.

You can also find us here:

Installation

We encourage you to use Python 3.4 for HFOS, but the system is built (and checked against) 2.7, too.

Warning: HFOS is not compatible with Python 3.2!

Quickie-Install

There is a Docker image available. This is usually the quickest way to install HFOS:

Preparation

Before doing anything with HFOS, be sure you have all the dependencies installed via your distribution's package manager.

For Debian Unstable use this:

$ sudo apt-get install mongodb python3.4 python3-pip python3-grib \
                       python3-bson python3-pymongo python3-serial

If you want (and can), install the mongo and bson extensions:

$ sudo apt-get install python3-pymongo-ext python3-bson-ext

You will need to set up a bunch of more dependencies via npm to set up the frontend, so install npm and if necessary the nodejs-legacy-symlink package:

$ sudo apt-get install npm nodejs-legacy

Backend

There is no fully automatic installation/daemon yet. Just set up a virtual environment and install HFOS into it.

We also create two folders in /var (lib/hfos and cache/hfos) for hfos' tile- cache and other stuff as well as install basic default provisions into the database:

$ sudo mkdir -p /var/cache/hfos/tilecache
$ git clone https://github.com/hackerfleet/hfos
$ cd hfos
$ virtualenv -p /usr/bin/python3.4 --system-site-packages venv
$ source venv/bin/activate
$ python setup.py install
$ python setup.py install_provisions
$ sudo python setup.py install_var
$ python hfos_launcher.py

You may need to adapt permissions for the /var folders to accomodate the user you let hfos run with, until we re-add the daemon and package support foam, that does that automatically.

Frontend

To install the frontend, update and pull the submodule, then change into it and either install or develop.

$ git submodule init
$ git submodule update
$ cd frontend
$ npm install
$ sudo npm install -g bower grunt grunt-cli
$ bower install
$ grunt serve

Point your browser to localhost:9000 to observe the magic. Don't forget to start the backend!

You can also copy a static version of the frontend by instructing grunt to:

$ sudo grunt copy:dev

Using this method is not meant for live editing, but for the final production installation.

Documentation

The documentation is available online on ReadTheDocs.org. If you wish to build and install the included documentation for offline use, run these commands:

$ pip install -r requirements-dev.txt
$ python setup.py build_sphinx
$ sudo python setup.py install_doc

This installs all necessary documentation tools and copies the files to the expected HFOS web data folder.

You can also build the PDF file (and various other formats) by using the Makefile inside the docs directory.

$ cd docs
$ make pdf

Just running make without arguments gives you a list of the other available documentation formats.

Development

$ cd hfos
$ virtualenv -p /usr/bin/python3.4 --system-site-packages

Activate venv and run setup.py:

$ source venv/bin/activate
$ python setup.py develop

Run hfos:

$ python hfos_launcher.py

You should see some info/debug output and the web engine as well as other components starting up. Currently it is set up to serve only on http://localhost:8055 - so point your browser there and explore HFOS.

Contributors

We like to hang out on irc, if you want to chat or help out, join irc://freenode.org/hackerfleet :)

Missing in the list below? Add yourself or ping us ;)

Code

Assets

This is migrating over to hfos-frontend submodule.

-- 👍