From 5892aed37db362bd7bfa6eb1d8175a94e13c70e4 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 11 Aug 2024 08:00:00 +0800 Subject: Initial commit --- LICENSE | 18 ++++++++++++++++++ README.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3649823 --- /dev/null +++ b/LICENSE @@ -0,0 +1,18 @@ +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb1dfc8 --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# webappirc + +**This is currently just an idea with no implementation at all.** + +There are many ways people attempt to achieve scalable JavaScript-based web +applications. While my disdain for web applications that uses unnecessary +JavaScript persists, I do wish to see what I could do in this realm. + +Instead of using Kubernetes and other approaches to load balancing, I would +like to take a novel approach that uses the existing internal-federation of IRC +networks for load balancing. I have no idea how this should be implemented, but +the idea is: + +- The browser requests the initial static web page. +- The web page is some simple JavaScript that connects to a server via + WebSocket IRC, and renders content according to what it receives from the IRC + server (of whatever desired format: HTML, JSON, or perhaps some new + protobuf-like thing). +- On the side of the IRC network, there are oper'ed clients (perhaps + pseudoservers, or perhaps [HaxIRCd](https://git.andrewyu.org/hax/haxircd.git) + pseudoclients) that talk to newly connected users, and state is synchronized + as the oper'ed clients communicate with each other. + +There are some limitations that I haven't thought of mitigations to yet: + +- Various race conditions. +- IRC messages in most server protocols must be interpreted sequentially, and + that's not necessarily the most scalable way to do things. -- cgit v1.2.3