liqd / thentos

A tool for privacy-preserving identity management (PPIM)
Other
56 stars 9 forks source link

A tool for privacy-preserving identity management (PPIM)

Status

DEPRECATED.

we will release some libraries that have come out of this project in the future. updates on that will be posted here.

Philosophy

Thentos (/'tentɒs/) is the Swiss army knife of web application user management. Its focus is on privacy and decentralization of control. It is actively developed by liquid democracy e.V., a non-profit NGO that has no stakes in user data as a product. It is not designed as a closed platform, but for cooperative and autonomous operation by many independent organisations.

Things we are going to do with the Thentos code base:

Architecture overview and code structure

There are several packages in this repository:

A quick walk through the code of thentos-core:

Other documentation

Installation

Start by cloning the Thentos repository from GitHub.

$ git clone https://github.com/liqd/thentos
$ cd thentos
$ git submodule update --init

You need to have ghc-7.10 and some extra tools installed. On debian, you can do this:

$ sudo bash
# add-apt-repository ppa:hvr/ghc
# apt-get update
# apt-get install ghc-7.10.3 happy-1.19.5 alex-3.1.4 cabal-install-1.22
# apt-get install libpq-dev git
# apt-get install postgresql-client git
# apt-get install xvfb  # (for selenium tests; see below).
# apt-get install sox espeak  # (for audio captchas).

The hvr-haskell programs go to their own peculiar paths under /opt/<prog>/<ver>; you can take a peek at .travis.yml on how to extend your PATH variable.

To run executables or tests, you will need to install PostgreSQL. Depending on your setup, you may need to cast some authorization spells. Here is what works on debian:

$ sudo -u postgres createuser thentos -d
$ echo "alter role thentos superuser" | sudo -u postgres psql

(Instead of thentos, you can choose your unix login name as postgres user name and skip setting the shell variable.)

For building the purescript UI code, you will need to install the javascript engine nodejs and its package manager npm:

$ sudo apt-get install nodejs npm

Make sure that nodejs is also found under the name "node", since some of the PureScript install scripts expect that:

ln -s /usr/bin/nodejs /usr/bin/node

Now run the installation script and the tests:

$ ./misc/thentos-install.hs

This will take a while, as it will pull and build a lot of library dependencies.

Note that the tests require selenium to work. If you have no selenium grid set up, you can either read ./misc/selenium/Makefile and get it to work (see there for more details and links to the download page), or do without that part of the test suite:

$ ./misc/thentos-install.hs -c '--test-options="--skip selenium"'

If you want to use vagrant to run Thentos in a virtual machine, visit https://github.com/tarleb/thentos-vagrant.

If you run into any problems, you can check .travis.yml for an up-to-date way of getting all the dependencies installed.

Related work

Please notify us if you want something to be added.

Contributors

In alphanumerical order. Please let us know if we forgot to add you, or if you would like us to link to your GitHub handle / email.

If you want to get involved or have any questions, we would love to hear from you! Please also read docs/dev-howtos.md and docs/styleguide.md to learn more about our development practices and our coding guidelines for Haskell.

Future directions