{"id":18008576,"url":"https://github.com/mgree/much","last_synced_at":"2025-04-04T12:11:06.228Z","repository":{"id":142094007,"uuid":"266460072","full_name":"mgree/much","owner":"mgree","description":"Multi-user Conference Hall, a text-based virtual environment for conferences","archived":false,"fork":false,"pushed_at":"2020-06-05T03:36:13.000Z","size":165,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-09T21:43:51.722Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mgree.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-24T03:06:44.000Z","updated_at":"2021-06-30T06:27:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"6440f256-3c03-47b8-ae52-73b4486be3cf","html_url":"https://github.com/mgree/much","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmuch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmuch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmuch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mgree%2Fmuch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mgree","download_url":"https://codeload.github.com/mgree/much/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247174456,"owners_count":20896078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-30T01:19:10.801Z","updated_at":"2025-04-04T12:11:06.212Z","avatar_url":"https://github.com/mgree.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MUCH: Multi-User Conference Hall\n\n[![Build Status](https://travis-ci.com/mgree/much.svg?branch=master)](https://travis-ci.com/mgree/much)\n\nA text-based virtual conference venue, accessible via telnet, MUD\nclients, or over the web.\n\n## Main idea\n\nA multi-user, located environment where the rooms correspond to the\nrelevant rooms of a conference hall: a registration desk, a lobby, a\nhallways or two, lecture halls, and some private rooms/secluded\nspaces. Maybe a hotel bar?\n\nThink: IRC where you can only be in one place at a time.\n\nThink: a MUD without 'mechanics' that's linked up to the conference\nschedule and events.\n\nIn an ideal world, this tool would replace sli.do (for question\nasking) and Slack (for general communication).\n\nThe 'room' mechanism will allow for serendipitous hallway-track\ninteraction. Being text-based means there's a low technological bar\nfor entry (unlike VR), and also allows for \"lurking\"---just like how\npeople sit and work on their laptos.\n\n## Desiderata\n\n### Web interface\n\nThere should be a 1-1 mapping of rooms to URLs. You can enter a URL\ninto the MUD client and you'll go right there.\n\nHow should session management work?\n\nWhat happens when you open multiple room URLs?\n\nRoom descriptions should make it easy to share a link to \"go here\nimmediately\".\n\nPrivate rooms are password/identity protected.\n  How does management for that work?\n  How long do they stick around?\n\n### Identity\n\nAnonymous, easy use has to be an option. Web users are anonymous by\ndefault.\n\nLet people enter an email address and confirm to get privileges (e.g.,\ncreate private rooms) and also have badges associated with their names\n(author, presenter, organizer, etc.)\n\n### Admin controls\n\nBan individuals, IPs, IP ranges.\n\n### Announcements\n\nAnnounce globally whatever @POPLconf tweets.\n\nSome way of setting a schedule, and having announcements happen there?\n\n### Logs/history\n\nMaybe no logs for users? Just server-side event logs, let people sort\nit out themselves. MUD clients log well, and we can offer downloads in\nthe HTML view.\n\nWe _do_ need to keep careful track of resource use.\n\n## Plans\n\n- Tokio\nhttps://github.com/tokio-rs/tokio/blob/master/examples/chat.rs\n- Hyper\n  CSRF protection?\n\n### Protocol fanciness\n\n#### MCCP\n\nhttps://docs.rs/flate2/1.0.14/flate2/\nhttps://tintin.mudhalla.net/protocols/exop/\nMCCP2 is code 86\n\n#### Color\n\nhttps://en.wikipedia.org/wiki/ANSI_escape_code\nhttps://mudhalla.net/tintin/info/ansicolor/\n\n### Database\n\nFlat-file organization, like ROM MUD pfiles?  Could even hardcode\nrooms to start (but need to create private rooms on the fly).\n\n### Game state\n\nWorld map\n  Rooms know who's in them\n  \nSession IDs map to:\n  player (how are anonymous people represented... HTTP session UUID?)\n  \n  HTTP pull drains buffer\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgree%2Fmuch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmgree%2Fmuch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmgree%2Fmuch/lists"}