I’ve been working on Habitat for the past two years. It all stemmed from this idea that I posted in April 2024.

Habitat is a free open-source, self hosted social platform for local communities. It is aimed at fostering local community discussions and discovery of areas of interest. This is why it is built primarily around location. A Habitat instance centers on a specific area, and the local community can make generic posts about that area, or they can make posts about specific locations in that area. More about what I’ve been building and the future plans here.

Features

  • Habitat specification of location and size - enabling posts related to the local area
  • Home feed - Displays the most recent posts
  • Nearby feed - Displays posts sorted by proximity to the user
  • Create posts - Upload photos, set locations, comments
  • Categories - Location rules
  • Amazon S3 image storage option
  • Personalisation - Overrides Habitat defaults per user: kms/miles, hidden categories
  • Moderation tools - User, post, comment moderation, block email addresses
  • Announcements - Scheduled announcements
  • Public moderation log - Keep moderator actions visible for 30 days

If you’re interest in this at all, please give it a spin and let me know how you get on. I’ll keep an eye here on Lemmy, but you can also post to the Habitat discussion board on GitHub.

  • mnemonicmonkeys@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    2
    ·
    5 hours ago

    Reading through your link, it seems like the main difference in your framework is that there’s auto-propogation of federation built in. Please correct me if I missed anything

    Unrelated point: before you throw too much time and effort into building up federation, I want to bring something in the Matrix vs. XMPP debate: caching.

    Apparently in Matrix, if a user on server A joins a chatroom on server B, then all of the content on the chatroom need to then be copied and synced to server A. There’s 2 primary problems with this: it’s a lot of duplication overhead that can limit scaling of the network and there’s legal consequences for server A caching potentially illegal content. There’s also a privacy concern as this means more parties that can see various interactions.

    XMPP gets around these problems by having the user on server A just directly connect with server B, without server A caching anything.

    I haven’t dug into too many of the differences myself, but wanted to bring it up in case it helped

    • Carl Newton@feddit.ukOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      3 hours ago

      Yes, this is a good point! I don’t necessarily want to slow one Habitat down when waiting for the response of another. It could lock up other requests. If it’s possible to send the user the url to retrieve posts with frontend javascript, that may definitely be worth looking into. It sounds like an XSS minefield though, but it could very well be the way to go.

      Thanks for this.