No Description

Nathan Schneider 2207f0add2 added placeholder for Mastodon interactions override 7 months ago
docs e72911c67c Added LDoc comments for new files, ready to merge 3 years ago
lib 06e7bb9d2d Replaced image on README 2 years ago
modpol_core 13eb58a3ee Removed child org from parent children list 2 years ago
modpol_mastodon 2207f0add2 added placeholder for Mastodon interactions override 7 months ago
modpol_minetest 13eb58a3ee Removed child org from parent children list 2 years ago
.gitignore aed1d708c4 Masto govbot basics running 7 months ago
GOVERNANCE.md b9d2b73611 Correction: files added 3 years ago
LICENSE 4411c01ebb Corrected copyright statement on LICENSE 3 years ago
README.md aed1d708c4 Masto govbot basics running 7 months ago
depends.txt b80f025093 Removed "default" from Minetest dependency list, thanks to @gbrrudmin 4 years ago
description.txt 51d5e404e9 Tweak to description.txt 3 years ago
govbot.py aed1d708c4 Masto govbot basics running 7 months ago
init.lua 3e3f737915 A little more cleaning up 3 years ago
login.lua 1b0335c069 Bugfix on copy_table and added refresh command to CLI 3 years ago
login_mastodon.lua aed1d708c4 Masto govbot basics running 7 months ago
mod.conf 9a2c72c6a1 Bugfixes after test with Skylar! 3 years ago

README.md

Modpol

Modpol, short for "modular politics," enables diverse governance processes on multi-user platforms. It offers a library with which users can choose, modify, and create modules that add specific governance functionalities.

Learn more at modpol.net.

Modpol for Minetest

This implementation is a mod for Minetest, a free/open-source voxel game. To use in Minetest, simply install the full codebase in your mods/ or worldmods/ folder. Minetest will load init.lua.

In the game, open the Modpol dashboard with the command /mp.

For testing purposes, players with the privs privilege (generally admins) can use the /mptest command, which resets all the orgs and opens a dashboard.

Mastodon Govbot

Modpol can operate a governance-supporting bot for communities on Mastodon, an open social network.

This version utilizes and requires the installation of lupa, which integrates Lua into Python, and Mastodon.py, a Python library for interacting with the Mastodon API.

To do: explain how to set up the bot on the server.

  • Install Python on your system and the two required libraries:
    • pip install lupa
    • pip install Mastodon.py
  • Set up files clientcred.secret and usercred.secret in the modpol_mastodon/creds/ directory, using the account settings in Mastodon

Once it is configured, to initialize the bot, run from Modpol's base directory:

python govbot.py

This in turn calls login-mastodon.py, which initializes Modpol and the bot.

Command Line

Modpol can also be used as a command-line tool. Currently command-line use of modpol requires a Unix-style system, but it is intended to become more fully platform independent.

The command-line version is in the modpol subdirectory. To run the program on Unix systems in CLI mode, install lua or luajit and execute the following in this directory:

$ lua[jit] login.lua

Alternatively, to test arbitrary functions in the interpreter outside of the interactive dashboards, load Modpol's library with:

$ lua[jit]
> dofile("modpol_core/modpol.lua")

In the interpreter, for a list of global functions and tables, use modpol.menu().

Storage

The persistent storage method may be chosen in modpol.lua.

By default, data will be stored in a data directory at modpol_core/data/. This will contain a log file and serialized program data files.

For Minetest: If available, Modpol uses Minetest's built-in StorageRef system for Minetest 5.*.

Documentation

Various guides are available at the GitLab wiki.

Read documentation of functions and modules at docs/doc/index.html. Documentation was generated using LDoc. To generate basic documentation for every page, download ldoc and use the following command:

$ cd docs/
$ ldoc ..

This will not generate the same index page and sidebar as the documentation provided; the appropriate structure needs to be added manually.

Credits

This project is led by Nathan Schneider of the Media Enterprise Design Lab at the University of Colorado Boulder, as part of the Metagovernance Project.

Contributors include:

  • Luke Miller (co-leadership, main control flow, object orientation, module spec)
  • MisterE (early project refactoring, core feature development)
  • Robert Kiraly OldCoder
  • Skylar Hew (documentation)

We are grateful for initial support for this project from a residency with The Bentway Conservancy. Read about us in The Field Guide to Digital and/as Public Space.

Contributing

We'd love to welcome more contributors. Please join the conversation in the Issues, the #modpol channel at the Metagovernance Project Slack, and the Minetest.net forum.

Learn more about the project and how to develop your own modules in the wiki.

Licenses