Part 2:
(Continued from the post)
What's the Next Step?
I started touching on some imagined future steps, but this chunk is
already a plenty big and ambitious thing. So, here's an initial plan
for how I want to attack taking first steps and bring myself into contact with
the engineering reality (as opposed to the rosy broad
picture). Hopefully at the end of this chunk of work, the vision will
have adapted somewhat to the reality of what's useful, what's
possible, what the community's feedback is, what the issues and
problems involved are, etc.
(And, obviously, I want to communicate with the
Lemmy devs to make sure these ideas are in line with their vision. I'm
laying this all out so extensively partly so that the community has a full explanation of what I'm proposing to do and why.)
So, first steps: I'm making a Lemmy instance that I can use for implementing
this. I'm waiting for my hosting to go up so I can make it
live, but once it's up, I'll start working on it + posting from the testbed
about what's going on. My initial coding task list is:
-
Set up the peer software with the content-addressable store
-
Start to have my instance do peer discovery, make the app that runs
in people's browsers from my instance become more AJAX-y and begin to
request data from the peers instead of the instance.
-
Once that part's working on my instance, I'd aim to be able to move
pieces of the actual app onto the peers -- construct the bootstrap
code, continue the AJAX-ification of the code on my Lemmy instance,
and have the bootstrapping app construct the end-user application
directly from data from the peers.
-
Start to tackle the browser app making updates to the data store via
requests to the peers, which will involve a lot of work and lot of
sorting out replication issues, security and trust issues, and
performance issues.
That's already a fairly large amount to take on. I have further ideas
about how the system could move forward from there, but even just that
represents (1) an ambitious thing to tackle (2) significant proposed
changes to the instance software (3) if it works, a fantastically
useful tool that instance operators could use to reduce their instance
load if they want to. So, I'm limiting the plan to that much for now
until I get some contact with the technical reality and with the
community.
What You Can Do
So if you've read to the end, maybe you think this is a good
idea. Want to help? This is a bunch of work already and I'd love it if
people wanted to help get it done. Leave a comment, let me know what
you think whether positive or negative, and if you want to help, 100%
reach out and let's get it done. I'm skilled with software engineering
in general, but I'm actually not too familiar in particular with web
backends and AJAX, so someone more skilled than I am could probably
help this along in a huge way. Specific things that might be useful:
-
If you want to run a peer or instance and help test the system
-
If you can help with coding
-
If you have feedback on these ideas in general, either positive or
else things I've overlooked or need to adjust
Hope to hear from you and thank you for reading my wall of text. Let
me know what you think + cheers to you.