Goal

Loomio’s processes make participants discuss and collaborate to take part in shaping and sharing arguments collectively towards consensus building and decision making. Rather than counting votes to make decisions of obvious majority or average compromises between opposites, it creates legitimate overviews and histories of all participating positions, needs and changes.

Description of the tool

Loomio is decision-making software and service designed to assist groups with the collaborative consensus focused decision-making processes. It is a free software web application, where users can initiate discussions and put up proposals. As the discussions progress to initiating a proposal, the group receives feedback through an updatable pie chart or other data visualizations. Loomio is basically a web based forum (has optional email delivery interface) with tools to facilitate conversations and decision making processes from starting and holding conversations to reaching outcome.

...understanding just these four is often enough to get your first successful outcome.

  1. Groups hold everything in one place for a specific set of people
  2. Discussion threads are where you go to discuss topics and make decisions
  3. Use tools such as the proposal or other polls to help you visualize the group’s input and feelings about a given proposal, question, or topic.
  4. Finally, set an outcome to share what’s going to happen next so everyone has a clear understanding and there’s a useful record.

Recent versions include more features of integration with other software. It is possible to connect Loomio group notifications to Slack, Microsoft Teams and Mattermost.


Steps of application

Deploy your own Loomio

This repo contains a docker-compose configuration for running Loomio on your own server.

If you just want a local install of Loomio for development, see Setting up a Loomio development environment.

It runs multiple services on a single host with docker and docker-compose. It automatically issues an SSL certificate for you via the amazing letsencrypt.org.

What you'll need
  • Root access to a server, on a public IP address, running a recent Ubuntu with at least 1GB RAM (2GB recommended).

  • A domain name which you can create DNS records for.

  • An SMTP server for sending email.

Network configuration

What hostname will you be using for your Loomio instance? What is the IP address of your server?

For the purposes of this example, the hostname will be loomio.example.com and the IP address is 123.123.123.123

DNS Records

To allow people to access the site via your hostname you need an A record:

A loomio.example.com, 123.123.123.123

Loomio supports "Reply by email" and to enable this you need an MX record so mail servers know where to direct these emails.

MX loomio.example.com, loomio.example.com, priority 0

Additionally, create a CNAME record that points channels.loomio.example.com to loomio.example.com. The records would look like this:

channels.loomio.example.com.    600    IN    CNAME    loomio.example.com.

loomio.example.com.    600    IN    A    123.123.123.123


Configure the server
Login as root

To login to the server, open a terminal window and type:

ssh -A root@loomio.example.com

Install docker and docker-compose

These commands install docker and docker-compose, copy and paste.

snap install docker

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

Clone the loomio-deploy git repository

This is the place where all the configuration for your Loomio services will live. In this step you make a copy of this repo, so that you can modify the settings to work for your particular setup.

As root on your server, clone this repo:

git clone https://github.com/loomio/loomio-deploy.git

cd loomio-deploy

The commands below assume your working directory is this repo, on your server.

Setup a swapfile (optional)

There are some simple scripts within this repo to help you configure your server.

This script will create and mount a 4GB swapfile. If you have less than 2GB RAM on your server then this step is required.

./scripts/create_swapfile

Create your ENV files

This script creates env files configured for you. It also creates directories on the host to hold user data.

When you run this, remember to change loomio.example.com to your hostname, and give your contact email address, so you can recover your SSL keys later if required.

./scripts/create_env loomio.example.com you@contact.email

Now have a look inside the files:

cat env

Usage reporting

By default your Loomio instance will report back to www.loomio.org with the number of discussions, comments, polls, stances, users and visits that your site has had.

To be super clear, this does not transfer private data: no user_ids, no user created content, no titles, no names. Simply a count of the number of records you have.

Once per day it will send those numbers and your hostname to us, so that we are able to measure Loomio usage around the world, so that we can tell what impact our work is having.

If you wish to disable this reporting function, add the following line to your env file.

DISABLE_USAGE_REPORTING=1

My request to you, is that you do not disable usage reporting. It's really encouraging to see other active instances of Loomio, and the information can help us report our impact as a social enterprise and business.

Setup SMTP

You need to bring your own SMTP server for Loomio to send emails.

If you already have and SMTP, that's great, put the settings into the env file.

For everyone else here are some options to consider:

Edit the env file and enter the right SMTP settings for your setup.

You might also need to add an SPF DNS record to indicate that the SMTP can send mail for your domain.

nano env

Initialize the database

This command initializes a new database for your Loomio instance to use.

docker-compose up -d db

docker-compose run app rake db:setup


Install crontab

Doing this tells the server what regular tasks it needs to run. These tasks include:

  • Noticing which proposals are closing in 24 hours and notifying users.
  • Closing proposals and notifying users they have closed.
  • Sending "Yesterday on Loomio", a digest of activity users have not already read. This is sent to users at 6am in their local timezone.

Run crontab -e and apped the following line:

0 * * * *  /snap/bin/docker exec loomio-worker bundle exec rake loomio:hourly_tasks > ~/rake.log 2>&1


Starting the services

This command starts the database, application, reply-by-email, and live-update services all at once.

docker-compose up -d

Before the rails server is started, the javascript client is built, which can take up to 5 minutes. This only happens the first time you start a new Loomio version - restarts should be faster.

If you visit the url with your browser and the rails server is not yet running, but nginx is, you'll see a "503 bad gateway" error message.

You'll want to see the logs as it all starts, run the following command:

docker-compose logs -f


Try it out

visit your hostname in your browser.

Once you have signed in (and confirmed your email), grant yourself admin rights

docker-compose run app rails c

User.last.update(is_admin: true)

you can now access the admin interface at https://loomio.example.com/admin

If something goes wrong

Confirm env settings are correct.

After you change your env files you need to restart the system:

docker-compose down

docker-compose up -d

To update Loomio to the latest image you'll need to stop, rm, pull, apply potential changes to the database schema, and run again.

docker-compose pull

docker-compose down

docker-compose run app rake db:migrate

docker-compose up -d

From time to time, or if you are running out of disk space (check /var/lib/docker):

docker system prune

To login to your running rails app console:

docker-compose run app rails c

A PostgreSQL shell to inspect the database:

docker exec -ti loomio-db su - postgres -c 'psql loomio_production'

Backups

We have provided a simple backup script to create a tgz file with a database dump and all the user uploads and system config.

scripts/create_backup .

Your backup will be in loomio-deploy/backups/

You may wish to add a crontab entry like this. I'll leave it up to you to configure s3cmd and your aws bucket.

0 0 * * *  ~/loomio-deploy/scripts/create_backup ~/loomio-deploy > ~/backup.log 2>&1; s3cmd put ~/loomio-deploy/backups/* s3://somebucket/$(date +\%F)/ > ~/s3cmd.log 2>&1


Integrations
Login via Nextcloud

Loomio must be registered in nextcloud as oauth 2.0 client using https://loomio.example.com/nextcloud/authorize as redirection URL.

In loomio the NEXTCLOUD_HOST environment variable must point to the nextcloud instance, for example https://nextcloud.example.com. NEXTCLOUD_APP_KEY and NEXTCLOUD_APP_SECRET must be set to the client identifier and secret set by nextcloud.

Background

Loomio emerged from the Occupy movement. In 2012, it launched its first prototype. It was utilized in the Occupy movement in New Zealand. After using the first prototype in this, the team behind Loomio felt that it would be easier to give everyone a voice with an online software, leading to the launch of Loomio 1.0. Since the launch of Loomio 1.0, Loomio has stopped using occupy hand-signals in the interface. It has since been developed into a social enterprise, and linked to the popular trend of "platform cooperativism" and targeting also mainstream markets.


Loomio was built by a small core group of developers, based out of Wellington, New Zealand. Most of the work was made by this core group but more than 70 contributors from around the world participated occasionally with small contribution. In 2014, Loomio raised over $100,000 via a Crowdfunding effort to develop Loomio 1.0. The Loomio 1.0 software supports mobile phone usage and other enhancements. As of 2016, Loomio was used in more than 100 countries, with the software being translated into 35 languages.


Loomio is funded through contracts with government and business, and donations from its users.

Loomio has been used by the Wellington City Council for discussion with their citizens. The Pirate Party of Hellas used Loomio to create 461 groups, covering 18 federal departments, 13 regions of Greece, 23 prefectures, and hundreds of counties and municipalities. The Internet Party of New Zealand also used Loomio to develop policy during the campaign for the 2014 General Election. El Partido Pirata de Chile has also adopted Loomio through their own fork called Lumio, offering a slightly different translation into Spanish for the voting options aiming at both remarking the importance of consensus and improving language style by using verbs in the first person singular (Concuerdo, Discrepo, Me abstengo y Solicito Reformluar). Additionally, the PPCL has promoted the use of Lumio in different areas of political discussion and group coordination inside and outside the Party. Loomio won the MIX Prize Digital Freedom Challenge in April 2014.


Loomio has committed to address the needs and regulations of the EU market. In 2018 the EU General Data Protection Regulation (GDPR) came into effect and Loomio confirmed that it is GDPR compliant. In 2019 Loomio established Loomio.eu service that uses EU based hosting due to expressed interests of EU customers.


Context of origin

Visual representation

Suggestions

LOOMIO should be picked up by every cultural organization-network that aims at developing more open collaborative-articulating, decision making and consensus building.
Ideally it should be promoted and documented with video to non-tech users
to be able to operate it with minimum instructional video training

Credits

LOOMIO.org (coop from New Zealand)