🐀 Building a federated link aggregator in rust
Find a file
Riley a074564458
Federation async (#848)
* Asyncify more

* I guess these changed

* Clean PR a bit

* Convert more away from failure error

* config changes for testing federation

* It was DNS

So actix-web's client relies on TRust DNS Resolver to figure out
where to send data, but TRust DNS Resolver seems to not play nice
with docker, which expressed itself as not resolving the name to
an IP address _the first time_ when making a request. The fix was
literally to make the request again (which I limited to 3 times
total, and not exceeding the request timeout in total)

* Only retry for connecterror

Since TRust DNS Resolver was causing ConnectError::Timeout,
this change limits the retry to only this error, returning
immediately for any other error

* Use http sig norm 0.4.0-alpha for actix-web 3.0 support

* Blocking function, retry http requests

* cargo +nightly fmt

* Only create one pictrs dir

* Don't yarn build

* cargo +nightly fmt
2020-07-01 08:54:29 -04:00
.github Add liberapay to FUNDING.yml 2020-02-05 17:23:07 -08:00
ansible Merge branch 'master' into improve-config 2020-06-27 10:09:16 -04:00
docker Federation async (#848) 2020-07-01 08:54:29 -04:00
docs Merge branch 'master' into federation 2020-06-27 10:54:08 -04:00
server Federation async (#848) 2020-07-01 08:54:29 -04:00
ui Federation async (#848) 2020-07-01 08:54:29 -04:00
.dockerignore Implement integration test for federation 2020-04-24 18:30:31 +02:00
.gitattributes Adding repo language in gitattributes. 2019-08-23 14:59:10 -07:00
.gitignore Implement integration test for federation 2020-04-24 18:30:31 +02:00
.travis.yml Testing out another travis build. #397 2020-03-28 18:21:10 -04:00
CODE_OF_CONDUCT.md Changing to new lemmynet repo location. 2020-06-23 13:47:02 -04:00
CONTRIBUTING.md Add more info to contributing. Fixes #429 2020-01-17 17:52:48 -05:00
install.sh Improve shell scripts (#705) 2020-05-11 13:16:08 -04:00
LICENSE Initial commit 2019-02-14 09:17:18 -08:00
README.md Merge branch 'master' into federation 2020-06-09 14:01:26 +02:00
RELEASES.md Changing to new lemmynet repo location. 2020-06-23 13:47:02 -04:00

GitHub tag (latest SemVer) Build Status GitHub issues Docker Pulls Translation status License GitHub stars

Lemmy

A link aggregator / reddit clone for the fediverse.

View Site · Documentation · Report Bug · Request Feature · Releases

About The Project

Front Page Post
main screen chat screen

Lemmy is similar to sites like Reddit, Lobste.rs, Raddle, or Hacker News: you subscribe to forums you're interested in, post links and discussions, then vote, and comment on them. Behind the scenes, it is very different; anyone can easily run a server, and all these servers are federated (think email), and connected to the same universe, called the Fediverse.

For a link aggregator, this means a user registered on one server can subscribe to forums on any other server, and can have discussions with users registered elsewhere.

The overall goal is to create an easily self-hostable, decentralized alternative to reddit and other link aggregators, outside of their corporate control and meddling.

Each lemmy server can set its own moderation policy; appointing site-wide admins, and community moderators to keep out the trolls, and foster a healthy, non-toxic environment where all can feel comfortable contributing.

Note: Federation is still in active development and the WebSocket, as well as, HTTP API are currently unstable

Why's it called Lemmy?

Built With

Features

  • Open source, AGPL License.
  • Self hostable, easy to deploy.
  • Clean, mobile-friendly interface.
    • Only a minimum of a username and password is required to sign up!
    • User avatar support.
    • Live-updating Comment threads.
    • Full vote scores (+/-) like old reddit.
    • Themes, including light, dark, and solarized.
    • Emojis with autocomplete support. Start typing :
    • User tagging using @, Community tagging using !.
    • Integrated image uploading in both posts and comments.
    • A post can consist of a title and any combination of self text, a URL, or nothing else.
    • Notifications, on comment replies and when you're tagged.
      • Notifications can be sent via email.
      • Private messaging support.
    • i18n / internationalization support.
    • RSS / Atom feeds for All, Subscribed, Inbox, User, and Community.
  • Cross-posting support.
    • A similar post search when creating new posts. Great for question / answer communities.
  • Moderation abilities.
    • Public Moderation Logs.
    • Can sticky posts to the top of communities.
    • Both site admins, and community moderators, who can appoint other moderators.
    • Can lock, remove, and restore posts and comments.
    • Can ban and unban users from communities and the site.
    • Can transfer site and communities to others.
  • Can fully erase your data, replacing all posts and comments.
  • NSFW post / community support.
  • OEmbed support via Iframely.
  • High performance.
    • Server is written in rust.
    • Front end is ~80kB gzipped.
    • Supports arm64 / Raspberry Pi.

Installation

Support / Donate

Lemmy is free, open-source software, meaning no advertising, monetizing, or venture capital, ever. Your donations directly support full-time development of the project.

Crypto

  • bitcoin: 1Hefs7miXS5ff5Ck5xvmjKjXf5242KzRtK
  • ethereum: 0x400c96c96acbC6E7B3B43B1dc1BB446540a88A01
  • monero: 41taVyY6e1xApqKyMVDRVxJ76sPkfZhALLTjRvVKpaAh2pBd4wv9RgYj1tSPrx8wc6iE1uWUfjtQdTmTy2FGMeChGVKPQuV

Contributing

Translations

If you want to help with translating, take a look at Weblate.

Contact

Code Mirrors

Credits

Logo made by Andy Cuccaro (@andycuccaro) under the CC-BY-SA 4.0 license.