ivanminutillo

ivanminutillo

Bonfire Networks: An open-source framework for building federated digital spaces

Bonfire is an open source framework for building modular federated digital spaces. It’s built entirely with Elixir, including LiveView (and Surface) for the frontend, and we’re excited to experiment with LiveViewNative to develop native apps.

Think of Bonfire as WordPress for federated social networking. You can set up a digital home for yourself or your community, which can start as a basic blog or microblogging platform (similar to Mastodon—another platform Bonfire federates with, along with dozens of other ActivityPub-enabled apps). From there, you can customise the experience through extensive settings and by toggling extensions to add, replace, or even remove any functionality (since all “core” features are also packaged as small modular extensions). Developers can also create custom extensions for specific use cases and contribute new possibilities to the community.

These extensions aim to enrich and diversify federated networks, going beyond the default microblogging experience. They can enable a range of activities, from organizing events and making decisions to assigning tasks and collaborating on projects.

Bonfire’s mission is to empower communities to avoid platform enshittification and centralisation, giving them the agency to self-host and self-organise in a federated environment and to not be confined to a walled garden.

Relevant links

Official website: https://bonfirenetworks.org

Documentation: https://docs.bonfirenetworks.org

Source code: Bonfire · GitHub

Published libraries: bonfire | Hex

Open Bounties: GitHub - bonfire-networks/bounties

Issues: Milestones - Good first issues

License: AGPL-3.0

Technical stack: ActivityPub, Phoenix with LiveView and Surface, Tailwind CSS, DaisyUI, Alpine.js, Graphql, PostgreSQL, etc.

Chat: This forum, Matrix, or #bonfire on Elixir Slack

Support the project: Bonfire on Open Collective

FAQS

(Read all the FAQs here)

Can I create my own social network with Bonfire? Who controls and moderates the users and content?

Yes, you can create your own social network using Bonfire, much like setting up a forum with Discourse (the software powering the Elixir Forum). As with Discourse, it’s up to the administrators to define the privacy policy, code of conduct, features, themes, and moderation practices. Bonfire includes roles and boundaries (ACLs) to empower moderators and allow users to control who can view, interact with, or collaborate on content.

What makes Bonfire unique is its modular platform, which you can customize and extend to fit your needs, combined with the network effects of federation.

What does “federated” mean?

Unlike centralized platforms, Bonfire allows you to interact with users across different servers, as long as they support the ActivityPub protocol. This means that once you join or set up a Bonfire instance, you can communicate with users on other instances without needing multiple accounts.

Federation refers to the decentralized nature of Bonfire and similar platforms. Instead of being controlled by a single entity, multiple independent servers (instances) can communicate with each other using a common protocol, like ActivityPub.

This is similar to how email works: users on different email providers can still send and receive messages across platforms. In the fediverse, you can join one Bonfire instance and interact with users across the entire network, including those using other apps such as Mastodon, Pixelfed, or Peertube.

What is a modular ecosystem?

Bonfire stands out from other microblogging platforms such as Mastodon by being a modular framework. Each component of Bonfire is open-source and is packaged as an individual building block that can be enabled, disabled, customised, or forked to create specialised apps. This allows you to mix and match features to build tools tailored to your needs while leveraging federation and open data formats.

Bonfire can be compared to WordPress in this way, enabling admins and developers to integrate or create custom features and functionalities, such as:

  • Custom user-controlled algorithms to sort timelines.
  • AI integrations within the social network.
  • Features like event management, calendars, or issue tracking.
  • Custom themes or third-party service integrations.

Bonfire’s modular nature makes it a versatile platform, particularly appealing to developers familiar with Elixir, offering a robust framework to experiment with and build unique digital spaces. Whether you need a basic social app, a collaborative federated blog, a decentralised forum, or a mutual aid platform, the community can continually develop new features to address diverse needs.

Any community already adopting Bonfire?

Bonfire has gained traction on the fediverse, especially among communities looking for more than just microblogging. Notably, scientists are working with Bonfire to develop features for the Open Science network initiative. This effort aims to create a Bonfire-powered digital space for the scientific community, with tools for universities, labs, and collectives to produce, discuss, and share papers in a decentralized environment.

Most Liked

ivanminutillo

ivanminutillo

:fire: Bonfire Social 1.0 release candidate has landed!

Curious about what the fediverse could look like with real community control?

Try out features like custom feeds, nested discussions, shared profiles, circles, and boundary-based permissions — then let us know what breaks or needs improvement.

More details and video demos: Announcing the Bonfire Social 1.0 Release Candidate
TechCrunch article: Bonfire's new software lets users build their own social communities, free from platform control | TechCrunch
TheVerge article: Here are three new apps building out the open social web | The Verge

mayel

mayel

Other than extensions (which extend Bonfire by adding some functionality, such as labeling of misinformation, or federated event planning, etc), we also sometimes find ourselves needing to build lower level functionality which we package into libraries so they can also be used in non-Bonfire projects, I’m listing the ones which are already posted to the forum here (and will be sharing a few more over the following weeks):

  • Arrows: OK-piping plus the ability to pipe into any argument position of the following function (or nested function).
  • Untangle: alternatives for IO.inspect and the macros in Elixir’s Logger to output code location information
  • Iconify: Phoenix components for 100,000+ icons from 100+ icon sets from iconify.design
ivanminutillo

ivanminutillo

Introducing the Bonfire Networks Bounty Programme

We’re happy to announce the launch of the Bonfire Bounty Programme, an initiative to inspire developers to learn and improve the Bonfire framework while contributing to its development. Bonfire is an open-source framework written in Elixir that enables communities to create their own federated digital spaces.
We’ve just kicked off two bounties aimed at addressing current technical blockers. These bounties are crucial for making Bonfire more widely usable and adoptable.

Current open bounties are:

-Improve DB query performance
-Improve feed rendering performance

For comprehensive details about the bounty program, including:

  • Our collaborative approach
  • How to participate
  • Support and resources

Please visit our blog post: Bonfire Expeditions - Camp! A bounty programme

Fediverse thread: Bonfire: “:bullseye: Calling all Elixir developers to take on a boun…” - Indieweb.Social

ivanminutillo

ivanminutillo

We’ve finally launched Bonfire Social 1.0 alongside a crowdfunding campaign on indiegogo

The campaign aims to expand the vision of Bonfire, going beyond microblogging platforms to create community-governed social infrastructure where communities co-design features, not VC-driven roadmaps.

Here some stretch goals we’re building toward:

  • End-to-End Encryption (with Social Web Foundation): bringing MLS-based privacy to the fediverse
  • Collective Moderation (with IFTAS, wreckage/salvage, Princeton HCI, ActivityPub Trust & Safety Taskforce): Cross-instance coordination tools so moderators can collaborate without losing local autonomy
  • Federated Groups & Events (with Princeton HCI, Knowledge Commons, LAUTI): proper organizing tools communities actually need
  • Bluesky Bridging (with A New Social / BridgyFed): end the last migration, connect protocols
  • Mutual Aid Networks (with Mutual Aid Networks, BuyNothing groups): gift economy and resource coordination for local communities
  • Cooperative Hosting (with Co-op Cloud): one-click federated deployment for non-technical communities

The Bonfire toolkit is already powering the Open Science Network initiative, along with beta versions powering mutual aid networks and cultural archives. AGPL-licensed, federated, built to last and built with fullstack Elixir and Phoenix Liveview :blue_heart:

ivanminutillo

ivanminutillo

Sharing the first post in a series where we will share insights, challenges, and progress on our journey of building the native Bonfire apps using LiveView Native

Where Next?

Popular in Discussions Top

bartblast
This thread is dedicated to announcing updates to the Hologram documentation, as well as discussing any ideas for improvements and sugges...
New
krainboltgreene
Today I noticed that when defining a embeds_many the new struct has a default of [] which is confusing since: You can have jsonb[] colu...
New
AstonJ
Phil just posted this on EFS: …interesting that some of the key updates to JavaScript appear heavily influenced by (or blatantly copied...
New
hauleth
Maybe some of you know that there was (is?) something like BERT-RPC which in short is simplified version of External Term Format (also kn...
New
lud
Hello, I just extracted the boilerplate management code that I used to work with in previous years: It is yet another generic input d...
New
szsoppa
Hey folks! For the third year in a row, we’re running the Elixir Survey by Curiosum! It’s been live since yesterday, and 300+ people hav...
New
Sergiusz
Hello everyone, I don’t know if my post is appropriate. If it isn’t, you can delete it. After a year of designing and defining the requ...
New
paulanthonywilson
I like Umbrella projects and pretty much always use them for personal Elixir stuff, especially Nerves things. But I don’t think this is ...
New
jonator
FLAME is basically the dream for running AI agents that need system command access such as coding agents. However, I have concerns about ...
New
karlosmid
The |> operator appears in many languages, mostly in the functional world. F# has essentially the exact same operator, as does OCaml. ...
New

Other popular topics Top

TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
William
I would like to know that is there any online source for learning Phoenix Framework for building E-Commerce Store? Any advantage on build...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
myronmarston
The Elixir Typespec docs show the following syntax for keyword lists in typespecs: # ... | [key: type] # keyword lis...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 27727 240
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New

We're in Beta

About us Mission Statement