🔥🔥 Managing your circles on #bonfire is now a breeze. 🌟 Create new #circles effortlessly and organize your users directly from any feed or user profile. Check out the video or experience it firsthand on our campground! 🏕️
https://campground.bonfire.cafe
Public Interest Social Networks
Bonfire is built by communities, for communities. Rooted in autonomy, mutual care, and collective power. Co-create your tools, reclaim your data, and resist manipulation by shaping your own federated digital spaces.
Previously at @bonfire@indieweb.social
New Blog Post 📣
Want to take control of your online presence? Check out our latest blog post on using Circles, Boundaries, and Roles in Bonfire! Learn how to create custom #circles, grant specific #roles, and share content with the right people. 🎯
Turn your online interactions into meaningful connections.
For those familiar with SQL, this looks something like (though the real query is much more complex):
```
SELECT * from activities
INNER JOIN (SELECT id from activities WHERE [...] LIMIT 40)
LEFT OUTER JOIN [...]
WHERE EXISTS (SELECT [...] WHERE boundaries.id = activities.id)
LIMIT 20
```
6/end
By deferring the retrieval of complete details and boundary computation until after pagination, the database minimizes the amount of data it needs to process. This significantly improves performance, even when the instance contains a large number of activities. It reduces the time and resources required to handle pagination, resulting in a much faster and more responsive user experience.
5/...
Next, the database takes the results of the optimized query and fetches the complete details of those activities. At this stage, it also computes the boundaries for each of those 40 activities, checking permissions to determine if the user has access to view them. The database filters out any activities that the user is not allowed to see. Finally, another round of pagination is applied to the filtered activities, ensuring that 1 to 20 activities are returned as the final result.
4/...
Here's how it works: First, the app creates an optimized query that loads only the necessary information needed for pagination. This includes filtering activities based on a specific feed, ensuring that only relevant activities are considered. This optimized query is designed to load less data from disk and thus is faster. It returns just the IDs of one or two pages, which could be up to 40 activities.
3/...
To address this challenge, we implemented deferred joins and boundary checking. Instead of fetching all the data and performing boundary checks for every activity before selecting the ones for a specific page, we defer these operations until after an initial pagination has been applied.
2/...
Here are the details copied from that post:
Why the campground had become so slow, and how we fixed that (browsing feeds is now up to 95% faster!):
When you're browsing your feed on Bonfire, each page on the app displays 20 activities, but there are tens of thousands of activities in total. Fetching all the activities at once, including related data like their authors and threads, and checking permissions for each activity can be slow and inefficient.
1/...
The major issues closed are listed in these two milestones:
https://github.com/bonfire-networks/bonfire-app/milestone/44
https://github.com/bonfire-networks/bonfire-app/milestone/39
🔥🔥 Exciting news! Bonfire 0.9.4 is here! We've revved up user moderation to ensure a safer, more engaging community experience. But that's not all - expect a much faster performance and a smoother experience with our latest improvements! #NewRelease 🚀
Hey @Hyolobrika@berserker.town we've researched possible solutions with @dajb, all in the open :)
You can find more here https://bonfirenetworks.org/zappa/
🔥🔥🔥 New Bonfire release: v0.9.2! We're thrilled to announce the latest update, bringing you a more robust and tested boundary system and polished UI. Check out the Campground ➡️ https://campground.bonfire.cafe/
@adiz@outerkosm.us @Gargron @thomasfuchs @Oceane@social.coop Yes, or the reverse only accepting replies (or other interactions) from one or more of your circles.
@adiz@outerkosm.us @Gargron @thomasfuchs @Oceane@social.coop
From the point of view of someone who started a thread (and my instance) it means "I can't stop you from speaking (to your own followers) but I don't have to listen or spread your voice to others (i.e. other people reading the thread)"
@mike nice feedback, added 🔥 (in the upcoming release)
here a demo: https://www.loom.com/share/78f077b718324ef1a1a1c1ac6b35b9f9