Perspectives
From First Push to Now
In July 2023 I took on the challenge of building an entire client that supports content aggregation. I had discovered a stack built to decentralize a format of consumption similar to Reddit, using a networking structure known as Federation. Similar to how email works, a user can sign up on any service that provides a certain set of communication protocols to connect with users under other domains.
Loom started off as an experiment. I was fascinated by how easily I spun up a Lemmy instance in early July. It felt like I was making my own personal Reddit. My own space where I could divide particular interests of mine into sub-categories for other federated servers to see, pick, and choose to align with theirs. I moved on to wanting to build an iOS application to facilitate my content creation needs. Evolving into how I wanted to change the way I browsed the content. Evolving to wanting to mature Granite further to support the architecture of federation/social networks. And eventually the need to aggregate all types of content for consumption, with the rules I set. But making sure these lines are not hard-coded and are customizable by others.
I've felt that sites like Twitter, Reddit, etc. are nothing but re-skins of the same data structure for displaying content. Why not just have a singular application that can allow you to well, re-skin, the "feed" to look like any of them. Implement a way to communicate with all of them or simply browse them. And then share them or facilitate discussion.
That's where Loom is now.
Mastodon, Kbin, Lemmy are all providing great solutions to jump-start self-hosting needs in a very vibrant and passionate open-source community. The communities vary in beliefs and views, but seem to remain strong in their commitment to maintaining authentic solutions to an open social network. Even though this has been around for quite some time, it took me a while to connect the dots or see the importance of this open nature.
I have been curious about authentication or what this process should look like. Where should users of these instances sign-up or register? Centralizing their accounts under a singular domain again feels like a step back if a user's entire intention is for their content to spread to all federated servers. Owning origin rights should be a variable to consider.
During the NFT craze of 2021, we saw another experience, a bit far-fetched in relation, but the variables were there in my opinion. Those owning NFTs could use extensions such as MetaMask to verify ownership of a particular token, and certain privileges would be granted. Such as, being able to customize a particular feature that was locked prior. This was a special UX to me, as it felt like a unique metaphor of a key-value relationship or user/password. Even though we still needed a user/password to access MetaMask. Overall, being crypto related, the nature of transparency added other foundational values that strengthened this concept into a movement that was dubbed "Web3". But, the caveat is it wanted to keep "members" within a closed community per token.
The similarity to federation was this need to change the medium of what defines an online identity and who sets the rules of how others see this identity along with the content it produces. Having a single wallet own many NFTs, or "accounts", to consume unique experiences respectively.
There are still many unanswered questions about "Web3" motives and the process of executing this unique online verification. But, federation incorporates a classical approach with a greater focus on communicating with those outside of the "circle". As in, your opinions, thoughts are not closed and controlled within a centralized site/corporation. They can federate into the lands of other social domains that choose to federate. It seems similar to ERC-6551, which is currently under review, if implemented by developers in the same respect as ActivityPub.
Transparent credentials, secured by you, communicating in a transparent social network owned by none. This seems like an interesting experiment.
One method of avoiding another networking layer like Ethereum's is a service similar to Squarespace, where one can buy domains and spin up their own instances on-demand. However, maintaining federation with new instances that pop up constantly is an issue. There have been cases of malicious users federating unwanted content that would not bode well when wanting to enable federation out-of-the-box. "Block lists" have been spreading, letting server admins add known bad actors right away. Preventing such content from surfacing. But, who decides the contents of this list? And this list is quite long, checking each instance is tedious and ultimately trust is blindly given.
This entire system is still very new, but it is definitely exciting to see it all unfold in real-time.