~mariusor/go-activitypub

Hello, welcome to BrutaLinks, a federated alternative to (old)Reddit and Hacker News.

It represents an attempt at creating a link aggregator service and discussion platform, and it targets small to medium communities which focus on a low number of topics for discussion.

It attempts to borrow some of the good parts from its sources of inspiration and overlays them on top of the federated social networking protocol called ActivityPub in order to reach a network effect by interoperability between different instances.

These are the features that we like to brag about:

  • minimalist user interface.

  • small resource foot print.

  • support for the browser's dark mode preference with one click switch.

  • ActivityPub as a first class citizen in the client to server communication.

  • trivial to install and run an instance.

Our short term goals:

  • Invitation based new account creation.

  • Community based moderation.

  • Open moderation log.

#An exercise in minimalism

#Brutalist UI

The brutalist web design paradigm appeals to me both as a consumer and as a developer. I feel like BrutaLinks follows the spirit of its esthetic, even though punctually I have skirted some its specific ideas. The main difference was choosing to ignore the rule about underscored links, the reason being that on a website that mostly consists of lists of links it would be too much.

#Readability and accessibility

One of the most pervasive offenses of websites on the modern internet is the diminished emphasis of actual content in respect to irrelevant attention grabbing elements. That's why I tried to de-emphasise the elements which represent "meta-data" by means of CSS and/or Javascript.

As a consequence of trying to simplify the layout to the maximum, and using as much as possible from the semantic HTML vocabulary, the resulting documents are reasonably easy to consume and interact with using different access method than computer screens. As an example, we can see the main page on a TUI browser: links screenshot

There's a one click "dark mode" for both registered and anonymous users.

Directly interacting with the website by entering URLs in the URL bar, not just by clicking links. Keeping the link structure easy to navigate.

#Small overhead of deployment

I want people deploying our application to not have to go through convoluted procedures of compiling assets and downloading extra packages. That's why we are embedding the static files in the executable.

I want the users to not feel like the browser becomes the heaviest consumer of resources on their machines when loading the website, so the amount of in browser computation is kept to a minimum.

#Community based moderation

#Open moderation log

Here we took our inspiration from lobste.rs.

The moderation actions users and admins are taking are presented in a timeline that's open for everyone to see ensuring that power abuse can be detected by the community.

At the same time we preserve the anonymity of non-moderator actors which reporting submissions and blocking users.

#Community moderation

We take participating on our site seriously, so we would like you do it too. This means that accounts are responsible for one another.

If an account is using our user invitation mechanism, the accounts created from those invitations fall (also) under their responsibility to moderate.

This ensures that the moderation team will rarely get swamped by requests for action against accounts as people lower in the invitation chain can always make decisions about their behaviour.

We expect users to honour this covenant and not abuse it.

#Stewardship model

Administrators of non-federated services must make a very large compromise in order for their service to actually be used. They must obey democratic principles regarding the rules of participation, in opposition to a "benevolent dictatorship" approach, in order to not alienate their existing user base or run the risk of losing it.

In a network of federated services, the local user base can be of any size, while still maintaining the benefits of accounts interacting from different parts of the network. The local rules can be as strict or as lax as the moderation team desires, but as long as external contributions are in accordance with the local rules, and the outgoing contributions are in accordance with the rules of their respective recipients' instances, everybody can be happy.

#Encouraging small communities

When dealing with large communities that focus on multiple topics, users are sometimes missing the context for a submission both when submitting, and when reading. We try to overcome that by targeting small to medium communities that coallesce around a low number of common topics.

#Shortcommings of reddit

Currently Reddit offers three ways of interacting with its content.

  1. The unfiltered /r/all - the downsides of this I've already mentioned. It provides a hose type of content consumption, where the degree of interest for any one submission is automatically very low, being dilluted by the large mass of users.
  2. The logged account's front page - where an account sees only content that matches their own interests, it can have a very low speed but offers better engagement.
  3. Each subreddit - here the submissions are all under the same umbrella of interests and based on the quality of the moderation, they don't stray too far from a set of rules already decided.

Submitting content to reddit suffers from the opposite problem, how to find which subreddit it is the most appropriate for, and which community will engage best with it.

About this wiki

commit 182bc0667aefda5f2d023fecd71198dd08837bf9
Author: mariusor <marius@federated.id>
Date:   2024-03-25T12:45:34+01:00

Updated the dependencies for storage packages
Clone this wiki
https://git.sr.ht/~mariusor/go-activitypub-doc (read-only)
git@git.sr.ht:~mariusor/go-activitypub-doc (read/write)