aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2024-08-11 08:00:00 +0800
committerRunxi Yu <me@runxiyu.org>2024-08-11 08:00:00 +0800
commit5892aed37db362bd7bfa6eb1d8175a94e13c70e4 (patch)
tree36167da41cb0e87daa5099a7f42bb4d4f9425b5f
downloadwebappirc-master.tar.gz
webappirc-master.zip
Initial commitHEADmaster
-rw-r--r--LICENSE18
-rw-r--r--README.md28
2 files changed, 46 insertions, 0 deletions
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.