README.md 4.0 KB

Modular Politics for Minetest

Modular Politics is an extension that enables diverse governance processes on multi-user platforms. It seeks to implement a theoretical framework, also called Modular Politics, which proposes these design goals:

  • Modularity: Platform operators and community members should have the ability to construct systems by creating, importing, and arranging composable parts together as a coherent whole.
  • Expressiveness: The governance layer should be able to implement as wide a range of processes as possible.
  • Portability: Governance tools developed for one platform should be portable to another platform for reuse and adaptation.
  • Interoperability: Governance systems operating on different platforms and protocols should have the ability to interact with each other, sharing data and influencing each other's processes.

Modular Politics produces a library that enables users to create or adapt their own modules that add specific governance functionalities.

This implementation is a mod for Minetest, a free/open-source voxel game. It is designed to be easily adapted to other multi-user platforms that also employ Lua as an extension language.

Installation in Minetest

To use this in Minetest, simply install it in your mods/ or worldmods/ folder. Minetest will load init.lua.

In the game, open the Modular Politics dashboard with the command /mp.

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

Standalone Version on the Command Line

Modular Politics can also be used independently of Minetest 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

You can also interact with the interpreter by starting it this way:

$ lua[jit]
> dofile("login.lua")

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

Storage

By default, a data directory named "data" will be created in this directory. /data will contain a log file and serialized program data files.

Another storage method may be chosen in modpol.lua. A StorageRef-based method for Minetest 5.* is included: storage-mod_storage.lua.

Credits

Initiated by Nathan Schneider of the Media Enterprise Design Lab at the University of Colorado Boulder, as part of the Metagovernance Project. Based on the paper "Modular Politics: Toward a Governance Layer for Online Communities."

Other contributors include:

  • Luke Miller (main control flow, object orientation, module spec)
  • MisterE (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, our Matrix.org channel, and the Minetest.net forum.

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

Licenses