@lina this is exactly what bonfire framework aims to be :)
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
@despens it's an interesting but very sensible and tricky aspect - as an instance is mostly made of data produced by users, which may not agree with admins to migrate or seeing their data exported on another platform without explicit consents. Maintaining the freedom to migrate only on the user level is one of the key to prevent platform #enshittification ... or you were thinking to some lighter / safer way to make it possible?
Needle also comes with two other homegrown libraries: needle_ulid which provides a ULID datatype for Ecto (using ex_ulid) and related helpers, and exto which enables extending Ecto schema definitions in config (especially useful for adding Mixin associations to different schemas)…
---
📣 🏴☠️ Camp! expedition: We have some open bounties to improve bonfire performance :
Read more: https://indieweb.social/@bonfire/112943944096656953
Repository: https://github.com/bonfire-networks/bounties
#ecto #myElixirStatus #elixir
6/6
Besides regular schemas with universal foreign keys (Pointable), Needle provides Virtual for schemas that don’t have any fields on their own, and Mixin for storing common fields that can be re-used by multiple Pointables or Virtuals (eg. if you have multiple types that all have a name/description/body, they can share those and optionally the associated changesets and other logic).
5/6
But what if you don’t just have posts that can be liked, but also videos, images, polls, etc, each with their own table, but probably do not want to have to add liked_video_id, liked_image_id, ad infinitum?
We needed the flexibility to have a foreign key that can reference any referenceable object. We call our system Needle.
A simple example would be a blogging app, which might have a post table with author field that references the user table.
A social network, by contrast, usually requires a graph of objects, meaning objects need to be able to refer to other objects by their ID without knowing their type.
A simple example would be likes, you might have a likes table with liked_post_id field that references the post table.
Needle is one of several libraries we're releasing. Beyond creating extensions for Bonfire (like misinformation labeling or metadata extraction for scientific publications), we often need to build foundational functionality. We package these into reusable libraries for the wider Elixir ecosystem.
When using a relational DB (such an Ecto schema with a Postgres table), usually a foreign key field has to be pre-defined with a reference pointing to a specific field in a specific table.
2/6
Needle is an #elixir library that we have developed to provide universal foreign keys, shared data fields, and virtual & configurable schemas for Ecto.
🔗 Read the docs: https://hexdocs.pm/needle/readme.html
💬 Join the discussion on Elixir Forum: https://elixirforum.com/t/needle-universal-foreign-keys-shared-data-fields-virtual-and-configurable-schemas-for-ecto/65644
@maikel maybe these tutorials can serve as a good intro before digging into the official docs? https://elixirschool.com/en/lessons/ecto/
Hi @restlesshead We were discussing the possibility of including a subscription extension as part of our #mosaic initiative, if there's enough interest - which we plan to roll out in September. For more details about the Mosaic initiative, you can check out:
https://indieweb.social/@bonfire/112908829747492392 )
@wizardfrag have tagged a few here: https://github.com/bonfire-networks/bonfire-app/issues?q=is%3Aopen+label%3A%22Good+first+issue%22+sort%3Acomments-desc
happy to discuss further here or in an issue if one catches your eye…
@wizardfrag hi, that’s good question, we’ll tag a few on GitHub in case you want to try your hand with some smaller issues before (or instead of) the bounties!
@juancommander @d2ns @Lambo @tibosl @PublicKnowledgeProject We've also prototyped ORCID Single Sign-On (SSO) integration for Bonfire, along with a feature that automatically fetches and displays research papers from a user's ORCID account in a dedicated tab on their profile. More here: https://bonfirenetworks.org/posts/openscience_network/
Currently co-designing more features with a network of scientists @open_science@a.gup.pe and keen to collaborate with existing efforts :)
🌍 Fediverse community, we need your support!
We’re funding bounties with the resources we have, but we need YOU to help fuel open-source contributions.
💡 Each bounty now has a dedicated donation page via our Open Collective:
1️⃣ Optimize DB query performance: https://opencollective.com/bonfire-networks/projects/improve-db-query-performance
2️⃣ Boost feed rendering performance: https://opencollective.com/bonfire-networks/projects/feed-render-performance
Join us in creating a cooperative environment where every input and suggestion counts!
#Fediverse #bounties #Crowdfunding #OpenSource #Bonfire
🎯 Calling all Elixir developers to take on a bounty and get compensated for contributing to the commons!
Help us overcome key technical challenges and move closer to the Bonfire v1.0 release.
🔍 Discover more about our Bonfire cooperative bounty program: https://bonfirenetworks.org/posts/camp/
Check out the current bounties and start contributing:
🧁 Improve DB query performance: https://github.com/bonfire-networks/bounties/issues/1
🧁 Improve feed rendering performance: https://github.com/bonfire-networks/bounties/issues/2
Interested in piloting this federated journal platform? We're looking for organisations to co-design and test these features and build others for their custom needs. DM us or email team@bonfire.cafe to learn more about joining the Mosaic program.
🧵 5/5
Finally, dedicated topics views. Topics enable you to categorise content, manage authors, and control visibility and interaction—all crucial for maintaining a structured, magazine-style experience. With boundaries applied to each topic, you can easily manage different levels of access for your content.
🧵 4/5
Next, our streamlined post creation interface will put everything writers and editors need at their fingertips. Easily set boundaries, select topics, write summaries, and schedule posts. You can also include images and other media, apply content warnings, and specify the language, just as you would with standard fediverse posts, ensuring that your content federates as expected.
🧵 3/5
First up: a robust dashboard with detailed metrics. This will give editors and moderators deep insights into their community's engagement, and the ability to define what metrics matter the most for their federated publications like journals or magazines
What indicators would be most useful?
How should engagement be measured in a federated environment?
What data would help understand a message's impact across instances?
🧵 2/5