Development README Page

Build Status Quality Coverage Requirements Status Pypi Package Stories Ready

HFOS - The Hackerfleet Operating System

A modern, opensource approach to collaborative tasks.

This software package is supposed to run on your home/office/ship/plane/ufo/*space’s board computer.

It initially grew out of frustration with existing navigation solutions for sailors, as none of these are really oriented towards sailing crews (i.e. multi-user setups), but we saw the potential for other ‘classic’ areas of collaboration and started extending it towards a more general application framework.

A lot of the included modules are still Work in Progress, so help out, if you’re interested in a powerful collaboration tool suite.

Modules

The system is modular, so you can install what you need and leave other things.

General modules

These are ‘official’ Hackerfleet developed modules. If you’d like to contribute your own, ping riot@c-base.org, to get it added to the list.

Name Description
sails Web UI, compatible with all modern browsers
alert User alerting and notification system
camera Camera support
chat Integrated chat
comms Communication package
countables Count arbitrary things
dash Dashboard information system
garden Garden automation tools
ldap LDAP user authorization
library Library management
polls Tool for lightweight internet voting
project Simple project management tools
protocols Miscellaneous communication protocols
robot RC remote control unit
shareables Shared resource blocking tool
switchboard Virtual switchboard
wiki Etherpad + Wiki = awesomeness

Most of these are not yet fully usable, so please help out and perhaps take ownership of one (or more) of them!

Work in progress

  • 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

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 distributed, opensource (or 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

First of all: The installation procedure is rather complex right now. We’re trying to simplify the process, but in the meantime, if you encounter any trouble/problems, just contact us via irc or email and we’ll happily try to help you get your installation running.

This is very important for us, since the system has not yet been deployed very often and we’re not yet aware of most of the pitfalls and traps on that route.

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!

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 for speedups:

$ 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

The manage tool usually can install everything you need. This involves getting the frontend dependencies, installing the supplied modules, building and installing the documentation, etc.

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:

$ git clone https://github.com/hackerfleet/hfos
$ git submodule init
$ git submodule update
$ cd hfos
$ virtualenv -p /usr/bin/python3.4 --system-site-packages venv
$ source venv/bin/activate
$ pip install -Ur requirements-dev.txt
$ sudo venv/bin/python hfos_manage.py -install-all
$ 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.

We strongly suggest generating a SSL certificate and invoke the launcher thus:

$ sudo ./venv/bin/python hfos_launcher.py --cert $YOURCERTIFICATE --port 443

Running the launcher as root to be able to open ports below 1024 should be safe, as it drops its root privileges, unless you specify –insecure, which is strongly discouraged.

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:

$ sudo ./venv/bin/python hfos_manage.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.

Docker-Install

(Currently outdated, until we overhauled the docker setup)

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

$ docker run -i -t -p 127.0.0.1:8055:8055 --name hfos-test-live \
   -t hackerfleet/hfos

Contributors

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

Please be patient or even better use screen/tmux or something to irc. Most of us are there 24/7 but not always in front of our machines.

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

Code

Assets

  • Fabulous icons by iconmonstr.com and Hackerfleet contributors

License

Copyright (C) 2011-2016 riot <riot@c-base.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/>.

– :boat: :+1: