[UNMAINTAINED] Activitypub server in Rust
Log | Files | Refs | README | LICENSE

commit 33f62211a51ed2057e25e5f07acdd898d9de490d
parent d8651eeaf8950ba9f02511a99772e4033f08a69b
Author: alex wennerberg <alex@alexwennerberg.com>
Date:   Mon,  4 May 2020 19:09:56 -0500

Update readme / shorten philosophy document

DPHILOSOPHY.md | 39---------------------------------------
MREADME.md | 17+++++++++++++++--
2 files changed, 15 insertions(+), 41 deletions(-)

diff --git a/PHILOSOPHY.md b/PHILOSOPHY.md @@ -1,39 +0,0 @@ -# Gourami (DRAFT) - -Gourami is an intentionally small, extremely lightweight social network. Once it is fully developed, it will be decentralized, which means people can run their own instances and connect with other instances, as well as other servers implementing the [ActivityPub](https://www.w3.org/TR/activitypub/) standard. - -The biggest inspiration for Gourami was [runyourown.social](https://runyourown.social/), an essay about running your own social network. I highly recommend reading this essay, as most of the ideas in it were the direct inspiration for Gourami. Specifically, the author laments that there are no real opportunities for federated (more on that later) social networks that are *intentionally small*. Gourami is an attempt to be that network. - -Gourami is intentionally lightweight. It's written in [Rust](https://www.rust-lang.org/), uses almost no Javascript, and uses Sqlite as its database. This may not mean much to you if you're not an engineer, but the point is that Gourami's resource requirements are extremely small. This provides a couple of advantages: it's extremely cheap to run, it's energy efficient, and it can be run on cheap hardware, for example a [Raspberry Pi Zero](https://www.raspberrypi.org/products/raspberry-pi-zero/). One of the things that Darius complains about in the essay I mentioned above, which again you should absolutely read, is that it is unreasonably expensive to run a small-scale social network, since the sites aren't really engineering to support 100 users, but rather 1,000 or 10,000 users. - -Avoiding Javascript also helps with accessibility and usability. Meeting certain accessibility standards for Gourami is absolutely a goal, but I'm still very early on in development at this point. - -In Jenny Odell's *How to Do Nothing*, she discusses the phenomenon of "context collapse" in social media. Many of these ideas are excerpted in her essay in [The Paris Review](https://www.theparisreview.org/blog/2019/04/19/why-does-this-feel-so-bad/) - -> Spatial and temporal context both have to do with the neighboring entities around something that help define it. Context also helps establish the order of events. Obviously, the bits of information we’re assailed with on Twitter and Facebook feeds are missing both of these kinds of context. Scrolling through the feed, I can’t help but wonder: What am I supposed to think of all this? How am I supposed to think of all this? I imagine different parts of my brain lighting up in a pattern that doesn’t make sense, that forecloses any possible understanding. Many things in there seem important, but the sum total is nonsense, and it produces not understanding but a dull and stupefying dread. - -In my view, a way around this is to develop a platform that consciously builds and protext context. One could imagine a Gourami instance that is, for example, tied to a physical location by running on a wifi network, at a coffee shop, or on a [Wireless Mesh Network](https://en.wikipedia.org/wiki/Wireless_mesh_network). By keeping Gourami extremely small, lightweight, and easy to administer, this becomes a possibility that wouldn't be feasible with even other open source social networks. - -In *The Communist Horizon*, Jodi Dean more explicitly links the dynamics Jenny Odell discusses with neoliberal capitalism. In what she terms "communicative capitalism", our very time and social relationships become a commodity to be exploited on for-profit social networks. - -> Networked communications are the form of capitalism's subsumption of the social substance to its terms and dynamics ... We don't usually pay money directly to Gmail, YouTube, Facebook, and Twitter. These don't cause money, they cost time. It takes time to post and write and time to read and respond. We pay with attention and the cost is focus. - -In my view, ideally social networks would be public media institutions run for public good, much like public broadcasting or open access television. Unfortunately, this isn't even remotely an immediate possbility in the United States. - -The closest and most promising technology that challenges the privatization of social networks are a loose group of technologies known as ["the federated web" or "fediverse"](https://fediverse.party/en/fediverse/). The largest "Fediverse" platform is [Mastodon](https://joinmastodon.org/), which comprises the vast majority and accounts and users. Many other platforms are essential much-smaller Mastodon clones. Gourami does not attempt to be a Mastodon clone, in a number of regards. I highly recommend spending some time to read about Mastodon, ActivityPub and the Fediverse, as a lot of the concepts are extremely interesting and a huge inspiration for Gourami. - -Mastodon and the like are essentially Twitter clones. While Gourami takes inspiration from Twitter (especialy very early Twitter), it isn't trying to be a twitter replacement, but rather a real twitter *alternative*. It derives a lot of its design and practices from the pre-social media internet, such as internet forums, mailing lists, and IRC channels. Gourami is (for now) private and invite-only. It is intentionally small. I haven't tested the performance limits, but it isn't really designed to have more than, say, 100 active users. Any Gourami instance heavily depends on the relationship between the admin and the users -- it's not an anonymous platform, but one in which the admin takes time and energy to curate the space, but from a technical level (administering the server) and from a social level (using certain admin tools which I'm going to build). - -While Mastodon is decentralized from an engineering perspective -- I can host my own hardware, it isn't really decentralized from a social perspective. Aside from some servers dedicated to specific hobbies or interests, there isn't that much functional difference between joining one server or joining another (though this could be wrong -- I haven't spent too much time on Mastodon). A lot of real world social networks function around proximity, which is lost on the web. Living in the same town, going to the same school/workplace, etc. Situations where people who normally wouldn't interact with each other are put into proximity. I don't think there's much of that on the web, which is centered around subcultures and subcommunities -- niche interests rather than physical spaces. - -Gourami is still very much in alpha and I haven't implemented a lot of the features I have discussed, but I plan on doing more in the future, especialy if there is interest. This essay and Gourami is a draft, please contact me with feedback alex@alexwennerberg.com https://gourami.social/user/alex - -Links: - -* Jenny Odell's discussion of adding context to social media in *How to Do Nothing* -* https://runyourown.social/ -* https://joinmastodon.org/ -* https://sourcehut.org/ -* https://100r.co/site/mission.html -* https://solar.lowtechmagazine.com/2020/01/how-sustainable-is-a-solar-powered-website.html -* https://www.nycmesh.net/ diff --git a/README.md b/README.md @@ -8,15 +8,16 @@ An intentionally small, ultra-lightweight social media network (ActivityPub inte ## Philosophy and Design Gourami differs from existing social networks in a number of ways: -* Intentionally small -- designed to support 50-100 active users. I'm sure it could support more, but things could quickly become a mess. +* Intentionally small -- designed to support 50-100 active users. I'm sure it could support more, but things could quickly become a mess. Gourami was hugely and directly inspired by the fantastic essay on [runyourown.social](https://runyourown.social) * Invite-only and closed -- a community curated by the server admin, rather than open to all. +* Free and open source -- I find the privatization of the internet extremely concerning, especially the way that the very space for building community and networking with our friends is controlled by for-profit corporations with potentially different values and goals than their users. +* A social network with physical context -- Gourami should be easy to deploy in a physical space (such as a coffee shop or a local wireless network) or among people in a specific physical community, such as a school. In *How to Do Nothing*, Jenny Odell discusses the lack of a context, specifically physical and temporal context, in social media, and, while praising Mastodon, also calls for social networks that are tied to physical space. While Gourami does not force you to tie a deployment to a place, it is designed in such a way that such a deployment would be relatively easy. * Extremely lightweight & fast -- very little Javascript, plain text, small page sizes. Should run on extremely lightweight/cheap hardware and low-bandwidth networks. * [Brutalist](https://brutalist-web.design/) -- Stark and minimal, the design and interface should emphasize, rather than hide, the underlying building blocks of the web that comprise it. This will give Gourami a feel similar to 90s or 2000s web forums. * Simple and feature-averse -- A simpler Gourami is much easier for me to develop, support and maintain. I want Gourami to be reliable software that people can build communities on top of, and severely limiting the feature set makes that much easier. Some goals of this project that are work in progress: * Support for [ActivityPub](https://activitypub.rocks/) federation -* Authentication-free mode: For deployment on private networks, such as on a local wireless network. * Additional accessibility features Read [this document](https://git.sr.ht/~alexwennerberg/gourami-social/tree/master/PHILOSOPHY.md) for more @@ -43,3 +44,15 @@ Run the local server with `gourami_social run` **Gourami is in alpha / development stage.** I have a small server running with some of my friends, but this is absolutely not ready for any sort of production environment, and a key feature, ActivityPub federation, is not finished yet. I think it'd be interesting to set this up so that it can be deployed on a Platform as a Service or Function as a Service offering, but I haven't found any great way to run Sqlite in that context. I may put together an ansible playbook or something. + +## References + +Many projects inspired my work here, and I want to mention them + +* Jenny Odell's discussion of adding context to social media in *How to Do Nothing* +* https://runyourown.social/ +* https://joinmastodon.org/ +* https://sourcehut.org/ +* https://100r.co/site/mission.html +* https://solar.lowtechmagazine.com/2020/01/how-sustainable-is-a-solar-powered-website.html +* https://www.nycmesh.net/