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.

  • rodneylives@lemmy.world
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    2
    ·
    3 days ago

    Any relation to Lucasfilm/Fujitsu Habitat/Habitat II? https://renoproject.org/

    It was an early virtual world, running originally on Commodore 64s, later on PCs and (in Japan) Sega Saturn, with a look and style heavily inspired by SCUMM games.

  • irmadlad@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    4 days ago

    I don’t have a use case OP, but the project looks great. Seems like it would be an obvious NextDoor replacement.

  • Buffy@libretechni.ca
    link
    fedilink
    English
    arrow-up
    20
    ·
    3 days ago

    This is perfect for me since I was banned from the NextDoor app for letting my community know the creature was hunting. I can host this for myself and others, and the nonbelievers can walk amongst it.

  • dangling_cat@piefed.blahaj.zone
    link
    fedilink
    English
    arrow-up
    13
    ·
    4 days ago

    I absolutely love this idea. Does it support ActivityPub? And I would love to see users can set labels on themselves like what expertise they can offer etc.

    • Carl Newton@feddit.ukOP
      link
      fedilink
      English
      arrow-up
      14
      ·
      4 days ago

      Now that’s an interesting idea!

      This release is step one in the plan. Federation is step two! More information on this here: https://carlnewton.github.io/posts/building-habitat/

      I love what activitypub has done for the internet, but I don’t think it will be right for this project, but yes to federation – if there are instances to federate with of course!

      • Ada@piefed.blahaj.zone
        link
        fedilink
        English
        arrow-up
        7
        ·
        4 days ago

        It seems to me that activity pub could still be useful for a couple of reasons. If you live in the suburbs of a city, then bring able to also access an instance for your suburb and your city might be useful.

        And if you live in multiple locales, or if want to stay connected to your old home town etc

          • Ada@piefed.blahaj.zone
            link
            fedilink
            English
            arrow-up
            7
            ·
            4 days ago

            That was my bad. I was espousing federation, not AP specifically, and I see that federation is built in to the idea

          • mnemonicmonkeys@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            3
            ·
            3 days 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
              3
              ·
              3 days 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.

  • mnemonicmonkeys@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    24
    ·
    3 days ago

    Another idea you could potentially add down the line: what about functionality similar to Craigslist or Facebook Marketplace? Those tend to work by helping you focus on your local area as opposed to EBay.

    Granted, Craigslist is largely fine imo, I’m just proposing a way to help you kill off Facebook

    • Richard Wonka@slrpnk.net
      link
      fedilink
      English
      arrow-up
      6
      ·
      2 days ago

      integrate it with #flohmarkt (and the fediverse in general) and you don’t need to reinvent the wheel :-)

      • mnemonicmonkeys@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        3
        ·
        edit-2
        2 days ago

        Keep in mind that OP’s project is already based on a different protocol than the Fediverse for their own reasons. Trying to create and maintain a bridge between different protocols might be more work than to just make modifications to posts in the current system.

        Other factors are end user experience and branding. Keep in mind that the average Facebook/NextDoor user isn’t tech-savvy, and could also be put off by the weird software names commonly found in the Fediverse

        It’s likely worthwhile for OP to look into flohmarkt, but integration might not be the optimal method

      • Hadriscus@jlai.lu
        link
        fedilink
        English
        arrow-up
        5
        ·
        2 days ago

        I agree with the user above, over here facebook is so entrenched not just thanks to the location-based groups and tagging but through the marketplace too. People rely on it to sell their old stuff. Of course the main hurdle as usual is making people care enough to use a different thing, even though the current solution works well enough for their use case. I could see it happening if towns adopted it officially and there was a bit of communication about it. Does your program federate with other instances ? like, if I want to sell my old table, will people in nearby towns that are hosting their own instance see my post ?

        In any case great initiative

  • eodur@piefed.social
    link
    fedilink
    English
    arrow-up
    26
    ·
    4 days ago

    I love the sound of this. Kind of a decentralized Next door but better? I’ve been really wanting a place for some local communities to organize that isn’t Facebook. Perhaps I’ll spin up an instance and see if I can get some interest.

  • Anon518@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    6
    arrow-down
    9
    ·
    3 days ago

    Next Lemmy update is going to have an option to block image posts (to remove low quality meme threads). People should stop turning text posts into image posts to avoid being blocked. I also find these hybrid posts quite annoying. You’re making your post look like something it’s not.

      • quick_snail@feddit.nl
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        3
        ·
        3 days ago

        Like crap. Next time, write an article on your website, add a featured image, and link to that

      • dubyakay@lemmy.ca
        link
        fedilink
        English
        arrow-up
        3
        arrow-down
        1
        ·
        3 days ago

        Don’t listen to them. This post renders fine on both voyager and default Web mobile UI for world. You did nothing wrong.

      • stray@pawb.social
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 days ago

        I’m on Summit and it’s obvious from your post title and screenshot in my feed that this will be you presenting some kind of website or software. When clicked, the actual thread has your main post written out nicely.

        I think if a filter like what’s described is on its way, it’s very poorly thought-out. Many interesting topics will include images; an album cover when discussing a band, your cat when asking for advice about said cat, etc. It’s also fairly normal on Lemmy to add alt-text of images as plain text in the main post, so a filter would either include such posts as not image-only or exclude posts like yours. Seems like a bad system. I should think it’s better for users to block meme comms.

      • Anon518@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 days ago

        It makes your post look like an image (low quality) instead of a link or discussion (possibly high quality).

    • SayCyberOnceMore@feddit.uk
      link
      fedilink
      English
      arrow-up
      6
      ·
      3 days ago

      A post introducing a graphical web-based system would be remiss if an image of that graphical system was missing.

      Of course you can block those posts (if that function is.enabled) , but you’d be missing out on many discussions.

  • InFerNo@lemmy.ml
    link
    fedilink
    English
    arrow-up
    1
    ·
    3 days ago

    We have a very strong national use of Hoplr, so it’ll be really hard to get people over and I haven’t seen any malpractice by Hoplr yet.

  • Alfredolin@sopuli.xyz
    link
    fedilink
    English
    arrow-up
    9
    ·
    2 days ago

    I would totally host that for my neighborhood, which as I understand is using Facebook a lot, which, of course, I am avoiding like the pest.

  • Otter@lemmy.ca
    link
    fedilink
    English
    arrow-up
    3
    ·
    3 days ago

    Looks cool! I’d love to see local buynothing groups have a Fediverse alternative.

    Out of curiosity, is there any standard or common format around location data for Fediverse platforms?

      • Gorgritch_Umie_Killa@aussie.zone
        link
        fedilink
        English
        arrow-up
        5
        ·
        3 days ago

        How is it federation but not Activitypub specifically? I thought that was the only protocol that currently allows for federation. Are there others? Or other ways?

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

          To be clear, there is no functionality that federates Habitat instances yet. This work is still to be done. ActivityPub is a protocol for decentralised networks. Though I will not be using ActivityPub, I will build functionality that will allow for a decentralised network of Habitat instances communicating data to each other. This will be federated by definition, but it will not communicate with Lemmy/Mastodon or anything else that uses ActivityPub.

          • Gorgritch_Umie_Killa@aussie.zone
            link
            fedilink
            English
            arrow-up
            3
            ·
            3 days ago

            Oh, I see. Why have you made that choice? I’d understand to keep the subjects towards more community oriented interests, but then, i’m not sure why federation of other community habitats would have any advantages over being separate.

            For example, I imagine East Sussex and Alsace-Lorraine wouldn’t have a great degree of things to share between disparate instances like that.

            Anyway, i’ve not had a chance to look at your instance yet, so maybe i’ll understand it better when I duck over there for a sticky beak. All sounds very exciting though! Well done!

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

              Imagine this - you’re signed up to your local instance in – Perth is it? You go for a walk and find a beautiful old building, and want to know more about it. You open up your local Perth instance of Habitat, which you know about because you live in Perth and managed to find that instance, and click the Nearby feed, and the closest discussion to your location is about this very building. This functionality exists in Habitat right now.

              Now imagine that you’re on holiday to Oxford in the UK – I can’t imagine why you’d choose our clouds over your sun, but it might be something to do with the old buildings here. You see an interesting old building, and want to know more about it, and open up your Perth Habitat instance, click the nearby feed. Your Perth instance will identify the closest Habitat instance to your location – it just so happens to have found one called Habitat:Oxford. Your Perth Habitat instance will show you results from the Oxford Habitat instance by proximity. This is why I want to federate instances, so that you don’t even have to worry about which instances have the posts relevant to your location, it’s all handled by the network.

              • Gorgritch_Umie_Killa@aussie.zone
                link
                fedilink
                English
                arrow-up
                2
                ·
                3 days ago

                Ah! Oh cool, but this would take geolocation. I predict that being a hard sell for lemmings.

                But as I type that i realise/remember your post here is primarily an introduction for potential instance operators, not so much a user base. So the geolocation as an ‘issue’ is likely far less important (not forgetting a user can just turn it off anyway).

                • mnemonicmonkeys@sh.itjust.works
                  link
                  fedilink
                  English
                  arrow-up
                  3
                  ·
                  3 days ago

                  I predict that being a hard sell for lemmings.

                  Eh, if it’s an open-source application where you can review the code to confirm that the software isn’t tracking you, then it’s not an issue. Especially if you’re running Graphene OS, Rethink DNS, or Exodus to either sandbox or monitor your traffic

          • mnemonicmonkeys@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            3
            ·
            edit-2
            2 days ago

            Though I will not be using ActivityPub

            If you don’t mind my asking, what drove the decision to not base it on ActivityPub? On the surface that seems to be an easier starting point that building evetything out from scratch

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

              Activity Pub doesn’t take advantage of the unique solution we have by knowing the user’s location and the location of instances. In a way, it seems overkill for what we want. Additionally, I don’t necessarily want other software communicating with Habitat. You never know, I might change my mind as I delve into it. I changed my mind on a great number of things as I came to develop them for phase 1. I accept that there are things about existing protocols that I don’t fully understand.

        • mnemonicmonkeys@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          3 days ago

          I thought that was the only protocol that currently allows for federation. Are there others? Or other ways?

          The Matrix and XMPP protocols both support federation, though those are mainly for chat platforms

  • MoreZombies@quokk.au
    link
    fedilink
    English
    arrow-up
    8
    ·
    3 days ago

    Forgive me if any of these questions have obvious answers:

    Would Habitat be suitable for hosting community events, or communities in general?

    if you ran a hobby group, would your local Habitat be the place to share things? How much control is in the hands of the users vs the administrator?

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

      Could you help me understand what you mean by “hosting community events”? Your users can create posts about events, but it has no tools for video calls or anything like that. Users can create posts in the categories created by the administrator. They can leave comments on those posts. There are a bunch of moderation tools and ability for the administrator to have settings for posts based on the category they’re in.

      • nek0d3r@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        8
        ·
        3 days ago

        I’m guessing they mean like facebook events? A distinct section of the platform that allows for some kind of invite system, a feed for just the event, and reminders.

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

          Ah I see. No, no specialised type of post for events, date based information, invite systems, or anything like that. I can see why that would be good though so I’ll give it some thought.

          • Dr_Del_Fuego@slrpnk.net
            link
            fedilink
            English
            arrow-up
            2
            ·
            3 days ago

            Look at gamedate.org, or for immediate context search it on YouTube, you may be able to implement a copycat tool with more general lists of common events than the games list the site uses.