https://github.com/mgree/much
Multi-user Conference Hall, a text-based virtual environment for conferences
https://github.com/mgree/much
Last synced: over 1 year ago
JSON representation
Multi-user Conference Hall, a text-based virtual environment for conferences
- Host: GitHub
- URL: https://github.com/mgree/much
- Owner: mgree
- License: agpl-3.0
- Created: 2020-05-24T03:06:44.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-06-05T03:36:13.000Z (about 6 years ago)
- Last Synced: 2025-02-09T21:43:51.722Z (over 1 year ago)
- Language: Rust
- Size: 161 KB
- Stars: 2
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# MUCH: Multi-User Conference Hall
[](https://travis-ci.com/mgree/much)
A text-based virtual conference venue, accessible via telnet, MUD
clients, or over the web.
## Main idea
A multi-user, located environment where the rooms correspond to the
relevant rooms of a conference hall: a registration desk, a lobby, a
hallways or two, lecture halls, and some private rooms/secluded
spaces. Maybe a hotel bar?
Think: IRC where you can only be in one place at a time.
Think: a MUD without 'mechanics' that's linked up to the conference
schedule and events.
In an ideal world, this tool would replace sli.do (for question
asking) and Slack (for general communication).
The 'room' mechanism will allow for serendipitous hallway-track
interaction. Being text-based means there's a low technological bar
for entry (unlike VR), and also allows for "lurking"---just like how
people sit and work on their laptos.
## Desiderata
### Web interface
There should be a 1-1 mapping of rooms to URLs. You can enter a URL
into the MUD client and you'll go right there.
How should session management work?
What happens when you open multiple room URLs?
Room descriptions should make it easy to share a link to "go here
immediately".
Private rooms are password/identity protected.
How does management for that work?
How long do they stick around?
### Identity
Anonymous, easy use has to be an option. Web users are anonymous by
default.
Let people enter an email address and confirm to get privileges (e.g.,
create private rooms) and also have badges associated with their names
(author, presenter, organizer, etc.)
### Admin controls
Ban individuals, IPs, IP ranges.
### Announcements
Announce globally whatever @POPLconf tweets.
Some way of setting a schedule, and having announcements happen there?
### Logs/history
Maybe no logs for users? Just server-side event logs, let people sort
it out themselves. MUD clients log well, and we can offer downloads in
the HTML view.
We _do_ need to keep careful track of resource use.
## Plans
- Tokio
https://github.com/tokio-rs/tokio/blob/master/examples/chat.rs
- Hyper
CSRF protection?
### Protocol fanciness
#### MCCP
https://docs.rs/flate2/1.0.14/flate2/
https://tintin.mudhalla.net/protocols/exop/
MCCP2 is code 86
#### Color
https://en.wikipedia.org/wiki/ANSI_escape_code
https://mudhalla.net/tintin/info/ansicolor/
### Database
Flat-file organization, like ROM MUD pfiles? Could even hardcode
rooms to start (but need to create private rooms on the fly).
### Game state
World map
Rooms know who's in them
Session IDs map to:
player (how are anonymous people represented... HTTP session UUID?)
HTTP pull drains buffer