note: i'm writing this after not working on this project for 6 months so i'm kind of figuring this out for myself anyway Pylon: an outgoing connection from wilson to some chat server/service which could be "some irc server", "some xmpp server" or "discord" (discord is centralized so there's only 1 discord to connect to) (though you COULD have multiple Pylons for discord, if you were crazy) note that discord's concept of "server" aka "guild" is unrelated to anything Channel: a particular chatroom on a particular service eg "#a on apionet irc" or "#general in some discord guild" in the code, a Channel is identified by a combination of a Pylon and a string 'channel descriptor', whose format depends on the Pylon type for instance xmpp channel descriptors are jids, discord uses numeric ids Thing: used in the code for such a tuple of (pylon, pylon-specific-descriptor) actually it also has a display name, which defaults to the descriptor descriptor is called id in the code because descriptor is too long to type used to represent Channels, Authors, ... Bus: a family of connected channels that messages will be bridged between Message: you know what a message is. it has a bunch of fields, which are channel: the channel the message came from (as a Thing) author: the user who created the message (as a Thing) body: the string contents of the message [RFC] Author: a user or personality on a service who created a message like Channel it's a tuple of (pylon, pylon-specific-descriptor) eg xmpp would use jids, irc would use nicks, discord uses numeric ids [RFC] let's change the Message fields to type=message author: the Author channel: the Channel body: the string contents type=delete target=id (? how do we do message ids) type=edit target=id body=the new body ... maybe this should be called Event? aaa