Ongoing collection of bots for the Bots of Conduct workshop. This repository will be gathering code written by many people during various moments (Relearn 2017, Relearn 2019, ongoing Varia work).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

193 lines
8.7 KiB

# Bots of Conduct
_A workshop by Cristina Cochior and Manetta Berends for the department of Communication Design/Information Design at the University of Arts and Design, Halle (Germany) 2020._<br>
_Based on a workshop Cristina Cochior and Joana Chicau did for Constant's work session [Collective Conditions](http://constantvzw.org/site/-Collective-Conditions,220-.html), Brussels 2019._
<br>
## Bots as Conversational Tools
**Infrapunctural Bots for Stress Relief**
![Slide from a 2018 presentation by Deb Verhoeven on digital infrapunctures](https://image.slidesharecdn.com/infrapuncturedhoxss16-160704133509/95/towards-a-model-of-digital-infrapuncture-21-638.jpg?cb=1467640147)
Inspired by the potential of [digital infrapunctures](https://www.slideshare.net/debver/towards-a-model-of-digital-infrapuncture) by Deb Verhoeven, we would like to propose considering what a bot logic might look like:
- where platform logic accumulates, bot logic disperses
- where platform logic centralises, bot logic fragments
- where platform logic creates distance between user and infrastructure, bot logic develops an intimate knowledge of the platform
- where platform logic reinforces habitual behaviour, bot logic encourages new habit formation
A few examples:
* [Politwoops](https://www.politwoops.eu/search?group=7&q=*&politicians=no)
* [Arguetron](https://twitter.com/arguetron?lang=en)
* [CluebotNG](https://en.wikipedia.org/wiki/User:ClueBot_NG)
* [How to do anything](https://mastodon.social/@wikihow)
**Bots as Tools to Intervene in Conversations**
What would it mean to become more entangled with bots, redistribute the labour of making and maintaining a collective, but without falling into the metaphorical understanding of bot as a servant?
Varia members use [XMPP](https://en.wikipedia.org/wiki/XMPP ) as a chat protocol because it enables us to self-host our own instance and [federate with other chat servers](http://varia.zone/images/varia_s2s_federation.svg). We use bots both to communicate and to document our exchanges. Our initial idea was to develop new forms of note-taking based on our interaction habits. We share a lot of different types of information in group chats, from news to recommendations of articles to instigations to clean the fridge. Starting from the conversational nature of our exchanges, we are experimenting with two different bot-users in the chat: one that gathers images shared on the main Varia channel and displays them online, and another one, focused specifically on the topic of digital interdependencies, that gathers images, quotes and looks for books' citations.
Working on our own digital infrastructure allows us to adapt the tools to our own needs and behaviours; meaning that these bots make sense to us, but they may not make sense to someone else.
<img src="https://git.vvvvvvaria.org/ccl/bots-of-conduct/raw/commit/d5b8aead93dddd6ef45e008de5101879445e0e45/log_bot_01.jpg" width="300"> <img src="https://git.vvvvvvaria.org/ccl/bots-of-conduct/raw/commit/d5b8aead93dddd6ef45e008de5101879445e0e45/log_bot_02.jpg" width="300">
Currently, we use:
* [Streambot](https://git.vvvvvvaria.org/varia/xmpp.streambot): a bot that saves the images sent to the main Varia group chat and creates an [html page](https://vvvvvvaria.org/stream/) for them.
* [Logbot](https://git.vvvvvvaria.org/varia/logbot): a bot that [logs](https://vvvvvvaria.org/logs/) the quotes that are sent to it.
4 years ago
* You can find a genealogy of the bots around Varia in this footnote[^genealogy]
<br>
Let's look into the bots [examples](https://git.vvvvvvaria.org/ccl/bots-of-conduct):
4 years ago
<br>
### Transit
4 years ago
**_name:_** transit.py
4 years ago
**_action mode:_** announces when someone enters or leaves the room
4 years ago
**_situation:_** finding non-verbal ways of communicating through presence and absence, making presence felt otherwise
4 years ago
<br>
### Gather
4 years ago
**_name:_** gather.py
4 years ago
**_action mode:_** generates a shared language; it creates a collective document
4 years ago
**_situation:_** a collective discursive setting that generates its own vocabulary
4 years ago
<br>
### Greet
4 years ago
**_name:_** greet.py
4 years ago
**_action mode:_** sends a message when it enters the room
4 years ago
**_situation:_** when there is a theme, for example: "send a reference to an existing or imaginary code of conduct, complaint, guideline, bug report, open letter, license or other social-technical protocol and explain why it is of interest to you."; how one wants to be introduced
4 years ago
<br>
### Spark
4 years ago
**_name:_** spark.py
4 years ago
**_action mode:_** replies to a specific word; brings alternatives into the situation; tries to create new habits and terminologies
4 years ago
**_situation:_** potentially in moments when a situation seems difficult and there is a need for more joyful interactions
4 years ago
<br>
### Whisper
**_name:_** whisper.py
4 years ago
**_action mode:_** takes what someone says to it in confidentiality and echoes it to a group chat, thus anonymising it
4 years ago
**_situation:_** there are remarks or complaints in the room, but the person does not feel comfortable to bring up the issue themselves
4 years ago
<br>
## Installing and Running the Bots
During this workshop we will use:
* python3
* pip3
* slixmpp
* requests
* a code editor
Some installation guides can be found under the following links.
**python3 + pip3**:
4 years ago
For computers running **Windows OS** or **Mac OS**:
1. check what version of Python you have on your computer with `$ python --version`
2. if you have python 2.x, try also the following, to be sure that you don't have python3 already: `$ python3 --version`
3. if this returns a "Could not be found" (or something like that), then proceed to install python3. If it returns a version number, then you have python3 already!
4. to install python3, you can download python under the following links and follow the installation instructions:
- https://www.python.org/ftp/python/3.8.3/python-3.8.3-macosx10.9.pkg (Mac OS 10.9 and later)
- https://www.python.org/ftp/python/3.8.3/python-3.8.3-amd64.exe (Windows)
pip3 comes installed with python3.
You can check if it installed correctly by running: `$ pip3 --version`
4 years ago
-----
4 years ago
For computers running **Linux OS**:
* open the terminal
4 years ago
* check which version of python you have:<br>
`$ python --version`<br>
`$ python3 --version`<br>
* if you have a python 2 version, you could install python 3<br>
`$ sudo apt install python3`<br>
`$ sudo apt install python3-pip`
**slixmpp**:
This is the Python library we use to make the bots. You can install it by running: `$ pip3 install slixmpp`
**requests**:
This is a Python library that is used by slixmpp. You can install it by running: `$ pip3 install requests`
4 years ago
**code editor**:
* if you dont have a code editor, we can suggest (among others) [Sublime Text](https://www.sublimetext.com/) or [Atom](https://atom.io/)
4 years ago
<br>
4 years ago
## Run the bots!
First download the bots from this page.
4 years ago
* go to the folder where you have downloaded them
* to run a bot, you can copy paste the commands which are already mentioned in the bot file, but a general command looks like this:
4 years ago
`$ python3 bot.py -d -j administratorbot@conversejs.org -r botsofconduct@muc.vvvvvvaria.org -n bot -p testing`
4 years ago
* where:<br>
`-j` stands for JID (jabber id) <br>
`-r` means room <br>
`-n` stands for bot nickname <br>
`-o` stands for for output <br>
`. ` means here
Join the chatroom!
To join the chatroom, you need to use a XMPP client and an account.
* Start by making a XMPP account.
* We recommend to register one on this server for the workshop: <https://blabber.im/anmelden/>
* But a longer list of servers can be found here: <https://list.jabber.at/>
* Use a XMPP client.
* We recommend using Converse.js (a web-client) for this workshop: <https://conversejs.org/fullscreen.html>
* But if you're curious, you can also install a desktop or mobile client. Some recommendations:
* Conversations (Android): <https://conversations.im/>
* Chatsecure (iOS): <https://chatsecure.org/>
* Gajim (Windows, Mac OS, Linux): <https://gajim.org/>
* Dino (Linux): <https://dino.im/>
* Join the following room: `botsofconduct@muc.vvvvvvaria.org`
<br>
## Footnotes
**Link to references [pad](https://pad.vvvvvvaria.org/Bots_of_Conduct_References) — further references and materials assembled by Joana and Cristina - feel free to add your own!**
4 years ago
[^genealogy]: genealogy of bots
* https://gitlab.com/relearn/relearn2017/blob/master/xmpp-bots/timekeeper-bot/timekeeper.py (Relearn 2017)
* https://gitlab.com/relearn/relearn2017/blob/master/xmpp-bots/collection-bot/collection-bot.py (Relearn 2017)
* https://gitlab.com/relearn/relearn2017/tree/master/xmpp-bots/archive-bot (Relearn 2017)
* https://gitlab.com/relearn/relearn2017/blob/master/xmpp-bots/cake-bot/cake-bot.py (Relearn 2017)
* https://gitlab.com/lidia_p/author-is-not-present/ (Bots by Lidia and Cristina, 2019)