<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Bonfire</title>
  <subtitle>Tend to your digital life in community: host your own online space and control your experience at the most granular level.</subtitle>
  <link href="https://bonfirenetworks.org/feed/feed.xml" rel="self"/>
  <link href="https://bonfirenetworks.org/"/>
  <updated>2026-05-15T00:00:00Z</updated>
  <id>https://bonfirenetworks.org/</id>
  <author>
    <name>Bonfire</name>
  </author>
  
  <entry>
    <title>The story of Bonfire&#39;s visual identity</title>
    <link href="https://bonfirenetworks.org/posts/the-story-of-bonfire-s-visual-identity/"/>
    <updated>2021-05-21T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/the-story-of-bonfire-s-visual-identity/</id>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;Everyone carries a history of contamination, purity is not an option.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This short statement by &lt;a href=&quot;https://en.wikipedia.org/wiki/Anna_Tsing&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Anna Tsing&lt;/a&gt; in &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Mushroom_at_the_End_of_the_World&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mushroom at the end of the world&lt;/a&gt; encompasses a lot of the visions and needs that inspired our work on Bonfire.&lt;/p&gt;
&lt;p&gt;We are building this piece of software for us and for the diverse communities we care about, so we strive for diversity and flexibility in every aspect of the Bonfire codebase.&lt;/p&gt;
&lt;p&gt;We want each Bonfire instance to be autonomous and unique in its own particular way, while having a shared purpose with the other bonfires:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To create safe environments for users to inhabit and create their own culture together, while remaining in control of their personal data and experience, and being able to communicate with the fediverse at their own pace and on their own terms.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It was no surprise that words like &lt;strong&gt;contamination&lt;/strong&gt;, &lt;strong&gt;burn&lt;/strong&gt;, &lt;strong&gt;revolution&lt;/strong&gt;, &lt;strong&gt;rebirth&lt;/strong&gt;, &lt;strong&gt;bottom up&lt;/strong&gt;, &lt;strong&gt;diverse&lt;/strong&gt;, &lt;strong&gt;autonomous&lt;/strong&gt;, &lt;strong&gt;nature&lt;/strong&gt; and &lt;strong&gt;ecosystem&lt;/strong&gt; were among the most used during our brainstorming about Bonfire&#39;s visual identity.&lt;/p&gt;
&lt;p&gt;We wanted our visual identity to reflect such ideas without obfuscating itself under an overly sanitised and minimalist design. We enjoy navigating through complexity, without the burning desire to be in control of everything, and wanted to avoid the flat, metallo-plastic, stark, silicon valley style that has dominated the web in recent years.&lt;/p&gt;
&lt;p&gt;Other than a social network, Bonfire is a playground and experimentation platform, we are learning how to take care of it and take care of ourselves - building in the open so that Bonfire can become an ecosystem open to many other peers.&lt;/p&gt;
&lt;p&gt;We had the pleasure to work with &lt;a href=&quot;http://lalberosfregiato.blogspot.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rocco Lombardi&lt;/a&gt;, a talented artist living somewhere near the Bolognese Apennines, who guided us and turned our wishes into meaningful visual representations of the project.&lt;/p&gt;
&lt;p&gt;We asked Rocco to work on our visual identity primarly because of the style and subjects of his artwork. Forests and trees that emerge by scratching the light away from black paper, animals that fight capitalism, all sort of organics - wild and lived entities contaminate his drawings and we wanted that world to contaminate our software as well.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.bigcartel.com/product_images/287784678/Squirrels.jpg?auto=format&amp;amp;fit=max&amp;amp;w=600&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;figcaption class=&quot;block -mt-6 text-base italic text-blueGray-400&quot;&gt;&quot;Squirrels on the air&quot; - Illustration by Rocco Lombardi - &lt;a href=&quot;https://roccolombardi.bigcartel.com/product/squirrels-on-the-air&quot; target=&quot;blank&quot;&gt;Link&lt;/a&gt;&lt;/figcaption&gt;
&lt;p&gt;The end result is very much in tune with our expectations, and we hope you like it too.&lt;/p&gt;
&lt;p&gt;As we&#39;re progressing toward a first release of our software, we are happy to have added this important step and we thank Rocco to have joined us on this journey. :-)&lt;/p&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/brand2.png&quot; /&gt;
</content>
  </entry>
  
  <entry>
    <title>First steps toward federated project coordination</title>
    <link href="https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/"/>
    <updated>2021-07-14T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/</id>
    <content type="html">&lt;h3 id=&quot;tl%3Bdr&quot;&gt;tl;dr &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/#tl%3Bdr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In March 2021, the Bonfire project was awarded a &lt;a href=&quot;https://nlnet.nl/discovery/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&amp;quot;Next Generation Search &amp;amp; Discovery&amp;quot; grant&lt;/a&gt; from NLNet Foundation, and since then the team has been working on a series of Bonfire extensions to help create the next generation of federated software.&lt;/p&gt;
&lt;p&gt;This is the first of a series of posts discussing the development process, work coordination strategies and the challenges we are currently facing.&lt;/p&gt;
&lt;p&gt;One of the funded &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/milestone/7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;milestones&lt;/a&gt; led us to build a project coordination app as a bonfire extension and &lt;a href=&quot;https://bonfirenetworks.org/apps/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flavour&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;but-wait%3A-why-are-you-building-another-project-coordination-app%3F&quot;&gt;But wait: why are you building another project coordination app? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/#but-wait%3A-why-are-you-building-another-project-coordination-app%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/VFz9YMY.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Our coordination tool shares a lot of functionality with most to-do apps out there - you can create lists, add tasks to lists, commit to complete work, set a due date, and so on...&lt;/p&gt;
&lt;p&gt;&lt;em&gt;So how is this different?&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;1)-we-want-to-federate-coordination-between-many-people%2C-groups-and-organisations-on-different-instances&quot;&gt;1) We want to federate coordination between many people, groups and organisations on different instances &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/#1)-we-want-to-federate-coordination-between-many-people%2C-groups-and-organisations-on-different-instances&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;On top of the usual features like writing posts, following users and browsing feeds, a Bonfire instance using the coordination extension will make it possible to create lists and tasks. Users can then favourite, boost, comment, flag and adjust the visibility settings (or in the case of a Bonfire instance, choose the boundaries and circles their lists and tasks are published to).&lt;/p&gt;
&lt;p&gt;As soon as users start publishing tasks, a new type of activity appears in the feeds like below:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/E2Gu7s6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Users can interact with such activities by assigning a task to themselves, searching for tasks that fit with their skills or interests, or following a task to be notified about future discussions or progress.&lt;/p&gt;
&lt;p&gt;Users from any instance can thus start &lt;strong&gt;planning&lt;/strong&gt; together: sofware projects, events, creative collaborations, peer production, etc - without having to leave the app and with the same account they already use.&lt;/p&gt;
&lt;p&gt;A user can decide to create a private list to share with specific people, or open it to all users of their instance or beyond. At every point the user will be able to control both the visibility (who can see todos or comments), as well as the permissions and roles for each list and task (who can add/edit/comment/vote/assign/etc).&lt;/p&gt;
&lt;h3 id=&quot;2)-we-needed-it&quot;&gt;2) We needed it &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/#2)-we-needed-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We are always seeking to improve the coordination between  contributors and the various projects linked to Bonfire. We aim to iterate on the design and build a p2p coordination system that we are happy to work with and would welcome other non-hierarchical and cooperative-minded groups to join us in designing and building these tools together.&lt;/p&gt;
&lt;h3 id=&quot;3)-interoperability&quot;&gt;3) Interoperability &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/#3)-interoperability&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&quot;powered-by-valueflows&quot;&gt;Powered by ValueFlows &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/#powered-by-valueflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;We are building upon a well designed and tested &lt;a href=&quot;https://valueflo.ws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;vocabulary&lt;/a&gt; to bring p2p coordination to a whole new level. In short, ValueFlows does for economic activities what &lt;a href=&quot;https://www.w3.org/TR/activitystreams-core/#introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ActivityStreams&lt;/a&gt; (the main vocabulary of the &lt;a href=&quot;https://activitypub.rocks/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ActivityPub&lt;/a&gt;-powered fediverse) does for social activities. Using these standard vocabularies means that every feature and user interaction can federate not only with other Bonfire instances, but also with instances of other software which implement them.&lt;/p&gt;
&lt;p&gt;Lists (which can represent projects or milestones within a larger project) can include dependencies from other lists, as well as tracking work, but also resources, shared inventories and needs (this ties in to our work around mutual aid, which will be the topic of a future blog post).&lt;/p&gt;
&lt;p&gt;Users can have discussions around a task, as well as record different kinds of economic activities to keep track of physical or digital resources. They can also simply log the amount of hours or the outputs (eg. git commits) of their work on a specific task.&lt;/p&gt;
&lt;p&gt;Furthermore, it will be possible to define formulas (aka &lt;a href=&quot;https://valueflo.ws/appendix/equations.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;value equations&lt;/a&gt;) to help calculate the distribution of value generated by a project to all of its participants, based on their recorded contributions and previous agreements.&lt;/p&gt;
&lt;p&gt;So what looks on the surface like another to-do list app, is actually a small UI layer (the &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_ui_coordination&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bonfire_ui_coordination&lt;/a&gt; extension, with only 1110 lines of code) on top of larger and more general economic extensions which are poised to be used for many different kinds of applications. These are &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_ui_valueflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bonfire_ui_valueflows&lt;/a&gt; (which currently has over 2500 lines of reusable UI components) and &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_valueflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bonfire_valueflows&lt;/a&gt; (sitting at a whopping 16150 lines of database and API schemas and logic), and &lt;a href=&quot;https://bonfirenetworks.org/extensions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;many more&lt;/a&gt;...&lt;/p&gt;
&lt;h4 id=&quot;forgefed&quot;&gt;ForgeFed &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/#forgefed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Besides ValueFlows, we plan to participate in the &lt;a href=&quot;https://forgefed.peers.community/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ForgeFed&lt;/a&gt; effort.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ForgeFed is an upcoming federation protocol for enabling interoperability between version control services. It is built as an extension to the ActivityPub protocol, allowing users of any ForgeFed-compliant service to interact with the repositories hosted on other instances.&lt;br /&gt;
The goal of the project is to support all of the major activities connected to project management, including bug reports, merge requests and notifications across instances.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given that we are coordinating our development using this tool, it makes sense to connect the dots between issue reporting and work coordination, code contributions (version control and merge requests) and economic contributions (along with the related value calculations). We hope to implement ForgeFed functionality to do more of this and interoperate with other tools in the near future.&lt;/p&gt;
&lt;h2 id=&quot;join-us!&quot;&gt;Join us! &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/first-steps-toward-federated-project-coordination/#join-us!&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Would you be interested in trying alpha-stage software and participate in its design and creation process? These tools are still missing some important features, several of which we&#39;ve committed to build as part of other milestones, and we greatly appreciate your input about how to design and build it futher according to your needs. Please get in touch.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Let a thousand bonfires bloom</title>
    <link href="https://bonfirenetworks.org/posts/let-a-thousand-bonfires-bloom/"/>
    <updated>2021-07-20T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/let-a-thousand-bonfires-bloom/</id>
    <content type="html">&lt;h3 id=&quot;tl%3Bdr&quot;&gt;tl;dr &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/let-a-thousand-bonfires-bloom/#tl%3Bdr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In March 2021, the Bonfire project was awarded a &lt;a href=&quot;https://nlnet.nl/discovery/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&amp;quot;Next Generation Search &amp;amp; Discovery&amp;quot; grant&lt;/a&gt; from NLNet Foundation, and since then the team has been working on a series of Bonfire extensions to help create the next generation of federated software.&lt;/p&gt;
&lt;p&gt;This is the second of a series of posts discussing the development process, work coordination strategies and the challenges we are currently facing.&lt;/p&gt;
&lt;p&gt;The first post was about &lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_coordination/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;creating a coordination tool.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The second &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/milestone/10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;funded milestone&lt;/a&gt; was about creating themeable User Interface modules.&lt;/p&gt;
&lt;h2 id=&quot;why-building-themeable-apps-%3F&quot;&gt;Why building themeable apps ? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/let-a-thousand-bonfires-bloom/#why-building-themeable-apps-%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Dopamine and attention manipulation are not inherent properties of a social network. They can be replaced by healthier behaviours and other ways of connecting humans and exploring collective intelligence.&lt;/p&gt;
&lt;p&gt;It is time to reconsider questions like:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What should appear in my feed?&lt;/li&gt;
&lt;li&gt;Are number of likes and followers important to me?&lt;/li&gt;
&lt;li&gt;What do I want to be notified about?&lt;/li&gt;
&lt;li&gt;How do we want to take decisions within our community?&lt;/li&gt;
&lt;li&gt;Does the UX reflects our identity and priorities?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Of course the Bonfire team have opinions about all of this. But we think our opinions are valid mostly for ourselves, and we do not want to impose our views upon others. There is a diversity of valid answers worth exploring.&lt;/p&gt;
&lt;p&gt;Social networking plays a critical role in our lives, and everyone should be able to decide how to define their online identities and how to interact with others, without an app imposing the boundaries of their experience in one way or another.&lt;/p&gt;
&lt;h2 id=&quot;how-we&#39;re-building-it&quot;&gt;How we&#39;re building it &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/let-a-thousand-bonfires-bloom/#how-we&#39;re-building-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A Bonfire &lt;a href=&quot;https://bonfirenetworks.org/apps/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;app (or flavour)&lt;/a&gt; is basically a set of configurations that describes how a bunch of &lt;a href=&quot;https://bonfirenetworks.org/extensions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;extensions&lt;/a&gt; should plug and play together.&lt;/p&gt;
&lt;p&gt;Extensions can include new sections in an existing page (e.g. a widget that shows one&#39;s most used hashtags on a user&#39;s profile page), whole new pages (e.g. a map page that shows me where my friends are located). They can use existing data from any extension (aggregating, transforming and filtering it to create meaningful and new information for the user), or new sets of information stored in the database.&lt;/p&gt;
&lt;p&gt;Imagine installing an identity extension that enables every user to define how to represent themselves online with fined-grained controls.&lt;/p&gt;
&lt;p&gt;Or installing the &lt;a href=&quot;https://bonfirenetworks.org/extension/valueflows.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ValueFlows&lt;/a&gt; extension, which can give the instance economic superpowers: users can now record the production or transfer of any kind of physical or non-tangible resource, keep track of inventories, assign tasks, record work done, and reward the community based on a set of parameters previously defined.&lt;/p&gt;
&lt;p&gt;Each community may need the ValueFlows extension for very different purposes. One instance may only need a &lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_coordination/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;shared todo list&lt;/a&gt;, and the whole economic network idea might be overwhelming for them. A mutual aid network on the other hand, may be looking to define and keep track of different types of economic resources and activities within their community, and would need a more detailed dashboard and set of pages, widgets and relationships between the data produced to deal with such level of complexity.&lt;/p&gt;
&lt;p&gt;That&#39;s how modularity really makes a difference: the ValueFlows extension does not impose a user experience or user interface. Based on each specific use case, users can pick (or create) a compatible UI extension that better fits their exact needs. Using the ValueFlows example, it means that so far we have more than 4 extensions: with data schemas and application logic in &lt;a href=&quot;https://bonfirenetworks.org/extension/valueflows.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bonfire_valueflows&lt;/a&gt;, reusable/customisable UI components in &lt;a href=&quot;https://bonfirenetworks.org/extension/ui_valueflows.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bonfire_ui_valueflows&lt;/a&gt;, todo/coordination UI in &lt;a href=&quot;https://bonfirenetworks.org/extension/ui_coordination.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bonfire_ui_coordination&lt;/a&gt;, mutual aid UI in &lt;a href=&quot;https://bonfirenetworks.org/extension/breadpub.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bonfire_breadpub&lt;/a&gt;...&lt;/p&gt;
&lt;h2 id=&quot;federation-will-be-a-mess&quot;&gt;Federation will be a mess &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/let-a-thousand-bonfires-bloom/#federation-will-be-a-mess&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Yes, and it will be fun!&lt;/p&gt;
&lt;p&gt;Each instance will likely have to deal with different and sometime unknown data types that will come through federation from users of other instances.&lt;/p&gt;
&lt;p&gt;Imagine an extension for book lovers, used to catalog, recommend, and review books. It will likely have a specific way to represent such activities in feeds with a set of actions to perform over them (add to reading list, review, reply...).&lt;/p&gt;
&lt;p&gt;Other instances may not have that extension installed, so they will have to decide how to handle unknown activities, if and how display them (this is because on the &amp;quot;fediverse&amp;quot;, users from different instances running different software can all follow each other).&lt;/p&gt;
&lt;p&gt;An instance (or individual user) could choose to display the unknown activities, using a preview widget contributed by the authors of the book lovers extension (and added to a shared Bonfire extension used by all instance, such as &lt;a href=&quot;https://bonfirenetworks.org/extension/social.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;bonfire_social&lt;/a&gt;), or deal with unknown activities using a default component which shows only the main information (such as a title, summary and link) formatted in a standard way, or just not displaying extra activities in feeds.&lt;/p&gt;
&lt;p&gt;That&#39;s quite a new usability challenge, which seems inevitable when dealing with the fediverse and open networks in general, and one we are embracing as a way of welcoming and encouraging diversity and plurality - rather than hiding them away for the sake of &amp;quot;clean UX&amp;quot;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>A UI toolbox for customizable social network apps</title>
    <link href="https://bonfirenetworks.org/posts/a-ui-toolbox-for-customizable-social-network-apps/"/>
    <updated>2021-07-23T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/a-ui-toolbox-for-customizable-social-network-apps/</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://bonfirenetworks.org/extension/ui_social.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire:UI:Social&lt;/a&gt; is an extension that includes the main User Interfaces (both assembled pages and single components) required to have a fully working federated social network app.&lt;/p&gt;
&lt;p&gt;The UI:Social extension is meant to be used by extensions like &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_social&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire:Social&lt;/a&gt; and &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_me&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire:Me&lt;/a&gt;, which both provide logic for the UI to work with, and define the routes and top-level views which in turn embed UI:Social components.&lt;/p&gt;
&lt;p&gt;UI:Social also provides components used by other extensions including: &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_common&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire:Common&lt;/a&gt;, &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_search&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire:Search&lt;/a&gt;, &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_tag&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire:Tag&lt;/a&gt;, &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_boundaries&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire:Boundaries&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;stack&quot;&gt;Stack &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/a-ui-toolbox-for-customizable-social-network-apps/#stack&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;So far, Bonfire UI extensions are built with the PETALS stack (note that is not a requirement), which means:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.phoenixframework.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Phoenix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://elixir-lang.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Elixir&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tailwindcss.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TailwindCSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://alpinejs.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Alpine.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/phoenixframework/phoenix_live_view#readme&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiveView&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://surface-ui.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Surface&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&#39;re currently in the middle of a refactor to convert all components and templates from LiveView to Surface, which is a server-side rendering component library (built on top of Phoenix and LiveView) that inherits a lot of design patterns from popular JS framework like Vue.js and React, while being almost JavaScript-free compared to common SPAs.&lt;/p&gt;
&lt;h3 id=&quot;scaffolding&quot;&gt;Scaffolding &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/a-ui-toolbox-for-customizable-social-network-apps/#scaffolding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The relevant folders are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bonfire-networks/bonfire_ui_social/tree/main/lib/web/components&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Components&lt;/a&gt;: Surface stateless and stateful components.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bonfire-networks/bonfire_ui_social/tree/main/lib/web/layout&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Layout&lt;/a&gt;: Main app templates, they include guest, logged or specific view templates (eg. the setting layout)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bonfire-networks/bonfire_ui_social/tree/main/lib/web/views&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Views&lt;/a&gt;: The main pages that are rendered when navigating to a specific route&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bonfire-networks/bonfire_ui_social/tree/main/test&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Test&lt;/a&gt;: All the unit tests for the specific module.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;other-resources&quot;&gt;Other resources &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/a-ui-toolbox-for-customizable-social-network-apps/#other-resources&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/posts/let_thousand_bonfires_bloom/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;A blog post that introduces the concept of themeable bonfire apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Notes on the first neapolitan meeting</title>
    <link href="https://bonfirenetworks.org/posts/notes-on-the-first-neapolitan-meeting/"/>
    <updated>2021-10-14T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/notes-on-the-first-neapolitan-meeting/</id>
    <content type="html">&lt;div class=&quot;p-4 text-base text-gray-200 rounded-lg bg-blueGray-600&quot;&gt;
  The image above is a photo taken at the &lt;a href=&quot;http://www.exasilofilangieri.it/&quot; target=&quot;blank&quot;&gt;ex-asilo filangeri&lt;/a&gt;, one of the Neapolitan urban commons. &lt;br /&gt; It is a neapolitan way of saying which means: &lt;i&gt;&quot;every head is a court&quot;&lt;/i&gt;. This article is the first of a set of posts about an hopeful fruitful interaction with a group of neapolitan activists interested in experimenting with bonfire.
&lt;/div&gt;
&lt;p&gt;As we’re approaching a new phase in which bonfire is not anymore a chimera among few devs, but it’s starting to come together as a nice tool, some of us are anxious to make raids in the analogic world and spread the big news: &lt;strong&gt;bonfire exists!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Today I visited Naples for the first time after the beginning of the pandemic. I met some friends and discussed about how bonfire could be useful to their communities and practices and how communities and practices can be useful to bonfire.&lt;/p&gt;
&lt;p&gt;There’s many reasons I always thought at Naples as the first place to discuss a possible bonfire adoption, all of them rotate around a single yet powerful concept: contamination.&lt;br /&gt;
In my experience as a developer, contamination is one of the most feared and therefore dismissed aspect when building a software. Speaking of bonfire, being able to respond and adapt to contamination is its  core value proposition. Needless to say, Naples is the shangri-la of contaminations and I am lucky enough to have friends who navigate this ocean of contaminations and contradictions in a superb way.&lt;br /&gt;
When I cite Naples i&#39;m referring to participants of the &lt;a href=&quot;https://commonsnapoli.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;urban commons network&lt;/a&gt;. Activists that most of the time cross different places, communities and initiatives. In front of the oldest restaurant of Via dei Decumani, we started wondering about the possibility of lighting a few bonfires in Naples.&lt;/p&gt;
&lt;p&gt;Below a list of not exhaustive topics we brainstormed during the day:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;There is a general tension to restore practices after the pandemic&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;It&#39;s hard for a community already used to communicate/work with a specific software (even if closed source or whatever) to shift to a different one. It&#39;s a lot about changing habits, and picking new habits requires trust, energy, time, mental effort...&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;For some users, dealing with huge and complex apps is an overwhelming experience - sometime they just need a little app that solves a functional/pressing issue, leaving everything else aside.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Sometime community members have difficulties using even the most trivial/hegemonic/widespread apps like whatsapp, facebook or google drive - or they feel repulsion for the digital world at scale, how could it be possible to not exclude them from the community flow of discussions / coordinations / decisions that takes place online ?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Different participants have different priorities and needs about how to be part and be involved with each community and such differences are reflected in the tools they are up to adopt and how they want to use them.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Nonetheless it sounds to be a good historic moment for the neapolitan network to bring back the discussion about adopting a platform for the urban commons network.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Speaking of using bonfire for coordinating work and productions - there&#39;s an on-going, crucial even if sometime stale conversation that gravitate around income, activism, distribution of value and commons goods.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Is it possible to envision and approach a software as a common good itself rather than a mere service/product?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What would it mean for a software to be a common good?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;In which ways a community can take care of a software?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What would imply for a software to be a common good from the governance perspective?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How bonfire can foster co-design and community-driven development?&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;suggestions-for-next-extensions&quot;&gt;Suggestions for next extensions &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/notes-on-the-first-neapolitan-meeting/#suggestions-for-next-extensions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Current bonfire extensions: Social, Kanban and Offers/Needs - even if still under development - caught the eye because in a way or another they answered current needs of different communities.&lt;br /&gt;
Nonetheless during our conversations two new extensions were cited several times as worth to note.&lt;/p&gt;
&lt;h3 id=&quot;federated-calendar&quot;&gt;Federated calendar &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/notes-on-the-first-neapolitan-meeting/#federated-calendar&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;It&#39;s hard to coordinate initiatives among different communities and organize events that do not cross existing ones. At today, this requires lot of chats and schedule changes at last moment. Having a federated calendar would allow activists to have a general view across everything that&#39;s happening within the network. This would greatly enhance the activities planning and coordination.&lt;br /&gt;
The calendar should span across different levels: it would allow users to view all the activities planned in the wider network and zoom in/out to specific area/communities, as well as filter for specific topics or date range. We didn&#39;t investigate further how such federated calendar should work, but it&#39;s all good food for thoughts.&lt;/p&gt;
&lt;h3 id=&quot;federated-governance&quot;&gt;Federated governance &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/notes-on-the-first-neapolitan-meeting/#federated-governance&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;How to take decisions and how to implement a governance system that reflect the community vision was also briefly touched during the brainstorming session. At present some experimentations were made using Framavox and loomio - mostly as a sentiment analysis tool when discussing new proposals.&lt;/p&gt;
&lt;h2 id=&quot;where-to-go-next&quot;&gt;Where to go next &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/notes-on-the-first-neapolitan-meeting/#where-to-go-next&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;During our chats we didn&#39;t pretend to answer any of the questions that arose - neither It was the scope of this post. We agreed to meet again in a couple of weeks - bringing more minds to the table - and keep the discussion going as well as start playing with bonfire.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Announcing the Zappa project</title>
    <link href="https://bonfirenetworks.org/posts/announcing-the-zappa-project/"/>
    <updated>2021-12-26T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/announcing-the-zappa-project/</id>
    <content type="html">&lt;p&gt;We are pleased to announce that Bonfire has been awarded a grant from the &lt;a href=&quot;https://culturalfoundation.eu/stories/culture-of-solidarity-fund/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Culture of Solidarity Fund&lt;/a&gt; to support cross-border cultural initiatives of solidarity in times of uncertainty and &amp;quot;infodemic&amp;quot;.&lt;/p&gt;
&lt;p&gt;The grant will be used to release a beta version of &lt;a href=&quot;https://bonfirenetworks.org/bonfire_classic/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire Social&lt;/a&gt; and to develop Zappa – a custom bonfire extension to empower communities with a dedicated tool to deal with the coronavirus &amp;quot;infodemic&amp;quot; and online misinformation in general.&lt;/p&gt;
&lt;h2 id=&quot;the-zappa-extension&quot;&gt;The Zappa extension &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-zappa-project/#the-zappa-extension&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://www.rollingstone.it/wp-content/uploads/2017/09/frank-zappa.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Zappa will be powered by user communities&#39; assessments of content (links, news, videos, pictures) to develop common practices and patterns to fight misinformation.&lt;/p&gt;
&lt;p&gt;These assessments will then be used to train experimental artificial intelligence engines.&lt;/p&gt;
&lt;p&gt;The user ratings (along with optional input from AI predictions) will generate decentralised &amp;quot;Zappa scores&amp;quot; which may help users classify and act upon content based on each community’s methodology and preferences.&lt;/p&gt;
&lt;p&gt;We didn&#39;t go much further in outlining how Zappa might work, for the time being preferring to &lt;a href=&quot;https://dougbelshaw.com/ambiguity/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;stay with ambiguity&lt;/a&gt; as much as possible, because while we have some ideas, we want to co-design it together with interested communities and we welcome you to join the discussion and participate.&lt;/p&gt;
&lt;h2 id=&quot;how-to-participate-in-the-zappa-project%3F&quot;&gt;How to participate in the Zappa project? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-zappa-project/#how-to-participate-in-the-zappa-project%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;We will keep track of our work and deliverables in our &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/milestones&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;milestones&lt;/a&gt;, which includes running sessions to come up with &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/milestone/12&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;user stories&lt;/a&gt; that will guide development.&lt;/li&gt;
&lt;li&gt;Feedback and open discussions will take place on the &lt;a href=&quot;https://socialhub.activitypub.rocks/t/discussing-zappa-a-bonfire-extension-to-deal-with-online-misinformation/2187&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zappa topic&lt;/a&gt; on the SocialHub forum (we may create more topics when needed)&lt;/li&gt;
&lt;li&gt;You are welcome to join the &lt;a href=&quot;https://matrix.to/#/#bonfire-networks:matrix.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire chat&lt;/a&gt; and engage with the team&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As always, we will report progress and news here on the blog, so stay tuned!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Countering misinformation in federated social networks, an introduction to the Zappa project</title>
    <link href="https://bonfirenetworks.org/posts/countering-misinformation-in-federated-social-networks-an-introduction-to-the-zappa-project/"/>
    <updated>2022-02-08T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/countering-misinformation-in-federated-social-networks-an-introduction-to-the-zappa-project/</id>
    <content type="html">&lt;div class=&quot;my-3 alert alert-info&quot;&gt;
&lt;div&gt;This post was originally published on Doug Belshaw&#39;s &lt;a class=&quot;mx-2&quot; href=&quot;https://dougbelshaw.com/blog/2022/02/08/zappa-project/&quot; target=&quot;blank&quot;&gt; Open Thinkering &lt;/a&gt; blog&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;One thing I’ve learned from spending all of my adult life online and being involved in lots of innovation projects is that you can have the best bookmarking system in the world, but it means nothing if you don’t &lt;strong&gt;do&lt;/strong&gt; something with the stuff you’ve bookmarked. Usually, for me, that means turning what I’ve filed away into some kind of blog post. It’s basically the reason &lt;a href=&quot;https://thoughtshrapnel.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Thought Shrapnel&lt;/a&gt; exists.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Last week I started some new work with the Bonfire team called the &lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_cos/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zappa project&lt;/a&gt;. Bonfire is a fork of CommonsPub, the underlying codebase for MoodleNet.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Self-host your online community and shape your experience at the most granular level: add and remove features, change behaviours and appearance, tune, swap or turn off algorithms. You are in total control.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bonfire is modular, with different extensions allowing communities to customise their own social network. The focus of Zappa is shaped by a grant from the Culture of Solidarity Fund.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The grant will be used to release a beta version of Bonfire Social and to develop Zappa – a custom bonfire extension to empower communities with a dedicated tool to deal with the coronavirus “infodemic” and online misinformation in general.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The announcement blog post talks of “experimental artificial intelligence engines” and “Zappa scores” which may be longer-term goals, while my job is to talk to people with real-world needs &lt;em&gt;right now&lt;/em&gt;. As I’ve learned from being involved in quite a few innovation projects over the last 20 years, there’s a sweet spot between what’s useful, theoretically sound, and technically achievable.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;Last week, I met with &lt;a href=&quot;https://ivan.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Ivan&lt;/a&gt; to try and do some definition of user groups and the initial scope of the project. It’s easy to think that the possible target audience is ‘everyone’ but it’s of much more value to think about who the Zappa project is likely to be useful for in the near future.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/whimsical.png&quot; alt=&quot;Whimsical preview&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Priority areas for stakeholders, user groups, and themes&lt;br /&gt;
The above Whimsical board shows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a list of people we can/should speak to (we’ve spoken with two orgs so far)&lt;/li&gt;
&lt;li&gt;themes of which we should be aware/cognisant&lt;/li&gt;
&lt;li&gt;groups of people we should talk with&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The latter two lists are prioritised based on our current thinking and, as you can see, it’s biased towards action, towards those who don’t have merely an academic interest in the Zappa project, but who have some skin in the anti-misinformation game.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;A note in passing: many people use ‘misinformation’ and ‘disinformation’ as near-synonyms of one another. But, even in common usage, it’s clear that they have an important difference in meaning.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;We’d say, for example, that someone was ‘misinformed’, in which case their lack of having the correct information wouldn’t necessarily be their fault. On the other hand, we might talk about state actors waging a ‘disinformation’ campaign, which very much &lt;strong&gt;would&lt;/strong&gt; be intentional, and probably focused on creating a mixture of fear, uncertainty, and/or doubt.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The line between misinformation and disinformation can be blurry, but it’s probably helpful to conceptualise what we’re doing in the terms of the grant: to help “empower communities with a dedicated tool to deal with the coronavirus ‘infodemic’ and online &lt;strong&gt;misinformation&lt;/strong&gt; in general”.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;One of the resources that I’ve found particularly helpful (and which I wish I’d seen before presenting on &lt;a href=&quot;https://archive.org/details/ithaka-next-wave-part-3-truth-lies-and-digital-fluency&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Truth, Lies &amp;amp; Digital Fluency&lt;/a&gt; a couple of years ago) is &lt;a href=&quot;https://firstdraftnews.org/articles/fake-news-complicated/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fake news. It’s complicated&lt;/a&gt;. Its author, Claire Wardle from &lt;em&gt;First Draft&lt;/em&gt;, lays out &lt;strong&gt;7 Types of Mis- and Disinformation&lt;/strong&gt; on a spectrum from ‘satire or parody’ (which some wouldn’t even conceptualise as misinformation) through ‘fabricated content’ (which most people would definitely consider disinformation).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/7-types-misinformation.jpeg&quot; alt=&quot;7 types of misinformation&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Some of the differences between these types can be quite nuanced, and so I found the &lt;strong&gt;Misinformation Matrix&lt;/strong&gt; in the post really useful for looking at the reasons for the misinformation being published in the first place. These range from sloppy journalistic practices, through to flat-out propaganda.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/misinformation-matrix.jpeg&quot; alt=&quot;Misinformation matrix&quot; /&gt;&lt;/p&gt;
&lt;p&gt;What the user research we’re doing at the moment is focused upon is what types of misinformation human rights organisations, scientists, and other front-line orgs are suffering from, how and where these are manifested, and what they’ve tried to do about it.&lt;/p&gt;
&lt;p&gt;So far, we’ve discovered that countering misinformation can be a &lt;em&gt;huge&lt;/em&gt; time suck for people who are often volunteering for charities, non-profits, or loosely-organised groups. It seems that some areas of the world seem to suffer more than others, and particular platforms are currently doing worse than others. All of them could, of course, could do much better.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We’re still gathering people and organisations for this project.&lt;/strong&gt; So if, based on the above, you know someone who you think it might help us to talk to, then please get in touch! You can leave a comment below, or get in contact via &lt;a href=&quot;mailto:hello@dynamicskillset.com&quot;&gt;email&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Some interesting findings from user research for the Zappa project (so far!)</title>
    <link href="https://bonfirenetworks.org/posts/some-interesting-findings-from-user-research-for-the-zappa-project-so-far/"/>
    <updated>2022-02-18T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/some-interesting-findings-from-user-research-for-the-zappa-project-so-far/</id>
    <content type="html">&lt;div class=&quot;my-3 alert alert-info&quot;&gt;
&lt;div&gt;This post was originally published on Doug Belshaw&#39;s &lt;a class=&quot;mx-2&quot; href=&quot;https://dougbelshaw.com/blog/2022/02/18/user-research-zappa/&quot; target=&quot;blank&quot;&gt; Open Thinkering &lt;/a&gt; blog&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;One of the things about working openly is, fairly obviously, sharing your work as you go. This can be difficult for many reasons, not least because of the human tendency toward narrative, to completed stories with start, middle, and end.&lt;/p&gt;
&lt;p&gt;The value of resisting this tendency and &lt;a href=&quot;https://ambiguiti.es/sitting-with-ambiguity/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;sitting in ambiguity&lt;/a&gt; for a while is that allows for &lt;a href=&quot;https://www.youtube.com/watch?v=NugRZGDbPFU&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;slow hunches&lt;/a&gt; to form and &lt;a href=&quot;http://discours.es/2016/increasing-your-serendipity-surface/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;serendipitous connections&lt;/a&gt; to be made. So it is with user research I’m doing as part of the &lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_cos/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zappa project&lt;/a&gt; for the Bonfire team. We need time to talk to lots of different types of people who meet our criteria, and to spend some time reflecting on what they’ve told us.&lt;/p&gt;
&lt;p&gt;As I wrote in my &lt;a href=&quot;https://bonfirenetworks.org/posts/zappa-project/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;previous post&lt;/a&gt; about the project, we’d identified some of the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a list of people we can/should speak with&lt;/li&gt;
&lt;li&gt;themes of which we should be aware/cognisant&lt;/li&gt;
&lt;li&gt;groups of people we should talk with&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Inevitably, since this initial work, we’ve come up with some obvious gaps in the people we should speak to (UX designers!). The people we’ve spoken with have recommended other people to contact as well as avenues of enquiry to follow. This is such an interesting topic that we need to be careful that the project doesn’t grow legs and run away with us…&lt;/p&gt;
&lt;h3 id=&quot;10-interesting-things-people-have-told-us-so-far&quot;&gt;10 interesting things people have told us so far &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/some-interesting-findings-from-user-research-for-the-zappa-project-so-far/#10-interesting-things-people-have-told-us-so-far&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We haven’t started synthesising any of what our user research participants have said so far, but as we’re around halfway through the process of conducting interviews, I thought it might be worth sharing 10 interesting things they’ve told us. These are not any any particular order.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Countering misinformation is time-consuming&lt;/strong&gt; — to fact-check articles takes time and by the time the result is published the majority of the people who were going to read it have done so anyway.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Chat apps&lt;/strong&gt; — public social networks are blamed for not dealing with mis/disinformation but some of the most problematic stuff is being shared via messaging services such as WhatsApp and Telegram.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Difference between human and bot accounts&lt;/strong&gt; — it’s possible to reason with a human being but impossible to do with a bot account.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metaphor of adblock list&lt;/strong&gt; — a way of reducing the burden of moderation on administrators and moderators* of a federated social network instance by creating a more systematised version of something like the #Fediblock hashtag.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Subscribing to moderator(s)&lt;/strong&gt; — delegating moderation explicitly to another user, perhaps by automatically blocking/muting whatever they do.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Different categories of approaches&lt;/strong&gt; — for example, reputational solutions that deal with trusted parties, technical solutions that prove something hasn’t been tampered with, and process-based solutions which make transparent the context in which the content was created and transmitted.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Visualising connections&lt;/strong&gt; — visualising the social graph could make it easier to spot outlier accounts which may be less trusted than those that lots of your other contacts are connected to.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fact-checking platforms can be problematic&lt;/strong&gt; — they promote an assumption that there is a single ‘Truth’ and one version of events. They can be useful in some instances but also be used to present a distorted view of the world.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frictionless design&lt;/strong&gt; — by ‘decomplexifying’ the design of user interfaces we hide the system behind the tool and the trade-offs that have been made in creating it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disappearing content&lt;/strong&gt; — content that no longer exists can be a problem for derivative works / articles / posts that reference and rely on it to make valid claims.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It’s been fascinating to see the different ways that people have approached our conversations, whether from a technical, design, political, scientific, or philosophical perspective (or, indeed, all five!)&lt;/p&gt;
&lt;h3 id=&quot;next-steps&quot;&gt;Next steps &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/some-interesting-findings-from-user-research-for-the-zappa-project-so-far/#next-steps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We’ve still got some people to talk with next week, but we are always looking to ensure a diverse range of user research participants with a decent geographical spread. As such, we could do with some help identifying people &lt;strong&gt;located in Asia&lt;/strong&gt; (yes, the whole continent!) who might be interested in talking about their experiences, as well as people from &lt;strong&gt;minority and historically under-represented backgrounds&lt;/strong&gt; in tech.&lt;/p&gt;
&lt;p&gt;In addition, we could also do with talking with &lt;strong&gt;people who have suffered from mis/disinformation&lt;/strong&gt;, any &lt;strong&gt;admins or moderators of federated social network instances&lt;/strong&gt;, and &lt;strong&gt;UX designers who have a particular interest in mis/disinformation&lt;/strong&gt;. You can get in touch via the comments below or at: &lt;a href=&quot;mailto:hello@dynamicskillset.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hello@dynamicskillset.com&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>First version of report published sharing findings from Zappa project user research</title>
    <link href="https://bonfirenetworks.org/posts/first-version-of-report-published-sharing-findings-from-zappa-project-user-research/"/>
    <updated>2022-03-05T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/first-version-of-report-published-sharing-findings-from-zappa-project-user-research/</id>
    <content type="html">&lt;div class=&quot;my-3 alert alert-info&quot;&gt;
&lt;div&gt;This post was originally published on Doug Belshaw&#39;s &lt;a class=&quot;mx-2&quot; href=&quot;https://dougbelshaw.com/blog/2022/03/05/zappa-project-report/&quot; target=&quot;blank&quot;&gt; Open Thinkering &lt;/a&gt; blog&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Over the last month, I’ve been working with the &lt;a href=&quot;https://bonfirenetworks.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire&lt;/a&gt; team to perform some initial user research on the &lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_cos/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zappa project&lt;/a&gt;. The aim of the project, funded by a grant from the &lt;a href=&quot;https://culturalfoundation.eu/stories/culture-of-solidarity-fund/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Culture of Solidarity Fund&lt;/a&gt;, is to empower communities with a dedicated tool to deal with the coronavirus “infodemic” and online misinformation in general.&lt;/p&gt;
&lt;p&gt;We ended up speaking with 11 individuals and organisations, and have synthesised our initial user research into the first version of a report which is now available.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://whimsical.com/report-DEiDgckNvj6hVvno9au7FP&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;📄 Click here to access the report&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Notes on our first usability testing round</title>
    <link href="https://bonfirenetworks.org/posts/notes-on-our-first-usability-testing-round/"/>
    <updated>2022-05-21T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/notes-on-our-first-usability-testing-round/</id>
    <content type="html">&lt;p&gt;On May 10th &lt;a href=&quot;https://bonfire.cafe/@Bonfire/108278057442956190&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;we published a toot&lt;/a&gt; asking for volunteers to dive into our upcoming beta of Bonfire Social, by participating in some usability testing sessions. It was such a great opportunity to see how a diverse range of people interacted and used our platform, what they found easy and familiar and what instead felt weird, clunky or buggy.&lt;/p&gt;
&lt;p&gt;We ended up with a valuable list of suggestions, feature proposals, bugs and some appreciations for the work done so far :-)&lt;/p&gt;
&lt;p&gt;A huge thanks to &lt;a href=&quot;https://fosstodon.org/@dajbelshaw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@dougbelshaw&lt;/a&gt;, &lt;a href=&quot;https://social.coop/@django&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@django&lt;/a&gt;, &lt;a href=&quot;https://mastodon.la/@edumerco&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@edumerco&lt;/a&gt;, @asteroidrainfall, @bea for their time, feedback and sharp observations &amp;lt;3.&lt;/p&gt;
&lt;h2 id=&quot;participants&quot;&gt;Participants &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/notes-on-our-first-usability-testing-round/#participants&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This first round included 5 testers (we picked this number based on this &lt;a href=&quot;https://www.nngroup.com/articles/usability-testing-101/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NNG article&lt;/a&gt; about usability testing). Though small, the group was diverse enough in terms of background, interests and geography. It included educators, activists and developers, among which some were already well versed with the fediverse, while others discovered it recently.&lt;/p&gt;
&lt;p&gt;They all were interested in using Bonfire via servers operated by and for themselves, their family or their local community. Some of them were even keen to set up and maintain an instance.&lt;/p&gt;
&lt;h2 id=&quot;main-takeaways&quot;&gt;Main takeaways &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/notes-on-our-first-usability-testing-round/#main-takeaways&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We ended up creating an ad-hoc &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues?q=label%3Abeta-testing+&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;beta-testing tag&lt;/a&gt; on our issue tracker to keep track of the bugs and feedback that came out of the sessions.&lt;/p&gt;
&lt;p&gt;Among all the amazing input we received, we found some that were shared by the majority of testers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It should be more obvious to know how to tailor and extend your instance to go beyond the standard microblogging use case.&lt;/li&gt;
&lt;li&gt;Trending topics are a great way to discover the network. They play an important role in how users search, find, avoid, or subscribe to certain topics and people.&lt;/li&gt;
&lt;li&gt;The text input for writing a post is too small to go beyond microblogging. It does not encourage deeper and structured conversations. We should definitively provide an option for distraction-free writing.&lt;/li&gt;
&lt;li&gt;It would be awesome to have federated groups.&lt;/li&gt;
&lt;li&gt;It would be useful to have moderation and instance rules shown on the homepage, together with other meaningful information about the instance.&lt;/li&gt;
&lt;li&gt;It would help to have a wizard to guide new users on their first time using the platform or participating in the fediverse.&lt;/li&gt;
&lt;li&gt;Pinning one or more posts to the top of your timeline is a simple but powerful way to customise one&#39;s profile.&lt;/li&gt;
&lt;li&gt;It would help to have more flexibility on how users define the audience of their posts.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;final-thoughts&quot;&gt;Final thoughts &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/notes-on-our-first-usability-testing-round/#final-thoughts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Beta testing is not only a great way to spot bugs, but can also be powerful in finding more inclusive and participatory ways of co-designing the platform itself.&lt;/p&gt;
&lt;p&gt;We therefore plan to continue with iterative usability testing sessions on a monthly basis - feel free to contact us if you want to join in :)&lt;/p&gt;
&lt;p&gt;Thanks also to the &lt;a href=&quot;https://culturalfoundation.eu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Cultural Foundation&lt;/a&gt;, who helped fund our work on the beta milestones.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Not Just &#39;Yet Another Microblog&#39;</title>
    <link href="https://bonfirenetworks.org/posts/not-just-yet-another-microblog/"/>
    <updated>2022-06-18T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/not-just-yet-another-microblog/</id>
    <content type="html">&lt;p&gt;We’re days away now from the beta release of our &lt;a href=&quot;https://bonfirenetworks.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire&lt;/a&gt; federated app toolkit. So close to the launch, we thought it’d be a great opportunity to write to future beta users - especially those whose first impressions of it might be something along the lines of: &lt;em&gt;wait, this looks like just another microblogging app! haven&#39;t we already got enough of those?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Well, our reasoning is that everything is social. Political activities are social. Economic activities are social. Artistic activities are social. The way we work and coordinate activities... is social. That&#39;s why at the heart of Bonfire is a set of social components that underpins what is yet to come.&lt;/p&gt;
&lt;h2 id=&quot;bonfire-is-a-toolkit-for-assembling-federated-apps&quot;&gt;Bonfire is a toolkit for assembling federated apps &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/not-just-yet-another-microblog/#bonfire-is-a-toolkit-for-assembling-federated-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In a &lt;a href=&quot;https://bonfirenetworks.org/posts/let_thousand_bonfires_bloom/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;previous post&lt;/a&gt;, we wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Social networking plays a critical role in our lives, and everyone should be able to decide how to define their online identities and how to interact with others, without an app imposing the boundaries of their experience in one way or another.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;An app built with Bonfire is a preset configuration describing how a collection of extensions should plug and play together. And users can then add more extension to end up with an app that fits their specific needs. For example, imagine installing an extension that adds end-to-end encryption to the messaging functionality, or an extension that adds a calendar view showing any-date based information from other extensions (like the kanban app, or events federated from &lt;a href=&quot;https://joinmobilizon.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mobilizon&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;With this beta launch we&#39;re looking to test both the user experience of the social components of Bonfire, and also to ask for help (from the &lt;a href=&quot;https://activitypub.rocks/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ActivityPub&lt;/a&gt; savvy people who are willing to set up test instances) to ensure Bonfire instances are first-class citizens of the Fediverse. By this we mean that federation works as expected with other networks such as &lt;a href=&quot;https://joinmastodon.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mastodon&lt;/a&gt;, &lt;a href=&quot;https://joinpeertube.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Peertube&lt;/a&gt;, and &lt;a href=&quot;https://pixelfed.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Pixelfed&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;other-apps&quot;&gt;Other apps &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/not-just-yet-another-microblog/#other-apps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We have plenty of ideas and work-in-progress for Bonfire apps within the existing team and the wider network of people and organisations around us. For example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_coordination/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Kanban&lt;/a&gt; - federated project coordination.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/tags/zappa/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zappa&lt;/a&gt; - empowering communities to tackle online misinformation.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/posts/notes_on_neapoletan_meeting/#suggestions-for-next-extensions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Offers &amp;amp; needs&lt;/a&gt; - a federated way for people to share offers and requests, as one of the many apps that will use &lt;a href=&quot;https://valueflo.ws/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ValueFlows&lt;/a&gt;, an open protocol for economic activities&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And we&#39;d love to see many other apps emerge, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Collective decision-making - perhaps in a similar way to &lt;a href=&quot;https://ukuvota.world/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Ukuvota&lt;/a&gt; or &lt;a href=&quot;https://www.loomio.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Loomio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Federated calendar &amp;amp; scheduling tool - to help plan and coordinate intitiatives across different communities and timezones.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&#39;re also excited to see ideas coming from the community, including designers or developers who may have the expertise to collaborate on making some of these ideas into reality!&lt;/p&gt;
&lt;h2 id=&quot;customisation&quot;&gt;Customisation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/not-just-yet-another-microblog/#customisation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Everything in Bonfire is customisable at one level or another, a nice example is how the whole UI is themeable, but it goes much further than that.&lt;/p&gt;
&lt;p&gt;In general, we&#39;re getting into the habit where any hesitation or disagreement about a feature is used as an opportunity to add a &lt;em&gt;user setting&lt;/em&gt; for it, meaning that the user is the one to decide how it should work. Developers and instance admins still hold power in setting the defaults, but ultimately it should be up to the people using Bonfire.&lt;/p&gt;
&lt;h3 id=&quot;%22forkability%22&quot;&gt;&amp;quot;Forkability&amp;quot; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/not-just-yet-another-microblog/#%22forkability%22&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;From the beginning, we&#39;ve built Bonfire to be extremely customisable and configurable. One of the great things about Free Software is the ability to fork the project and take it in your own direction. However, a fork of a big complex app is a lot of work to maintain by one person or a small group, let alone someone who isn&#39;t very technical (or not experienced in the particular tech stack).&lt;/p&gt;
&lt;p&gt;By separating the code in dozens of different extensions (each in their own git repository), the maintainance burden is greatly reduced. By putting data models, backend functionality and user interfaces in separate extensions, it’s easier to, for example, fork an UI extension to customise the experience (or create a completely different one) while retaining the same functionality.&lt;/p&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next steps &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/not-just-yet-another-microblog/#next-steps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We couldn&#39;t be more excited about the first release of Bonfire and we hope it can truly revolutionise the way online communities are formed and maintained. If you’re interested in helping us test the upcoming beta version of Bonfire, please add your email address below and we’ll get back to you very soon.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>What you can expect from the Bonfire beta</title>
    <link href="https://bonfirenetworks.org/posts/what-you-can-expect-from-the-bonfire-beta/"/>
    <updated>2022-06-21T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/what-you-can-expect-from-the-bonfire-beta/</id>
    <content type="html">&lt;p&gt;In a few days&#39; time we&#39;d like to invite you to experiment with a &#39;playground&#39; instance of Bonfire, the federated social networking toolkit for communities. As we explained in the &lt;a href=&quot;https://bonfirenetworks.org/posts/not_just_yet_another_microblog/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;previous post&lt;/a&gt;, we&#39;re focusing on getting the core social functionality of Bonfire ready, and we need your help!&lt;/p&gt;
&lt;p&gt;We&#39;re looking for people who want to play around with Bonfire and who can help spot bugs and possible improvements around the user experience. We&#39;re also looking for those who might want to set up their own Bonfire instance to help test federation.&lt;/p&gt;
&lt;h2 id=&quot;features-and-functionality&quot;&gt;Features and functionality &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-you-can-expect-from-the-bonfire-beta/#features-and-functionality&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Lots of what you&#39;ll see in the Bonfire beta will be recognisable from other social and/or federated apps: for example, navigating timelines and profiles, following users and boosting or favouriting activities. You&#39;ll be able to create posts, engage in discussions, flag or block problematic content, and pick your preferred language (with three languages available to start, we need &lt;a href=&quot;https://www.transifex.com/bonfire/bonfire/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;help with translations in more languages&lt;/a&gt; if you can!).&lt;/p&gt;
&lt;p&gt;There is some functionality that may be a little different with Bonfire as well. Choosing what you see in your home feed, changing the interface theme and font, switching between multiple profiles, rich text formatting in posts, setting a title for threads, and granular blocking options are a few features that may be new to beta testers. We&#39;re looking forward to seeing what you think of them!&lt;/p&gt;
&lt;h2 id=&quot;get-involved!&quot;&gt;Get involved! &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-you-can-expect-from-the-bonfire-beta/#get-involved!&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you would like to test the user experience of Bonfire, please enter your email address below. We&#39;ll ensure you get an invite to the test instance as soon as it&#39;s ready.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Meet us at the playground: Bonfire Social beta launch </title>
    <link href="https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/"/>
    <updated>2022-06-25T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/</id>
    <content type="html">&lt;p&gt;Today, the Bonfire team is asking for &lt;em&gt;your&lt;/em&gt; help with beta testing. Bonfire still needs a lot of work - be it bugs, federation, missing features, configurability and user experience - but that&#39;s the point: we decided to launch the playground at this gnarly stage with the specific intention of moving toward the 1.0 release as a community. We think the best way to rapidly improve Bonfire and its modularity is to test it and discuss it together!&lt;/p&gt;
&lt;p&gt;By setting up a workflow within the playground instance to report issues or share feedback, both devs and non-devs alike will be able to input their ideas and co-design our 1.0 release in an open and inclusive way.&lt;/p&gt;
&lt;h2 id=&quot;watch-the-video-walkthrough&quot;&gt;Watch the video walkthrough &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/#watch-the-video-walkthrough&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class=&quot;w-full h-[440px]&quot;&gt;&lt;div class=&quot;rounded-lg border-8 border-base-300/40 h-full&quot;&gt;  &lt;iframe title=&quot;Bonfire social beta screencast&quot; src=&quot;https://tube.tchncs.de/videos/embed/59353f51-17a1-4dd7-9935-e74c5e4ae1e2&quot; allowfullscreen=&quot;yes&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;0&quot; style=&quot;width: 100%; height: 100%;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h2 id=&quot;sign-up-to-the-bonfire-playground&quot;&gt;Sign up to the Bonfire playground &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/#sign-up-to-the-bonfire-playground&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you would like to test the user experience of Bonfire, please sign up on the instance at &lt;a href=&quot;https://playground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;playground.bonfire.cafe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When you come across a bug or something that could work better/different (for example, an option within Settings to set the default boundary for all new posts), you will have the opportunity to easily share it to the Bonfire team from within the app. Simply click on the &amp;quot;share feedback&amp;quot; button after signing in to the playground instance: this will start a thread mentioning &lt;a href=&quot;https://playground.bonfire.cafe/@BonfireBuilders&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@BonfireBuilders&lt;/a&gt; and adding #bonfire_feedback as a hashtag. Please feel free to report anything you see which is unexpected, even if you&#39;re not sure what it &#39;should&#39; be like! You can also look up &lt;a href=&quot;https://playground.bonfire.cafe/tag/bonfire_feedback&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;existing posts tagged with #bonfire_feedback&lt;/a&gt; to participate in discussions started by others.&lt;/p&gt;
&lt;p&gt;We will be monitoring and participating in these discussions with zeal! Discussions about new features and extensions will shape our &lt;a href=&quot;https://changemap.co/bonfire/bonfire/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;open roadmap&lt;/a&gt;, and bugs or technical implementation discussions will be found in the &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;issue tracker&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;what-is-in-scope-for-this-beta%3F&quot;&gt;What is in scope for this beta? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/#what-is-in-scope-for-this-beta%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;If you haven&#39;t yet read our updates from this week, please check out these posts where we show how Bonfire is &lt;a href=&quot;https://bonfirenetworks.org/posts/not_just_yet_another_microblog/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;not just another microblog&lt;/a&gt;, and &lt;a href=&quot;https://bonfirenetworks.org/posts/beta_what_to_expect/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;what you can expect from the beta&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&quot;a-note-on-federation&quot;&gt;A note on federation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/#a-note-on-federation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Federation is a key part of Bonfire and is included by default with all fresh installs. However, please note that federation will be disabled on the playground instance. This is for three reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We don&#39;t want to spam the fediverse with too many test posts or meta discussions.&lt;/li&gt;
&lt;li&gt;The playground instance isn&#39;t meant to be your main home on the Fediverse. We want to encourage decentralisation in this regard.&lt;/li&gt;
&lt;li&gt;We need more testing and tweaking to ensure federation works as expected with all the federated apps out there.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Having said that, we also want to test and improve the federation functionality, so if you&#39;ve got the ability to set up your own instance of Bonfire, we would very much appreciate it! Please &lt;a href=&quot;https://bonfirenetworks.org/docs/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;check out the docs&lt;/a&gt; and get in touch.&lt;/p&gt;
&lt;h2 id=&quot;upcoming-events&quot;&gt;Upcoming events &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/#upcoming-events&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In addition to discussions on the Bonfire playground instance, we&#39;re planning:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ask us anything&lt;/strong&gt; sessions - opportunities to ask the Bonfire team any questions you might have.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install parties&lt;/strong&gt; - peer support for people looking to set up and test their own Bonfire instances.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build parties&lt;/strong&gt; - peer support for builders looking to set up a development environment, along with some pair programming sessions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sign up for updates below if you want to be notified of any of these. Of course, we&#39;re also reachable by @ mentioning the &lt;a href=&quot;https://playground.bonfire.cafe/@BonfireBuilders&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@BonfireBuilders&lt;/a&gt; account within the Bonfire playground instance, or sending an email.&lt;/p&gt;
&lt;h2 id=&quot;beta-launch-faq&quot;&gt;Beta launch FAQ &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/#beta-launch-faq&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Do I need any technical skills to get involved in the beta testing?&lt;/strong&gt;&lt;br /&gt;
If you would like to test Bonfire as a user rather than as an administrator then the skills required are the same as for any social network. However, if you would like to install your own instance, you will need to be familiar with the command line and general knowledge on operating a web server (configuring DNS, etc).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If I want to be involved, how much time do I need to set aside for beta testing?&lt;/strong&gt;&lt;br /&gt;
We would appreciate any and all help with beta testing. You may be able to spend 15 minutes looking around and sharing your thoughts on anything that doesn&#39;t work as expected. You might be able to experiment with the Bonfire playground over a number of days or weeks, and give us more in-depth feedback. Whatever works for you, works for us. After all, &lt;em&gt;given enough eyeballs, all bugs are shallow!&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What happens if I come across inappropriate content while involved in user testing?&lt;/strong&gt;&lt;br /&gt;
As part of the sign-up process, all users will be asked to agree to a &lt;a href=&quot;https://bonfirenetworks.org/conduct/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Code of Conduct&lt;/a&gt;. The Bonfire team has spent time and effort in crafting this document, and expect it to be followed in all spaces operated by us. Of course, feedback on improving future versions of the code of conduct is welcome. Please follow the guildelines for &lt;a href=&quot;https://bonfirenetworks.org/conduct/#6.-reporting-issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;reporting issues&lt;/a&gt; should you come across anything which contravenes the Code of Conduct.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our general FAQ section can be found on the &lt;a href=&quot;https://bonfirenetworks.org/faq/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire website&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;subscribe-to-updates&quot;&gt;Subscribe to updates &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/meet-us-at-the-playground-bonfire-social-beta-launch/#subscribe-to-updates&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you would like to keep informed about what&#39;s happening in and around the Bonfire ecosystem, please &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;follow us on the fediverse&lt;/a&gt; and/or enter your email below to subscribe to occasional updates.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Introducing circles and boundaries</title>
    <link href="https://bonfirenetworks.org/posts/introducing-circles-and-boundaries/"/>
    <updated>2022-07-19T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/introducing-circles-and-boundaries/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;How will our online experiences be different once we take back control over exactly who should see, interact with, and even collaborate on our content and activities at the most granular level?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With our last update to the beta of Bonfire, we wanted to release the initial functionality to experiment with this question, and embark on a quest to find some answers and pose many more crucial questions together with our community.&lt;/p&gt;
&lt;p&gt;Within bonfire, you now have the possibility to define circles and boundaries: a way to privately group some of your contacts and then grant them permissions to interact with you and each piece of content you share at the most granular level.&lt;/p&gt;
&lt;p&gt;Boundaries go beyond the typical permissions on social &lt;em&gt;media&lt;/em&gt; (i.e. who can see your content) and &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues/406&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;include a long list of verbs&lt;/a&gt; in order to represent all kinds of meaningful interactions and collaboration that should be possible on a real social &lt;em&gt;network&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;People don’t fit in binary boxes labeled “follower” or “friend”. Circles and boundaries are a way to empower us to come up with our own groupings and sets of permissions.&lt;/p&gt;
&lt;p&gt;But this is really just the beginning: boundaries are a core feature in bonfire that many other extensions and features will rely on. The same functionality will soon be used to introduce custom roles, going beyond catch-all titles like &amp;quot;instance admin&amp;quot; and &amp;quot;moderator&amp;quot; with the possibility for communities to define a multitude of roles that fit with how they want to distribute power and responsibility.&lt;/p&gt;
&lt;p&gt;How can circles and boundaries allow more flexible governance models in online communities? How can they empower new forms of peer coordination? How can we create user experiences where every user has total control without feeling overwhelmed?&lt;/p&gt;
&lt;p&gt;If you are interested in taking part in this journey, &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;start by joining our campground instance&lt;/a&gt;!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire presentation @ PrivacyWeek</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-presentation-privacyweek/"/>
    <updated>2022-10-01T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-presentation-privacyweek/</id>
    <content type="html">&lt;p&gt;In September we have been invited to present bonfire at the &lt;a href=&quot;https://privacyweek.it/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Italian PrivacyWeek&lt;/a&gt;. We joined Francesco Macchia and Filippo Delle Bianca in a speech titled: &lt;a href=&quot;https://privacyweek.it/event/ce-spazio-per-un-nuovo-social-network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&amp;quot;Does it exist an alternative and a future for social media?&amp;quot;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Below you can see the bonfire presentation translated in English:&lt;/p&gt;
&lt;div style=&quot;position: relative; padding-bottom: 56.25%; height: 0;&quot;&gt;&lt;iframe src=&quot;https://www.loom.com/embed/ccc0425af2934d0ea1d05a7796b2d86b&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Thanks to Francesco Macchia for the invitation :)&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>How to use boundaries, circles and roles</title>
    <link href="https://bonfirenetworks.org/posts/how-to-use-boundaries-circles-and-roles/"/>
    <updated>2023-05-30T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/how-to-use-boundaries-circles-and-roles/</id>
    <content type="html">&lt;p&gt;Bonfire&#39;s circles and boundaries system is a powerful tool with which you can create custom groups of contacts and grant them specific permissions to interact with you and your content. They can help you take control of your online presence and ensure that your data is shared only with the people you want.&lt;/p&gt;
&lt;p&gt;It may help to start by defining some general concepts:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Boundaries&lt;/strong&gt; are limits that you set for yourself or others to define what you&#39;re comfortable with.&lt;/p&gt;
&lt;p&gt;These limits can be physical, like curtains or doors; digital, like sharing settings on social media; in writing, like codes of conduct; emotional, like feeling comfortable to take time for self-care; or mental, like choosing what you pay attention to. In Bonfire, boundaries can help limit the type of interactions that others may have with you or things you post.&lt;/p&gt;
&lt;p&gt;Boundaries are important because they help you protect yourself, maintain your autonomy, and communicate your needs and expectations clearly.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Circles&lt;/strong&gt; are a tool that can be used to establish relationships. They are representations of multifaceted relationships that you have with people in your life. Circles can help you understand the different levels of intimacy and trust that you have with different people, as well the different contexts or topics which are relevant to particular relationships, and can help build stronger, healthier relationships.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://shiftdesign.org/content/uploads/2019/03/circles2-1024x769.png&quot; alt=&quot;A theoretical way of looking at circles based on intimacy and trust&quot; /&gt;&lt;/p&gt;
&lt;p&gt;In Bonfire, you can define circles based on your unique style of relationships and interests. For example, you might create a circle for your &lt;em&gt;colleagues&lt;/em&gt;, which can help you keep track of work-related content and collaborate with them more efficiently. You could also have a &lt;em&gt;locals&lt;/em&gt; circle, with which you may share and discover local events, news, and recommendations. You might also create a &lt;em&gt;comrades&lt;/em&gt; circle, to stay connected with fellow activists and organise around shared goals. Finally, you could create a &lt;em&gt;happy hour&lt;/em&gt; circle, to coordinate social gatherings with local friends or colleagues, and &lt;em&gt;the crew&lt;/em&gt; for your inner circle. With circles, you have the flexibility to manage your relationships and social activities in a way that makes sense for you.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/circles-example.png&quot; alt=&quot;An example of circles&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;using-circles&quot;&gt;Using circles &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/how-to-use-boundaries-circles-and-roles/#using-circles&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;When you share content on Bonfire, you can simply choose to share it with specific circles instead of sharing it publicly.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to your settings page.&lt;/li&gt;
&lt;li&gt;Click on the &amp;quot;Circles&amp;quot; section on the left sidebar.&lt;/li&gt;
&lt;li&gt;Click on the &amp;quot;New Circle&amp;quot; button located at the top-right corner of the page.&lt;/li&gt;
&lt;li&gt;Enter a name for the circle in the modal and click &amp;quot;Create.&amp;quot;&lt;/li&gt;
&lt;li&gt;Once you&#39;ve created your circle, you can start adding people to it by typing their names or usernames in the input. The search input will provide autocomplete suggestions as you type.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you can use that circle when making a post:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click &amp;quot;Compose&amp;quot; in the sidebar&lt;/li&gt;
&lt;li&gt;Click the boundary menu which by default says &amp;quot;Public&amp;quot;&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Custom&amp;quot;&lt;/li&gt;
&lt;li&gt;Click the box which says &amp;quot;Select one or more circles or people&amp;quot;&lt;/li&gt;
&lt;li&gt;Select the circle you created&lt;/li&gt;
&lt;li&gt;Now next to the circle that appears in the list you can select what role you want that circle to have with regards to your post. The default is &amp;quot;Participate&amp;quot; which means they can read, boost and reply to it.&lt;/li&gt;
&lt;li&gt;Click &amp;quot;Done&amp;quot; and you can now write and publish your post&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;You can also save time by defining boundaries in your settings to reuse the same selection of circles and permissions when posting and avoid having to select multiple circles and give them a role every time, which we&#39;ll cover in the next section.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That&#39;s it! With these steps, you can create and add people to circles in Bonfire and use them to share content with specific groups of people.&lt;/p&gt;
&lt;div style=&quot;position: relative; padding-bottom: 56.25%; height: 0;&quot;&gt;&lt;iframe src=&quot;https://www.loom.com/embed/c063e8b219524f858192fc9a82b9f41a&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2 id=&quot;using-boundaries&quot;&gt;Using boundaries &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/how-to-use-boundaries-circles-and-roles/#using-boundaries&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Boundaries takes things the next level by enabling you to combine one or more circles and then grant specific roles to each circle. For example, you might create a &amp;quot;Fitness&amp;quot; boundary and grant the &amp;quot;Participate&amp;quot; role to your gym buddies, allowing them to interact with your fitness-related content, while granting the &amp;quot;Interact&amp;quot; role to your family and friends, who can view and react to your posts but not comment on them.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to your settings page.&lt;/li&gt;
&lt;li&gt;Click on the &amp;quot;Boundaries&amp;quot; section on the left sidebar.&lt;/li&gt;
&lt;li&gt;Click on the &amp;quot;New boundary&amp;quot; button located at the top-right corner of the page.&lt;/li&gt;
&lt;li&gt;Enter a name for the new boundary (e.g., &amp;quot;Fitness&amp;quot;) and click on create.&lt;/li&gt;
&lt;li&gt;On the newly created boundary page, start typing the name of a circle you want to add to the boundary (or an individual user, though it&#39;s recommended to use circles to group users who you want to assign the same role to). The search input will provide autocomplete suggestions as you type.&lt;/li&gt;
&lt;li&gt;Click on the desired circle or user to add them to the boundary.&lt;/li&gt;
&lt;li&gt;Next to the name, click on the &amp;quot;Role&amp;quot; dropdown menu and select the appropriate role (e.g., &amp;quot;Interact&amp;quot; if you want them to be able to read/like/boost your activities or &amp;quot;Cannot participate&amp;quot; if you don&#39;t want them to be able to reply).&lt;/li&gt;
&lt;li&gt;Repeat steps 5-7 for each user/circle you want to add to the boundary.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now you can use that boundary when making a post:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click &amp;quot;Compose&amp;quot; in the sidebar&lt;/li&gt;
&lt;li&gt;Click the boundary menu which by default says &amp;quot;Public&amp;quot;&lt;/li&gt;
&lt;li&gt;Select the boundary you created&lt;/li&gt;
&lt;li&gt;You can now write and publish your post&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;position: relative; padding-bottom: 56.25%; height: 0;&quot;&gt;&lt;iframe src=&quot;https://www.loom.com/embed/6fc942fb149c457d97148730eb5fd333&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot; style=&quot;position: absolute; top: 0; left: 0; width: 100%; height: 100%;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h2 id=&quot;what-are-roles%3F&quot;&gt;What are roles? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/how-to-use-boundaries-circles-and-roles/#what-are-roles%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Roles&lt;/strong&gt; in Bonfire are a way to assign a set of permissions to users or circles, allowing them to perform specific actions.&lt;/p&gt;
&lt;p&gt;Roles play a crucial role in defining the scope of engagement and participation for users. By assigning roles, you can establish specific permissions and restrictions, ensuring that users or circles have appropriate levels of access and abilities based on their relationship with you or the purpose of the boundary or nature of the content on which they&#39;re applied.&lt;/p&gt;
&lt;p&gt;Here are some preset roles and their associated actions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Read&lt;/strong&gt;: can discover the content in lists (like feeds) and read it; request permission for another verb (e.g., request to follow).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Interact&lt;/strong&gt;: can read, plus like an object (and notify the author); follow a user or thread; boost an object (and notify the author); pin something to highlight it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Participate&lt;/strong&gt;: can interact, plus reply to an activity or post; mention a user or object (and notify them); send a message.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Contribute&lt;/strong&gt;: can participate, plus create a post or other object; tag a user or object or publish in a topic.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Caretaker&lt;/strong&gt;: can perform all of the above actions and more, including actions like deletion.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are also negative roles, indicating actions which you specifically do not want to allow a particular circle or user to do, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cannot Read&lt;/strong&gt;: not discoverable in lists or readable, and also can&#39;t interact or participate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cannot Interact&lt;/strong&gt;: cannot perform any actions related to interaction, including liking, following, boosting, and pinning, and also can&#39;t participate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cannot Participate&lt;/strong&gt;: cannot perform any actions related to participation, including replying, mentioning, and sending messages.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Negative permissions always take precedence over positive or undefined permissions. For example, let&#39;s say you share something and allow all your followers to read and reply to it. However, if you assign the Cannot Participate role to your Likely to troll circle, the people in that circle will be able to read the content but will not be able to reply to it. In other words, the negative permission restricts the permissions they would otherwise have.&lt;/p&gt;
&lt;p&gt;It&#39;s important to note that these negative roles do not grant any additional permissions. Assigning the Cannot Participate role to someone who wouldn&#39;t otherwise be able to read the content does not mean they will now have the ability to do so. Negative roles simply limit or override any permissions defined elsewhere, ensuring that the specified actions are explicitly restricted.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;By using boundaries, circles, and roles in Bonfire, you can take control of your online presence and ensure that your content is shared only with the people you want. So why not give it a try and see how it can help you connect with your contacts in a more meaningful way?&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Dev Diary: Implementing federated groups in Bonfire</title>
    <link href="https://bonfirenetworks.org/posts/dev-diary-implementing-federated-groups-in-bonfire/"/>
    <updated>2023-06-08T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/dev-diary-implementing-federated-groups-in-bonfire/</id>
    <content type="html">&lt;p&gt;As part of our commitment to empower communities with tools to foster coordination, meaningful communications and a greater sense of caring and belonging, we are thrilled to announce the development of federated groups in Bonfire. In this blog post, we&#39;ll delve into the work in progress of implementing the core features of groups and explore the potential benefits this feature can bring to the whole fediverse.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Group development is made possible by the NLnet Entrust Grant. The grant will let us research and develop an intial set of features to create and manage groups, as well as federate them with other platforms, such as &lt;a href=&quot;https://a.gup.pe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Guppe&lt;/a&gt;, Mobilizon, Lemmy, and Mastodon.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;the-power-of-groups&quot;&gt;The Power of Groups &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/dev-diary-implementing-federated-groups-in-bonfire/#the-power-of-groups&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;With groups users can create context-specific and cross-instances spaces, define their own rules and governance, to better organize their participation across the fediverse. Key features of groups in Bonfire so far include:&lt;/p&gt;
&lt;h3 id=&quot;creation-%26-discovery&quot;&gt;Creation &amp;amp; Discovery &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/dev-diary-implementing-federated-groups-in-bonfire/#creation-%26-discovery&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Bonfire users will have the ability to create their own groups, specifying the group&#39;s purpose, rules, and other settings. Each group will have a unique username, based on the instance where it was created (e.g., @climatenews@zomia.zone), and will be discoverable (depending on its privacy settings) across the whole fediverse to enable users to find and join groups aligned with their interests, ensuring that everyone can find or build their communities on the fediverse.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/PQIQXMh.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;boundaries-%26-privacy&quot;&gt;Boundaries &amp;amp; Privacy &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/dev-diary-implementing-federated-groups-in-bonfire/#boundaries-%26-privacy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Group caretakers will have granular control over privacy settings, allowing them to determine whether a group is open, visible, or private. This flexibility ensures that users can participate in groups that suit their comfort levels and maintain control over their personal data. Private groups will only show their activities to members, while open or visible groups allow anyone to read group contents, and members can add posts or participate in conversations.&lt;br /&gt;
&lt;img src=&quot;https://i.imgur.com/KwTGMEb.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;roles-%26-moderation&quot;&gt;Roles &amp;amp; Moderation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/dev-diary-implementing-federated-groups-in-bonfire/#roles-%26-moderation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Group caretakers will also have the ability to define custom roles and assign to certain members, thus simplifying and decentralising the management and moderation of groups. Members who are granted a relevant role may see and address flagged activities, invite other users, edit the group appearance and details, create and edit roles, or publish announcements, etc.&lt;/p&gt;
&lt;p&gt;When a user flags an activity or a member of the group, the group moderators are the first to be notified. This helps distribute the moderation workload and reduces the burden on instance moderators. If a flagged user breaks not only the group rules but also those of their respective instances, group moderators have the option to escalate the case to instance moderators, to help maintain a healthy and respectful environment across the fediverse.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/GE1cDgt.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;To ensure the best possible user experience, we intend to launch an initial version on groups to be tested within our playground instance. This will enable us to gather valuable feedback from our community and engage in collaborative discussions to refine and enhance the platform as we progress.&lt;/p&gt;
&lt;p&gt;In an upcoming post, we will delve into more details, including our ideas for federating groups and the technical challenges we&#39;re facing. Stay tuned 😎&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Empowering Bonfire users with advanced roles &amp; permissions</title>
    <link href="https://bonfirenetworks.org/posts/empowering-bonfire-users-with-advanced-roles-permissions/"/>
    <updated>2023-06-15T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/empowering-bonfire-users-with-advanced-roles-permissions/</id>
    <content type="html">&lt;p&gt;Greetings, Bonfire Community!&lt;/p&gt;
&lt;p&gt;We are happy to announce that the next Bonfire release will introduce the capacity to define and assign custom roles. This feature, far from being limited to instance administrators, will also be available to individual users and to group caretakers (as part of our &lt;a href=&quot;https://bonfirenetworks.org/posts/dev_diary_groups_1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;groups extension which is currently in development&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The addition of custom roles will empower users define a set of permissions to grant to other users or circles. This paves the way for a more nuanced and personalised way to define interaction within and across communities.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/jfHFP0e.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Now instance admins and group caretakers will be able to define and assign custom roles to other members, to distribute responsibilities among broader groups of trusted users, fostering a more diverse and inclusive governance structure within each community.&lt;/p&gt;
&lt;p&gt;Imagine a group caretaker creating a custom role named &amp;quot;Mediator&amp;quot;. This role could allow certain members to review and act upon flagged content. The Mediators would be notified of flags, and start a dialogue with the author of the flagged post or the person who flagged it, remove the content from the group and/or block a member if necessary, or escalate the issue to instance moderators when further action is waranted.&lt;/p&gt;
&lt;p&gt;Moreover, other users could be granted the &amp;quot;Gatekeeper&amp;quot; role, making them responsible for creating invites, managing join requests or manually adding and removing users from the group.&lt;/p&gt;
&lt;p&gt;Custom roles aim to alleviate the workload and emotional burden traditionally associated with admin roles. By distributing power among the users, we aspire to foster healthier governance and cultivate more participative and empowered communities.&lt;/p&gt;
&lt;p&gt;Outside of group and instance governance, individual users will also benefit from roles by being able to define exactly how other users can or cannot interact with them and their contents, by using custom roles when &lt;a href=&quot;https://bonfirenetworks.org/posts/how_to_boundaries/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;defining their circles and boundaries&lt;/a&gt; or when making a post.&lt;/p&gt;
&lt;p&gt;This is just the beginning for custom roles, we plan to refine and enhance this feature based on your feedback and ideas and our iterative design process. As we progress toward the release of Bonfire 1.0, our goal is to make custom roles a robust and integral part of our platform.&lt;/p&gt;
&lt;p&gt;Therefore, we wholeheartedly encourage you to share your experiences and feedback with us. Your insights are invaluable in helping us shape and perfect this feature.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Group development is made possible by the NLnet Entrust Grant. The grant will let us research and develop an intial set of features to create and manage groups, as well as federate them with other platforms, such as Guppe, Mobilizon, Lemmy, and Mastodon&lt;/p&gt;
&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>Could you help us with user research?</title>
    <link href="https://bonfirenetworks.org/posts/could-you-help-us-with-user-research/"/>
    <updated>2023-06-28T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/could-you-help-us-with-user-research/</id>
    <content type="html">&lt;p&gt;As we approach v1.0 of Bonfire, we’re looking for volunteers to help us with some user research. We’re particularly interested in hearing from a diverse range of people who may be interested in using Bonfire in a personal or professional capacity .&lt;/p&gt;
&lt;p&gt;You do not need any particular technical knowledge, skills, or prior experience of Bonfire.   The user research interviews will be carried out in English by &lt;a href=&quot;https://dynamicskillset.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Dynamic Skillset&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;If you are interested in helping us out, please &lt;a href=&quot;https://docs.google.com/forms/d/e/1FAIpQLSfrMnj7MBtapIlbiHbPfGFHuuL1Dg9zaNO_Srltcu6Nfno3Zw/viewform&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;complete the form&lt;/a&gt;. Thanks in advance!&lt;/p&gt;
&lt;p&gt;As much as we value and appreciate the effort to participate in our user research, we are unable to offer compensation to the participants at this time. If you have any further questions or concerns, please don&#39;t hesitate to reach out to us. Thank you!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Making things intuitive is complex! Or, what we discovered via user testing</title>
    <link href="https://bonfirenetworks.org/posts/making-things-intuitive-is-complex-or-what-we-discovered-via-user-testing/"/>
    <updated>2023-07-19T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/making-things-intuitive-is-complex-or-what-we-discovered-via-user-testing/</id>
    <content type="html">&lt;p&gt;The Bonfire team is committed to creating a federated app toolkit that is intuitive, user-friendly, and meets the diverse needs of our community. A key part of how people interact with Bonfire is the composer — the space where users craft their post and decide who can see and interact with it. To ensure this is as effective and easy to use as possible, we recently conducted user research to gather feedback and insights.&lt;/p&gt;
&lt;h2 id=&quot;the-user-research-process&quot;&gt;The User Research Process &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/making-things-intuitive-is-complex-or-what-we-discovered-via-user-testing/#the-user-research-process&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Our user research involved in-depth sessions with a diverse range of participants. These 45-minute sessions included a mix of questions and prototype testing, using screen-sharing and a prototype created with Figma. Our participants spanned a variety of locations, backgrounds, technical proficiency, and amounts of previous exposure to Bonfire, providing us with a wealth of perspectives and insights.&lt;/p&gt;
&lt;h2 id=&quot;what-we-found-out&quot;&gt;What we found out &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/making-things-intuitive-is-complex-or-what-we-discovered-via-user-testing/#what-we-found-out&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The feedback we received was invaluable in highlighting areas for improvement. Many users found the concepts and/or UX of boundaries, circles and roles confusing, particularly the ‘caretaker’ role and the way you could deny or combine permissions. There was a desire for greater clarity in the include/exclude sections, about understanding the details of each specific role, and for the ability to edit boundaries after posting.&lt;/p&gt;
&lt;p&gt;Interestingly, we found a surprising uniformity in user behaviour, with all participants choosing the same initial workflow in the prototype, though participants each suggested several different ways to improve the composer feature.&lt;/p&gt;
&lt;h2 id=&quot;our-response&quot;&gt;Our response &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/making-things-intuitive-is-complex-or-what-we-discovered-via-user-testing/#our-response&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As a team, we&#39;ve taken this feedback on board and have been discussing the best ways to iterate based on the insights and sugestions shared by participants.&lt;/p&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next steps &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/making-things-intuitive-is-complex-or-what-we-discovered-via-user-testing/#next-steps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;re now in the process of implementing changes based on the feedback received. In a couple of months, we plan to conduct further user research to assess the impact of these changes and gather more user insights. We encourage members of the Bonfire community to get involved in this process by providing feedback and participating in future user research. You can do this by discussing this post on the Fediverse and mentioning &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@bonfire@bonfire.cafe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Users who want to provide further feedbacks to the bonfire team can go through the composer on our campground instance, and report any suggestion using the #bonfire_feedback hashtags.&lt;/p&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/making-things-intuitive-is-complex-or-what-we-discovered-via-user-testing/#conclusion&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This user research process has been extremely helpful in refining the composer and improving the overall user experience on Bonfire. We&#39;re grateful to all the participants for their valuable feedback and to our community for their ongoing support. We look forward to sharing updates on our progress and continuing to work together to make Bonfire the best it can be.&lt;/p&gt;
&lt;p&gt;(Thanks to &lt;a href=&quot;https://social.coop/@dajb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Doug Belshaw&lt;/a&gt; of &lt;a href=&quot;https://dynamicskillset.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Dynamic Skillset&lt;/a&gt; who volunteered his time to run this user research for us and provide us with insights.)&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire 0.9.6</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-0-9-6/"/>
    <updated>2023-08-09T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-0-9-6/</id>
    <content type="html">&lt;p&gt;We&#39;re thrilled to announce the release of Bonfire version 0.9.6! This latest update brings a host of improvements and new features aimed at enhancing usability and providing more control over the content you engage with. Here&#39;s what&#39;s new:&lt;/p&gt;
&lt;h2 id=&quot;expanded-messaging-and-thread-views&quot;&gt;Expanded Messaging and Thread Views &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-0-9-6/#expanded-messaging-and-thread-views&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve successfully completed the &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/milestone/43?closed=1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;messaging milestone&lt;/a&gt;, now users can seamlessly see all their direct messages or send a message to one or more people.&lt;/p&gt;
&lt;p&gt;Threads (for both messages and regular posts) can now be viewed in both nested and flat layout, providing a more comprehensive or streamlined way to navigate conversations.&lt;/p&gt;
&lt;p&gt;Sorting options on threads now include chronological views, sorting by replies, boosts, likes, and more, allowing users to tailor their view according to preference.&lt;/p&gt;
&lt;h2 id=&quot;enhanced-feeds&quot;&gt;Enhanced Feeds &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-0-9-6/#enhanced-feeds&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Sorting options have been expanded on feeds, offering chronological, reply, boost, and like-based sorting.&lt;/p&gt;
&lt;p&gt;Users can also filter feeds based on time frames such as Today, Week, Month, Year, and All Time, giving more refined control over content discovery, at the same time offering alternatives to the addictive infinite scrolling pattern.&lt;/p&gt;
&lt;h2 id=&quot;rich-text-editor-and-composer-improvements&quot;&gt;Rich Text Editor and Composer Improvements &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-0-9-6/#rich-text-editor-and-composer-improvements&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The addition of a rich text editor in our composer enables markdown use with a WYSIWYG interface.&lt;/p&gt;
&lt;p&gt;The composer can also now be stretched and expanded, enhancing focus and ease of use, especially when writing longer posts.&lt;/p&gt;
&lt;h2 id=&quot;refined-boundaries&quot;&gt;Refined Boundaries &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-0-9-6/#refined-boundaries&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve started integrating the valuable insights gained from our &lt;a href=&quot;https://bonfirenetworks.org/posts/making_things_intuitive_is_complex/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;user testing interviews&lt;/a&gt; into the boundary system, enhancing the overall user experience.&lt;/p&gt;
&lt;p&gt;This update simplifies the process of defining custom permissions and includes a convenient option to preview the resulting boundaries, allowing for more intuitive and flexible control.&lt;/p&gt;
&lt;h2 id=&quot;and-more!&quot;&gt;And more! &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-0-9-6/#and-more!&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Plus, we&#39;ve tweaked and fixed many more things to make the Bonfire experience smoother and more intuitive.&lt;br /&gt;
We encourage everyone to explore these new features and continue to provide feedback as we work towards our next milestone. Your insights drive our progress, and we look forward to growing together with the Bonfire community.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Explore Bonfire 0.9.6 now&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>The Road to Bonfire 1.0</title>
    <link href="https://bonfirenetworks.org/posts/the-road-to-bonfire-1-0/"/>
    <updated>2023-09-14T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/the-road-to-bonfire-1-0/</id>
    <content type="html">&lt;p&gt;We&#39;ve spent the past two years building, iterating, experimenting, and refactoring the Bonfire codebase — to explore our assumptions, co-design with our community, and stretch the limits of social networking, all while having fun!&lt;/p&gt;
&lt;p&gt;We are now excited to announce that we&#39;re shifting toward a new phase. Over the next three months, &lt;strong&gt;our primary goal will be to make Bonfire as reliable and interoperable as possible&lt;/strong&gt;, until we are able to release Bonfire 1.0 - a version we&#39;ll be confident in recommending for setting up instances that federate with the broader fediverse.&lt;/p&gt;
&lt;h2 id=&quot;feature-freeze&quot;&gt;Feature freeze &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/the-road-to-bonfire-1-0/#feature-freeze&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;To focus our efforts on releasing Bonfire 1.0, we&#39;re temporarily pausing the development of new features&lt;/strong&gt;. This strategic decision allows us to concentrate fully on the essential aspects that need attention.&lt;/p&gt;
&lt;h2 id=&quot;to-do-list&quot;&gt;To-do list &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/the-road-to-bonfire-1-0/#to-do-list&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Our key areas of focus include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Consolidating Federation&lt;/strong&gt;: We&#39;re committed to fine-tuning and optimizing our federated features while rigorously testing interoperability with as many fediverse platforms as possible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automated Testing&lt;/strong&gt;: We&#39;ll continue adding automated tests (which automatically check that each feature of the code or user interface works as expected) and fixing existing ones.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Bug Fixes&lt;/strong&gt;: Identifying and resolving any bugs is of course a top priority to deliver a seamless and fast user experience.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&#39;ll also keep going with ongoing efforts as time permits, such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Enhancing User Experiences and Design Patterns&lt;/strong&gt;: Streamlining the user interface and design elements to make for a more intuitive Bonfire experience.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;: We&#39;re committed to providing comprehensive documentation to guide both users and developers through Bonfire&#39;s features.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;how-you-can-help&quot;&gt;How you can help &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/the-road-to-bonfire-1-0/#how-you-can-help&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We extend an open invitation to all users and developers to join us during this pivotal phase. Your feedback, which has been invaluable thus far, remains crucial for the continued improvement of Bonfire. Whether it&#39;s reporting bugs, helping with documentation or interoperability testing, or even contributing code, every effort matters.&lt;/p&gt;
&lt;p&gt;Together, let&#39;s make Bonfire 1.0 a milestone release that raises the bar for decentralised and customisable social networking. It&#39;s only working together that we can empower communities and build a platform that truly serves our diverse needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you all, for your ongoing support and enthusiasm!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;We&#39;d also like to extend a shoutout to the NLnet Foundation for their continued backing during this critical phase.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Safer social networking - Bonfire&#39;s recent experiment with Prosocial Design Patterns</title>
    <link href="https://bonfirenetworks.org/posts/safer-social-networking-bonfire-s-recent-experiment-with-prosocial-design-patterns/"/>
    <updated>2024-01-26T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/safer-social-networking-bonfire-s-recent-experiment-with-prosocial-design-patterns/</id>
    <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/safer-social-networking-bonfire-s-recent-experiment-with-prosocial-design-patterns/#introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As we gear up for the release of Bonfire Classic 1.0 – which includes not just the software but also extensive documentation and tutorials for people to customise and extend functionality in-depth – we&#39;re testing the framework&#39;s modularity. Our goal is to understand the workflow involved in planning, designing, implementing, and shipping a Bonfire extension from scratch. Our first experiment involved implementing a design pattern from the &lt;a href=&quot;https://www.prosocialdesign.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prosocial Design Network&lt;/a&gt;, a community dedicated to pioneering safer social networks.&lt;/p&gt;
&lt;p&gt;The results were quite encouraging. We were able to prototype the researched pattern, package it as &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_label&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;a distinct Bonfire extension&lt;/a&gt;, and integrate it with the Bonfire codebase, all within a matter of hours. This not only demonstrates the power of Bonfire&#39;s modularity but also aims to initiate closer collaboration with researchers, activists, and organisations that are committed to designing and fostering safer digital spaces.&lt;/p&gt;
&lt;p&gt;Through Bonfire, we can challenge the limitations of current digital platforms, which are often constrained by dark patterns, closed and centralised (not just in terms of interoperability but also in terms of design choices) and/or profit-driven. By partnering with communities, foundations, and anyone whose mission is to truly improve our digital tools and environments, and leveraging the open and interoperable nature of the Fediverse, Bonfire can significantly reduce development time, making it easier to experiment with alternative patterns and foster a more collaborative and open experimentation on building better digital spaces in such crucial times.&lt;/p&gt;
&lt;h2 id=&quot;experiment-overview&quot;&gt;Experiment overview &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/safer-social-networking-bonfire-s-recent-experiment-with-prosocial-design-patterns/#experiment-overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We chose to implement a feature allowing moderators to add content labels to posts, following a design pattern documented by the Prosocial Design Network: &lt;a href=&quot;https://www.prosocialdesign.org/library/label-misleading-content-add-links-to-reliable-related-content&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;label misleading content; add links to reliable, related content&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This pattern aims to reduce the spread of misinformation by adding context to potentially misleading posts, by displaying accurate information and sources alongside them.&lt;/p&gt;
&lt;p&gt;In the following example, a user has published a misleading post.&lt;/p&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/posttolabel.png&quot; /&gt;
&lt;p&gt;Our development process began with the creation of necessary user interface (UI) components. The first was simply adding a button in the dropdown menu next to every activity on Bonfire to allow moderators to add a label to a post.&lt;/p&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/labeltoaction.png&quot; /&gt;
&lt;p&gt;Moderators can then select a label in a modal. As outlined in the design pattern, we provided three default options: &lt;em&gt;Stay informed&lt;/em&gt;, &lt;em&gt;Get the latest&lt;/em&gt;, and &lt;em&gt;Misleading&lt;/em&gt;, though instance admins or moderators could add their own labels as well. Additionally, a text box is available for adding broader context, and up to three links can be included to offer reliable sources.&lt;/p&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/labelmodal.png&quot; /&gt;
&lt;p&gt;Once published, these notes become visible underneath the post for all instance users or visitors, and a preview is included for each of the reference links.&lt;/p&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/labelled.png&quot; /&gt;
&lt;p&gt;Once the UI components were built, along with the necessary backend functionality, it was just a matter of adding the new extension into the desired Bonfire flavour.&lt;/p&gt;
&lt;h2 id=&quot;results-and-insights&quot;&gt;Results and insights &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/safer-social-networking-bonfire-s-recent-experiment-with-prosocial-design-patterns/#results-and-insights&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We are extremely pleased with the outcomes of our experiment and the opportunity to benefit from the design patterns and research conducted by organizations like &lt;a href=&quot;https://newpublic.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NewPublic&lt;/a&gt;, &lt;a href=&quot;https://integrityinstitute.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Integrity Institute&lt;/a&gt;, &lt;a href=&quot;https://openfuture.eu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Future&lt;/a&gt;, and the &lt;a href=&quot;https://www.prosocialdesign.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prosocial Design Network&lt;/a&gt; and others.&lt;/p&gt;
&lt;p&gt;While implementing the design pattern, we encountered several thought-provoking questions, such as:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;How can users suggest notes and reference links to moderators?&lt;/li&gt;
    &lt;li&gt;How can users contribute feedback to those added by moderators?&lt;/li&gt;
	&lt;li&gt;How can different moderators collaborate effectively on creating or improving these notes?&lt;/li&gt;
	&lt;li&gt;What steps should be taken if a note or reference links are found to be inaccurate or misleading?&lt;/li&gt;
	&lt;li&gt;Initially, only moderators can add labels. Should we leverage Bonfire&#39;s custom roles to enable specific users review and label content, easing the load on instance moderators?&lt;/li&gt;
	&lt;li&gt;How can labels be used in a federated environment? At the moment moderators are tied to specific instances, at least until groups are introduced. Should we extend this feature to enable federated content labelling teams, so users (or entire instance) could subscribe to several trusted teams? &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Although we have potential answers to these questions, we believe it would be much more beneficial to open up the discussion and start a feedback loop where research, experimentation, and community feedback are all incorporated into both the documented design pattern and our implementation of it. This would provide a more comprehensive and holistic approach to building and evolving such features.&lt;/p&gt;
&lt;p&gt;It is worth noting that mitigating misinformation has been a crucial topic for the Bonfire team, and we have &lt;a href=&quot;https://bonfirenetworks.org/zappa&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;conducted research&lt;/a&gt; that informed the design and development of custom roles, boundaries, and circles - features that lie at the core of Bonfire&#39;s architecture.&lt;/p&gt;
&lt;p&gt;However, there is still some work to be done before we can include this feature in our &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;campground instance&lt;/a&gt; and testing it live with our community. Key among these tasks is the ability for moderators to edit or remove a content label and to adding a dedicated page for moderators where all labelled content is listed and can be reviewed, as listed in &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues/831&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;the relevant issue&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;potential-for-collaboration&quot;&gt;Potential for collaboration &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/safer-social-networking-bonfire-s-recent-experiment-with-prosocial-design-patterns/#potential-for-collaboration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This experiment showcases Bonfire&#39;s extensibility and highlights its potential as a collaborative toolkit for organizations aiming to improve our digital environments and discourse. The modularity and ease of use of Bonfire make it an ideal playground for testing and implementing innovative design patterns in the open.&lt;/p&gt;
&lt;p&gt;We are eager to explore partnerships that can leverage Bonfire’s capabilities, furthering our collective quest of creating safer, more engaging, and enjoyable federated digital spaces.&lt;/p&gt;
&lt;h2 id=&quot;comments&quot;&gt;Comments &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/safer-social-networking-bonfire-s-recent-experiment-with-prosocial-design-patterns/#comments&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Please join the &lt;a href=&quot;https://bonfire.cafe/@Bonfire/111822653600466648&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;discussion on the fediverse&lt;/a&gt; if you have thoughts or suggestions, and get in touch if you&#39;d like to collaborate.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Open source meets open science - announcing the Open Science Network initiative</title>
    <link href="https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/"/>
    <updated>2024-02-27T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/</id>
    <content type="html">&lt;p&gt;The scientific method must be liberated. In an era marked by misinformation, mass surveillance and political propaganda, corporate monopolies and platforms hinder scientific innovation and knowledge sharing. Scientists, researchers, academics and their affiliated organisations must have control over the tools and medium they use to publish, review, share, study and discuss their work.&lt;/p&gt;
&lt;p&gt;Today, we’re excited to present the &lt;a href=&quot;https://openscience.network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science Network&lt;/a&gt; initiative, a first step towards open and federated digital spaces designed to push the boundaries of open science and scholarly communication. You can read more about it on the &lt;a href=&quot;https://openscience.network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;official website&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what-is-an-open-science-%E2%80%98digital-space%E2%80%99&quot;&gt;What is an open science ‘digital space’ &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#what-is-an-open-science-%E2%80%98digital-space%E2%80%99&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A digital space is an online place where people gather and interact with one another. Some digital spaces are home to only one community, while others are platforms that host multiple communities. The organisation or individuals who set up and maintain the digital space control the user experience and the governance of that space.&lt;/p&gt;
&lt;p&gt;An ‘open science digital space’ includes a set of bespoke features and UX paired with a community dedicated to fostering open science practices. This means the space is intentionally designed to support the sharing of scientific knowledge, collaboration, and transparency in scientific research, promoting open reviews and production of scientific knowledge.&lt;/p&gt;
&lt;h2 id=&quot;our-journey-so-far&quot;&gt;Our journey so far &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#our-journey-so-far&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The idea of building a federated tool for sharing research on the social web started with &lt;a href=&quot;https://niboe.info/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Nibö&lt;/a&gt;, a science communication collective, wanting to build a social tool for academics and researchers. Nibö contacted the Bonfire team with innovative ideas on how a federated digital space specifically designed for scientific communities could benefit open science – promoting better practices and knowledge sharing for both scientists and users, and moving beyond the conventional use of social media as a mere content broadcasting tool. They wondered if such a federated digital space could be built atop Bonfire&#39;s modular and extensible architecture.&lt;/p&gt;
&lt;p&gt;Since this initial collaboration, we&#39;ve outlined a preliminary set of features, primarily catering to Nibö’s community while also considering the broader needs of the open science community.&lt;/p&gt;
&lt;p&gt;We soon discovered that the fediverse is an incredibly fertile ground for discussions on open science, where open science advocates, activists, researchers and communities have been increasingly gathering to share knowledge, collaborate or simply discuss how to foster open science practices.&lt;/p&gt;
&lt;p&gt;Driven by aligned visions and needs, together with &lt;a href=&quot;http://brembs.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Björn Brembs&lt;/a&gt; (author of &lt;a href=&quot;https://royalsocietypublishing.org/doi/10.1098/rsos.230206&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Replacing Academic Journals&lt;/a&gt; and &lt;a href=&quot;https://royalsocietypublishing.org/doi/10.1098/rsos.230207&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mastodon over Mammon: towards publicly owned scholarly knowledge&lt;/a&gt;), &lt;a href=&quot;https://fediscience.org/@UlrikeHahn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Ulrike Hahn&lt;/a&gt; (a coordinator of &lt;a href=&quot;https://scibeh.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SciBeh&lt;/a&gt;, an initiative that has been thinking about &lt;a href=&quot;https://write.as/ulrikehahn/some-thoughts-on-social-media-for-science&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;new digital infrastructure for science&lt;/a&gt;, including online workshops) and Nibö, we started the open science network. Its mission is to co-design, develop, study, iterate and disseminate tools to improve open science practices on federated digital spaces.&lt;/p&gt;
&lt;p&gt;The Open Science Network has been shaped by many contributions and ideas and benefited immensely from discussions over the fediverse.&lt;br /&gt;
With such an amount of grey matter in place, the next logical step was to validate the feasibility of these ideas and how they would play in a federated network.&lt;/p&gt;
&lt;h2 id=&quot;the-open-science-extension-prototype&quot;&gt;The open science extension prototype &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#the-open-science-extension-prototype&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/ospreview.png&quot; /&gt;
&lt;p&gt;We decided to start by tackling a (technically) low-hanging fruit to demonstrate the benefits of co-designing digital spaces with communities bottom-up and the feasibility of adding tailored features in Bonfire without messing with the rest of the codebase. We introduced a custom preview feature for posts containing links to papers or publications.&lt;/p&gt;
&lt;p&gt;This widget not only displays the paper&#39;s title and abstract (like standard link previews in other social networks) but also details the publication journal, co-authors, topics, publication date, and relevant links such as the &lt;a href=&quot;https://en.wikipedia.org/wiki/Digital_object_identifier&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DOI&lt;/a&gt; and the PDF when available - - with data automatically fetched from various open repositories. This feature enriches the context provided by linked papers, enhancing users&#39; understanding of the publication. &lt;a href=&quot;https://bonfire.cafe/@Bonfire/111793274037434384&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The prototype was shared across the fediverse, receiving a wave of feedback and encouraging reactions&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Based on that enthusiastic response, we ventured further to develop other features requested including:&lt;/p&gt;
&lt;h3 id=&quot;orcid-single-sign-on&quot;&gt;ORCID single sign-on &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#orcid-single-sign-on&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Researchers can sign in to their open science digital space using either their email and password or their &lt;a href=&quot;https://orcid.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ORCID&lt;/a&gt; credentials. This integration simplifies the login process and ensures that users can have a trusted provider to log into their digital space.&lt;/p&gt;
&lt;iframe class=&quot;w-full rounded-xl ring-4 ring-base-content/40&quot; title=&quot;orcid single sign on in Bonfire&quot; width=&quot;560&quot; height=&quot;400&quot; src=&quot;https://tube.tchncs.de/videos/embed/0ebcbb97-6c23-43c1-801b-320ba81129de&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt;
&lt;h3 id=&quot;automatic-import-of-publications-using-orcid-credentials&quot;&gt;Automatic import of publications using ORCID credentials &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#automatic-import-of-publications-using-orcid-credentials&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Linking a user&#39;s ORCID profile also enables the automatic import of their publications, using the ORCID API, which are then showcased on a dedicated &amp;quot;publications&amp;quot; tab within their profiles. This feature not only highlights the researcher&#39;s work but also facilitates easy access to their scientific contributions - evolving their social profile into a professional one.&lt;/p&gt;
&lt;iframe class=&quot;w-full rounded-xl ring-4 ring-base-content/40&quot; title=&quot;Automatic Import of Publications using ORCID credentials&quot; width=&quot;560&quot; height=&quot;400&quot; src=&quot;https://tube.tchncs.de/videos/embed/b2f258f9-fe4e-477f-b721-b67978e73939&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt;
&lt;h3 id=&quot;publications-feed&quot;&gt;Publications feed &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#publications-feed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A new &amp;quot;publications&amp;quot; feed aggregates all papers fetched via users’ ORCID profiles or added via post links, so users can discover publications of other members of their digital space, including those from followed users on remote instances. This fosters a wide-ranging view of scientific contributions within a digital space federated network.&lt;/p&gt;
&lt;iframe class=&quot;w-full rounded-xl ring-4 ring-base-content/40&quot; title=&quot;Publications feed&quot; width=&quot;560&quot; height=&quot;400&quot; src=&quot;https://tube.tchncs.de/videos/embed/b758c6c2-4975-4d21-bc50-bae6d8fa2918&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups&quot;&gt;&lt;/iframe&gt;
&lt;h3 id=&quot;conduct-a-discussion-around-a-publication&quot;&gt;Conduct a discussion around a publication &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#conduct-a-discussion-around-a-publication&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Beyond reading publications, users can start discussing them with authors and amongst themselves. This means going beyond content distribution and fostering academic discourse and open collaboration, enriching scientific cooperation within the community and beyond.&lt;/p&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/osreply.png&quot; /&gt;
&lt;p&gt;All the code is open source and available for anyone to pick up and try out or extend. We published a new &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_open_science&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science extension for Bonfire&lt;/a&gt; that includes code for most of the features requested (other bits live in different extensions as they are transversal to different use cases, such as federated groups and topics).&lt;/p&gt;
&lt;p&gt;We did enough work to confidently say....&lt;/p&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/itcouldwork.jpeg&quot; /&gt;
&lt;p&gt;We &lt;strong&gt;can&lt;/strong&gt; develop an open science extension that academics and scientists can include in their Bonfire instances - we hope it can nurture and promote a novel paradigm of scientific practices.&lt;/p&gt;
&lt;h2 id=&quot;next-steps&quot;&gt;Next steps &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#next-steps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We have now launched the &lt;a href=&quot;https://openscience.network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science Network website&lt;/a&gt; to try gathering together more communities, organisations and researchers to co-design features and support the project.&lt;/p&gt;
&lt;p&gt;Moving forward, our plans include refining the current features in collaboration with scientific communities, moving from prototypes to reliable and tested features and incorporating additional ones if necessary.&lt;/p&gt;
&lt;p&gt;We will iteratively test the open science digital space with pilots to ensure that new communities can set up their own digital space with confidence.&lt;/p&gt;
&lt;h2 id=&quot;how-to-contribute&quot;&gt;How to contribute &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/open-source-meets-open-science-announcing-the-open-science-network-initiative/#how-to-contribute&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;If you wish to propose a new feature or refine an existing one, please &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/milestone/56&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;open an issue&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;To join the network or participate as a pilot community, contact us at team@openscience.network&lt;/li&gt;
&lt;li&gt;If you&#39;re interested in contributing through coding, design, facilitation, social media, or other tasks, please get in touch at team@openscience.network&lt;/li&gt;
&lt;li&gt;We won’t take private capital or venture funds, but we do need more resources to onboard additional collaborators to partner with pilot projects to test and iterate features. We would greatly appreciate support for our work through donations or grants. Please reach out to us at team@openscience.network or donate directly via our &lt;a href=&quot;https://opencollective.com/bonfire-networks/projects/open-science-network&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Collective account&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Please spread the word about these initiatives to broaden their impact.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire Expeditions - Collaborating to Release Version 1.0</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-expeditions-collaborating-to-release-version-1-0/"/>
    <updated>2024-06-11T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-expeditions-collaborating-to-release-version-1-0/</id>
    <content type="html">&lt;p&gt;Releasing the stable 1.0 version of the Bonfire federated social network requires collaboration with the communities, hackers, tinkerers, and sysadmins who plan to use it.&lt;/p&gt;
&lt;p&gt;That&#39;s why we&#39;re thrilled to announce &lt;strong&gt;Bonfire Expeditions&lt;/strong&gt; - a series of co-design initiatives aimed at refining and polishing various aspects of the project. These expeditions will ensure that all the moving parts of Bonfire work together seamlessly, making the project safe and enjoyable for both communities and developers.&lt;/p&gt;
&lt;p&gt;Each Bonfire Expedition will focus on one of the following areas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Surveying:&lt;/strong&gt; Developer Experience, Onboarding and Documentation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Camp:&lt;/strong&gt; Instance Configuration and Tools&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Care:&lt;/strong&gt; Safety and Moderation Features and UX&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Party:&lt;/strong&gt; Installation and Admin&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;surveying-expedition%3A-enhancing-developer-onboarding&quot;&gt;Surveying Expedition: Enhancing Developer Onboarding &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-collaborating-to-release-version-1-0/#surveying-expedition%3A-enhancing-developer-onboarding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Challenge&lt;/strong&gt;: Bonfire&#39;s modularity and architecture can be intimidating, and the current documentation is insufficient to properly guide developers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Objective&lt;/strong&gt;: Streamline the developer experience for setting up the Bonfire dev environment, manage and create new extensions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to Participate&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We are looking for 5 Elixir developers to begin with&lt;/li&gt;
&lt;li&gt;Each developer will have a 1-hour pairing session with the Bonfire team&lt;/li&gt;
&lt;li&gt;During the session, the participant will go through the setup of the bonfire developer environment and the creation of a Hello World extension.&lt;/li&gt;
&lt;li&gt;Developers will vocalize their thoughts, doubts, and suggestions throughout the process&lt;/li&gt;
&lt;li&gt;The Bonfire team will provide support and help overcome any obstacles when necessary&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;After each session, the Bonfire team will:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compile all feedback and insights&lt;/li&gt;
&lt;li&gt;Incorporate feedback into the codebase and documentation&lt;/li&gt;
&lt;li&gt;Refine the onboarding experience for the next session&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Compensation:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Participating developers can request compensation of €50 for their time on the &lt;a href=&quot;https://opencollective.com/bonfire-networks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;project’s OpenCollective&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you&#39;re an Elixir developer who&#39;s passionate about the potential of federated social networks and wants to contribute to shaping the future of Bonfire, join us on this expedition! Send a mail to team@bonfire.cafe to participate in the Surveying Expedition, and we&#39;ll reach out with all the necessary details.&lt;/p&gt;
&lt;p&gt;Together, we can make Bonfire&#39;s 1.0 release a truly landmark moment. Let&#39;s embark on this journey and build something extraordinary, one expedition at a time!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire Expeditions - Camp! A bounty programme</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/"/>
    <updated>2024-08-07T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/</id>
    <content type="html">&lt;h2 id=&quot;%F0%9F%8E%89-welcome-to-the-bonfire-bounty-programme&quot;&gt;🎉 Welcome to the Bonfire Bounty Programme &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#%F0%9F%8E%89-welcome-to-the-bonfire-bounty-programme&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://bonfirenetworks.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire&lt;/a&gt; is an open source framework written in Elixir that enables communities to create their own federated digital space. These spaces can range from simple group chats to complex infrastructures for municipalities, and everything in between.&lt;/p&gt;
&lt;p&gt;The Bonfire Bounty Programme offers monetary compensation for tackling specific challenges.&lt;/p&gt;
&lt;p&gt;This initiative aims to inspire developers to learn the stack and framework and to create Bonfire extensions, while helping to close some issues along the way.&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%8F%B4%E2%80%8D%E2%98%A0%EF%B8%8F-camp!-expedition&quot;&gt;🏴‍☠️ Camp! expedition &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#%F0%9F%8F%B4%E2%80%8D%E2%98%A0%EF%B8%8F-camp!-expedition&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve started a &lt;a href=&quot;https://bonfirenetworks.org/posts/surveying_expedition/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;series of expeditions&lt;/a&gt; to increase developers contributions and get help to reach our v1.0 release.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://elixirforum.com/t/logging-our-journey-improving-developer-experience-of-bonfire/64204&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;first expedition: Surveying&lt;/a&gt;, is currently ongoing and focuses on improving docs and dev onboarding by doing 1-to-1 sessions with developers.&lt;br /&gt;
Our second expedition: Camp!  includes a series of bounties for developers to help us with current technical blockers.&lt;/p&gt;
&lt;p&gt;The Camp! expedition will target a specific set of bounties that is currently preventing Bonfire to be used and adopted more widely and it is focused on the features in the Bonfire Classic flavour. All submissions are evaluated based on the quality of the code, performance and documentation.&lt;/p&gt;
&lt;h2 id=&quot;bounties&quot;&gt;Bounties &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#bounties&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;open-bounties&quot;&gt;Open bounties &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#open-bounties&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bonfire-networks/bounties/issues/1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Improve DB query performance&lt;/a&gt; &lt;code&gt;€1,000&lt;/code&gt; + half of donations to the &lt;a href=&quot;https://opencollective.com/bonfire-networks/projects/improve-db-query-performance&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dedicated Open Collective&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bonfire-networks/bounties/issues/2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Improve feed rendering performance&lt;/a&gt; &lt;code&gt;€1,000&lt;/code&gt; + half of donations to the &lt;a href=&quot;https://opencollective.com/bonfire-networks/projects/feed-render-performance&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;dedicated Open Collective&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;upcoming-bounties&quot;&gt;Upcoming bounties &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#upcoming-bounties&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Validate OpenID Connect and OAuth (client and server) implementation&lt;/li&gt;
&lt;li&gt;Refactor and unify feed logic&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;%F0%9F%AB%B6-collaborative-approach-to-bounties&quot;&gt;🫶 Collaborative approach to bounties &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#%F0%9F%AB%B6-collaborative-approach-to-bounties&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We want to experiment with a bounty system designed to foster collaboration rather than competition. We aim to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Organically grow the number of developers contributing to Bonfire.&lt;/li&gt;
&lt;li&gt;Make Bonfire a go-to framework for experimentation, both for people new to Elixir or even to coding and for seasoned developers, with clear design patterns and a robust documentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We encourage developers to work openly by:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Digging into the problem and sharing insights or potential solutions in each dedicated bounty issue.&lt;/li&gt;
&lt;li&gt;Collaborating with others developers to improve the overall quality of solutions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, the Bonfire Team will organize recorded sessions to discuss each issue, navigate the relevant code, address blocking issues, tests, and provide pertinent information to ensure developers can effectively work on the bounty.&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%92%B0-compensation&quot;&gt;💰 Compensation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#%F0%9F%92%B0-compensation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;primary-bounty&quot;&gt;Primary bounty &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#primary-bounty&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;One developer will receive the full bounty amount for the selected solution, plus half of donations to the dedicated Open Collective.&lt;/p&gt;
&lt;p&gt;Each submission (likely to consist of pull requests on multiple Bonfire repositories) will be tested and benchmarked on the &lt;a href=&quot;https://playground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;playground&lt;/a&gt; instance.&lt;/p&gt;
&lt;p&gt;To be selected, the contribution must demonstrate a deep understanding of the core problem, and solve it effectively and efficiently. Alongside the technical correctness, it should also be submitted with a clean code, clear explanations and a complete documentation.&lt;/p&gt;
&lt;h3 id=&quot;additional-compensation&quot;&gt;Additional compensation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#additional-compensation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We have allocated a separate fund to reward valuable contributions beyond the winning solution. Depending on available funding, 2 or more developers per bounty can receive €200 each for the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Significant code contribution&lt;/strong&gt;: You created pull request(s) that while not satisfying all the criteria or fully solving the bounty,  inspired and helped other developers to do so. Also valid if you commented on issues or pull requests with additional code to improve other developers’ solutions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meaningful support&lt;/strong&gt;: You supported other developers in solving the bounty by clarifying issues, reviewing code, running tests and benchmarks, suggesting solutions or improvements, writing documentation, or explaining concepts that helped.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;We acknowledge that the funding allocated does not reflect the labour and time that&#39;s likely to be involved. To hopefully increase the compensation, we&#39;re asking for help from the community: &lt;strong&gt;half of the donations collected through each respective Open Collective page will be go to the primary bounty and the other half will be distributed to people who make meaningful contributions&lt;/strong&gt;, as a way to recognize and encourage broader participation and share responsibility for the project&#39;s sustainability with the broader community.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;%F0%9F%92%BB-how-to-participate&quot;&gt;💻 How to participate &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#%F0%9F%92%BB-how-to-participate&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;requisites&quot;&gt;Requisites &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#requisites&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Ensure you have read &lt;a href=&quot;https://bonfirenetworks.org/conduct/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;our Code of Conduct&lt;/a&gt; and these guidelines to know what you will expect by participating to our bounty programme. Then read through the bounty details and requirements carefully.&lt;/p&gt;
&lt;h3 id=&quot;work-on-the-challenge&quot;&gt;Work on the challenge &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#work-on-the-challenge&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Use the provided resources and fork the relevant git repositories to work on. If you have any questions during your work, feel free to comment directly on the bounty issue and we will be happy to assist you.&lt;/p&gt;
&lt;h3 id=&quot;submission&quot;&gt;Submission &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#submission&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Once you have started your work (or at any stage you prefer, though we recommend working in the open), create a draft pull request with your code. You can then ask for feedback and iterate on the same pull request until ready to submit.&lt;/p&gt;
&lt;h3 id=&quot;discussion-and-compensation&quot;&gt;Discussion and compensation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#discussion-and-compensation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The Bonfire team will review and discuss submitted pull requests and merge the one that satisfies all requirements most effectively, and proceed with awarding the bounty (please note that payment may take up to a month).&lt;/p&gt;
&lt;p&gt;At the same time, besides the awarded developer, we will optionally compensate other contributors with 200€ each, based on their effort, support, and impact in helping to close the bounty.&lt;/p&gt;
&lt;h2 id=&quot;%E2%84%B9%EF%B8%8F-support&quot;&gt;ℹ️ Support &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-expeditions-camp-a-bounty-programme/#%E2%84%B9%EF%B8%8F-support&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;For questions on a specific bounty, comment on the dedicated issue&lt;/li&gt;
&lt;li&gt;Matrix channels for realtime chat: &lt;a href=&quot;https://matrix.to/#/%23bonfire-networks:matrix.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;General&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://matrix.to/#/%23bonfire-tech:matrix.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Technical&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Forum for technical discussions: &lt;a href=&quot;https://elixirforum.com/tag/bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Elixir Forum&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Email for private questions: team@bonfire.cafe&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Building Bonfire Native Apps with LiveView Native</title>
    <link href="https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/"/>
    <updated>2024-09-27T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/</id>
    <content type="html">&lt;h2 id=&quot;introduction&quot;&gt;Introduction &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/#introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Welcome to the first post of our development diary for the Bonfire native app. In this series, we&#39;ll journey together through the entire process of designing and publishing Bonfire on the Apple App Store using &lt;a href=&quot;https://native.live/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiveView Native (LVN)&lt;/a&gt;, an experimental framework that enables developers to build native applications using Elixir.&lt;/p&gt;
&lt;p&gt;We&#39;re focusing on iOS first because the current LVN release targets the Apple ecosystem (iOS and macOS, but also watches, TV, and vision pro), with Android support coming next. At the time of writing, LVN is at version 0.3, so some approaches and solutions will evolve over time. We aim to provide the most accurate and up-to-date information but encourage readers to check the docs for details and contribute their knowledge along the way.&lt;/p&gt;
&lt;h2 id=&quot;why-liveview-native-and-elixir&quot;&gt;Why LiveView Native and Elixir &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/#why-liveview-native-and-elixir&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/liveview-native&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiveView Native&lt;/a&gt; is an exciting new framework developed by &lt;a href=&quot;https://dockyard.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DockYard&lt;/a&gt; that extends Phoenix LiveView to native platforms, enabling real-time, interactive native applications with a unified codebase. &lt;a href=&quot;https://dockyard.com/blog/2024/09/09/liveview-native-is-here&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;As they mentions in the announcement&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Because we are leveraging the LiveView programming model, if you already have a LiveView application built you already have 75% of the work done to build a LiveView Native application. State management and event handling are shared between target destinations.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This approach is a perfect match for an open-source project like Bonfire. By building upon existing code and staying within the Elixir ecosystem, we can invest more time in strengthening our codebase without needing a traditional client-server API or splitting efforts across different languages, while still using each platform&#39;s unique native UI framework to deliver a state-of-the-art user experience (e.g. using SwiftUI and Android Jetpack for the native UI in shared components and views, alongside the HTML/CSS already used in the web app).&lt;/p&gt;
&lt;p&gt;Through this dev diary, we aim to open up our development process and share our challenges and progress with the wider Elixir community. We&#39;ll share code, lessons learned, and materials starting from the very first mock-ups, inviting the community to jump in, provide feedback, and ask questions along the way.&lt;/p&gt;
&lt;p&gt;We also plan to experiment with existing Figma plugins to convert designs to code (SwiftUI) and later attempt to convert that code into LVN&#39;s Elixir syntax. There will be a lot of trial and error, especially since we don&#39;t have prior experience with SwiftUI, but that&#39;s part of the experiment.&lt;/p&gt;
&lt;h2 id=&quot;the-journey-begins%3A-designing-initial-mock-ups-with-figma&quot;&gt;The journey begins: designing initial mock-ups with Figma &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/#the-journey-begins%3A-designing-initial-mock-ups-with-figma&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Using &lt;a href=&quot;https://www.figma.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Figma&lt;/a&gt;, we&#39;ve created initial mockups that lay the groundwork for Bonfire&#39;s user interface and experience. While these mock-ups are still in the early stages, they represent our vision for the app&#39;s basic look and feel. We won&#39;t include all of Bonfire&#39;s functionalities in the first release of the native app; instead, we&#39;ll adopt an incremental approach. We&#39;ll publish a basic app that lets users perform essential social networking features, then expand its complexity and give more control to users as we become more confident using the LVN framework and as it becomes more stable.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/figma.png&quot; alt=&quot;Figma&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;setting-up-the-figma-environment&quot;&gt;Setting up the Figma environment &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/#setting-up-the-figma-environment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Apple recently published the &lt;a href=&quot;https://www.figma.com/community/file/1385659531316001292/ios-18-and-ipados-18&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;iOS and iPadOS 18 UI Kit&lt;/a&gt; for Figma—a set of components and assets, including variables and Apple&#39;s color palette, to use in our Figma mockups. This is essential for properly designing iOS mockups following Apple&#39;s design guidelines.&lt;/p&gt;
&lt;p&gt;Before creating our first mockup, we also downloaded the latest &lt;a href=&quot;https://developer.apple.com/sf-symbols/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SF fonts and symbols&lt;/a&gt; from the Apple Developer website to use them across all views and components. We also downloaded the Figma desktop app to benefit from local fonts installed on our machines.&lt;/p&gt;
&lt;p&gt;With the standard iOS assets, icons, and fonts in place, we&#39;ve created our first view using the iPhone 14 &amp;amp; 15 Pro frame as a reference.&lt;/p&gt;
&lt;p&gt;Before building our mock-ups, we found it helpful to define layout grids. Layout grids help maintain order and structure, ensuring all elements are well-aligned and proportionate by defining both row and column configurations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Columns:&lt;/strong&gt; A common grid column configuration for iPhone is 6 columns with a 16px gutter and margin. Set the columns to &amp;quot;Stretch&amp;quot; to automatically adapt to different screen sizes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rows:&lt;/strong&gt; We set the count to &amp;quot;Auto,&amp;quot; type to &amp;quot;Top,&amp;quot; height to 44 (the standard touch target size in iOS), and offset to 54 (to start the grid just below the status bar) with a gutter of 16 points.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This configuration results in a view like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/grids.png&quot; alt=&quot;Figma&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;bonfire&#39;s-basic-views&quot;&gt;Bonfire&#39;s basic views &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/#bonfire&#39;s-basic-views&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In our initial design, we&#39;ve defined the following basic app views:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Main timeline&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profile&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Search&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Notifications&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discussion&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compose form&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There&#39;s nothing too fancy; we&#39;ve mostly used standard iOS assets where possible and Apple&#39;s color palette and typography for all the custom components we&#39;ve created.&lt;/p&gt;
&lt;p&gt;We&#39;ve added a &lt;strong&gt;Components&lt;/strong&gt; page listing all the component instances, which we clone to include in our views. We detach components from the main instance when custom edits are needed.&lt;/p&gt;
&lt;p&gt;We&#39;re striving to keep things clean and maintain our Figma files in an organized and well-structured manner. We can&#39;t promise adherence to all best practices, as our experience with Figma is quite limited. However, we&#39;ve loved using the auto layout feature to create more structured components, and we highly recommend building components using auto layout—it may seem daunting at first, but it&#39;s very easy to work with once you delve into it.&lt;/p&gt;
&lt;p&gt;In the next post, we&#39;ll expand on these mockups, adding more details and including interactive flows, additional screens, and animations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Access the Figma document here:&lt;/strong&gt; &lt;a href=&quot;https://www.figma.com/design/BwQln11Fccd6alJeNe53EW/iOS?node-id=0-1&amp;amp;t=jq5jEWSN9gFUqOkP-1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire iOS App Mockups&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;By clicking the link, you can view the current designs, leave comments directly on the mockups, and provide suggestions to design a better Bonfire native app. Your feedback is invaluable, whether it&#39;s about aesthetics, user experience, or features you&#39;d like to see.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;what&#39;s-next%3F&quot;&gt;What&#39;s next? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/#what&#39;s-next%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In the upcoming posts, we&#39;ll dive into:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enhancing the mock-ups:&lt;/strong&gt; Adding user flows, interactive components and animations, and more detailed screens - eventually publishing the Bonfire design library in Figma for anyone to use and build upon.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Translating designs to SwiftUI:&lt;/strong&gt; Once we&#39;re satisfied with the design, we&#39;ll start converting them into SwiftUI code, discussing challenges and learnings along the way.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Exploring LiveView Native:&lt;/strong&gt; Attempting to port SwiftUI code to LVN, including the hurdles and triumphs of using an evolving pre-1.0 framework to implement a federated social network&#39;s moving parts and design patterns.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Putting AI to work:&lt;/strong&gt; Experimenting with LLMs to automate parts of the translation from SwiftUI to LVN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publishing on the Apple App Store:&lt;/strong&gt; Documenting the process and requirements to publish the app.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;join-the-journey&quot;&gt;Join the journey &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/building-bonfire-native-apps-with-liveview-native/#join-the-journey&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Beyond sharing our experience, we aim for Bonfire to become a place where both beginner and experienced developers can learn, build, experiment, and collaborate using the Elixir programming language to design open and federated social networks. We invite developers to dive into the framework, provide feedback, ask questions, and help push the boundaries of federated and open-source digital spaces.&lt;/p&gt;
&lt;p&gt;Here&#39;s how you can get involved:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Feedback and suggestions:&lt;/strong&gt; Follow us on the &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fediverse&lt;/a&gt; and join our discussions on the &lt;a href=&quot;https://elixirforum.com/t/bonfire-networks-an-open-source-framework-for-building-federated-digital-spaces/65587&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Elixir Forum&lt;/a&gt;, &lt;a href=&quot;https://app.slack.com/client/TMQ3PKXT9/C077S4K94CV&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#Bonfire room in Elixir Slack&lt;/a&gt; or our &lt;a href=&quot;https://matrix.to/#/%23bonfire-networks:matrix.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Matrix space&lt;/a&gt; to stay updated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Collaborate:&lt;/strong&gt; If you&#39;re interested in contributing code or ideas, you can have a look at our &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues?q=sort%3Aupdated-desc+is%3Aissue+is%3Aopen+label%3A%22Good+first+issue%22&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&amp;quot;good first issues&amp;quot;&lt;/a&gt; or check out our &lt;a href=&quot;https://github.com/bonfire-networks/bounties&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;open bounties&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Prototyping Our First Native Components with LiveView Native</title>
    <link href="https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/"/>
    <updated>2024-10-03T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;Read part one: &lt;a href=&quot;https://bonfirenetworks.org/posts/dev_diary_lvn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Building Bonfire Native Apps with LiveView Native&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;With our initial mockups complete, we were eager to start coding in LiveView Native (LVN). There are two primary ways to debug an iOS app: using Xcode or LVN Go. &lt;a href=&quot;https://dockyard.com/blog/2024/09/10/introducing-lvn-go&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;LVN Go&lt;/strong&gt; is an application available on macOS, iPad, and iPhone that allows you to test a LiveView Native app directly on a device by pointing it to the Phoenix server URL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We chose to use &lt;strong&gt;Xcode&lt;/strong&gt; because we need to build custom SwiftUI views in the future for our specific use case.&lt;/p&gt;
&lt;p&gt;For reference, I&#39;m using &lt;strong&gt;Xcode beta&lt;/strong&gt; with the &lt;strong&gt;iPhone 16 simulator&lt;/strong&gt; running &lt;strong&gt;iOS 18&lt;/strong&gt; on &lt;strong&gt;macOS Sequoia&lt;/strong&gt;, and &lt;code&gt;live_view_native_swiftui&lt;/code&gt; version &lt;strong&gt;0.3.0&lt;/strong&gt;.&lt;br /&gt;
iOS 17 should work fine as well; however, I experienced some SwiftUI errors with older versions.&lt;/p&gt;
&lt;p&gt;I followed the tutorial from the &lt;a href=&quot;https://dockyard.com/blog/2023/07/07/getting-started-with-liveview-native-swiftui&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;DockYard blog post&lt;/a&gt; to set up a basic LiveView Native app.&lt;/p&gt;
&lt;p&gt;Adding LVN is quite straightforward, though there are still some tweaks that need to be done manually, such as editing the &lt;code&gt;dev.exs&lt;/code&gt; file. Nonetheless, the experience is already pretty smooth!&lt;/p&gt;
&lt;p&gt;To debug my app, I needed to run the project on Xcode. Fortunately, the basic code to set up the SwiftUI app and connect to the Phoenix server is automatically generated when running the &lt;code&gt;mix lvn.setup.gen&lt;/code&gt; task.&lt;/p&gt;
&lt;p&gt;I just had to open the project by running:&lt;/p&gt;
&lt;pre class=&quot;language-bash&quot;&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span class=&quot;token function&quot;&gt;open&lt;/span&gt; native/swiftui/Counter.xcodeproj&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Xcode begins fetching dependencies and may trigger some errors. Enabling permissions for plugins used by LiveView Native, as outlined in the &lt;a href=&quot;https://hexdocs.pm/live_view_native_swiftui/create-a-swiftui-application.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;official guide&lt;/a&gt;, solves all of them.&lt;/p&gt;
&lt;p&gt;At this point, I was ready to build and run the app on the iPhone simulator.&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;understanding-swiftui-and-lvn&quot;&gt;Understanding SwiftUI and LVN &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/#understanding-swiftui-and-lvn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;One of the challenges I encountered was wrapping my head around the SwiftUI way of building interfaces and then translating that back to LVN. I found myself frequently switching between the &lt;a href=&quot;https://developer.apple.com/documentation/swiftui&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SwiftUI documentation&lt;/a&gt; and the &lt;a href=&quot;https://hexdocs.pm/live_view_native_swiftui/syntax_conversion.html#content&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LiveView Native SwiftUI syntax conversion guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Other resources I found useful were the &lt;a href=&quot;https://github.com/LiveViewNative/recipes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LVN CookBook&lt;/a&gt; (a collection of useful design patterns) and the &lt;a href=&quot;https://github.com/LiveViewNative/lax&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Lax GitHub repository&lt;/a&gt; (a minimal Slack clone built with LVN).&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;leveraging-ai-and-community-support&quot;&gt;Leveraging AI and Community Support &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/#leveraging-ai-and-community-support&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;There were some parts I still need to understand better, but using AI tools like &lt;strong&gt;Claude 3.5 sonnet&lt;/strong&gt; and &lt;strong&gt;GPT-4o&lt;/strong&gt; often helped in navigating component design in SwiftUI and translating SwiftUI code into LVN. When I wasn&#39;t able to do it on my own, the LiveView Native slack community was very supportive.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;prototyping-components&quot;&gt;Prototyping Components &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/#prototyping-components&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;At this point, I just wanted to get a feel of how to build native components in LVN, before starting to build the main pages of the app. I ended up prototyping a few components that are trasversal to the main views of the Bonfire iOS app, such as the Dropdown Menu and the Modal.&lt;/p&gt;
&lt;h3 id=&quot;dropdown-menu&quot;&gt;Dropdown Menu &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/#dropdown-menu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;LVN includes the &lt;a href=&quot;https://developer.apple.com/documentation/swiftui/menu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SwiftUI&lt;/a&gt; default &lt;code&gt;Menu&lt;/code&gt; component:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;Menu&lt;/span&gt;&gt; 
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:label&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Edit&lt;/span&gt; &lt;span class=&quot;token module class-name&quot;&gt;Actions&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt; 
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Group&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; 
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt; phx&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;click&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;arrange&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Arrange&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt; 
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt; phx&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;click&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;update&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Update&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt; 
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt; phx&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;click&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;remove&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Remove&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt; 
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Group&lt;/span&gt;&gt; 
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Menu&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The unfamiliar bit for me here was the &lt;code&gt;template&lt;/code&gt; prop on both &lt;code&gt;Text&lt;/code&gt; and &lt;code&gt;Group&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;https://developer.apple.com/documentation/swiftui/menu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SwiftUI&lt;/a&gt;, the &lt;code&gt;Menu&lt;/code&gt; struct requires both a &lt;code&gt;label&lt;/code&gt; and &lt;code&gt;content&lt;/code&gt; parameter, which are closures returning the views to be displayed in the menu component:&lt;/p&gt;
&lt;pre class=&quot;language-swift&quot;&gt;&lt;code class=&quot;language-swift&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;struct&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Menu&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token class-name&quot;&gt;Label&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Content&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;where&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Label&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;View&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;Content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token class-name&quot;&gt;View&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In LVN, when a SwiftUI struct or modifier expects a closure or a content view (like &lt;code&gt;content&lt;/code&gt;, &lt;code&gt;label&lt;/code&gt;, &lt;code&gt;footer&lt;/code&gt;, etc.), we use the &lt;code&gt;template&lt;/code&gt; attribute to link a child view to that modifier&#39;s parameter.&lt;/p&gt;
&lt;p&gt;I further customized the menu by including icons next to each menu item and adding a divider to separate different groups of content. The final component looks like this:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;Menu&lt;/span&gt;&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;HStack&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:label&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;tint(.black)&quot;&lt;/span&gt;&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt; style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;font(.body);&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Following&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Image&lt;/span&gt; systemName&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;chevron.down.circle.fill&quot;&lt;/span&gt; style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;padding(.leading, 2);&quot;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;HStack&lt;/span&gt;&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Group&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;house&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;eye&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Following&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;person.2&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Local&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;globe&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Remote&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Divider&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt; phx&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;click&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;show_filters&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;line.3.horizontal.decrease.circle&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Filters&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Group&lt;/span&gt;&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Menu&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;modal-%2F-sheet&quot;&gt;Modal / Sheet &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/#modal-%2F-sheet&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;LiveView Native includes a default modal among other components in the &lt;code&gt;core_components&lt;/code&gt; file. It is a simple &lt;code&gt;VStack&lt;/code&gt; with a &lt;code&gt;sheet&lt;/code&gt; modifier. The &lt;code&gt;sheet&lt;/code&gt; modifier accepts an &lt;code&gt;isPresented&lt;/code&gt; value to toggle visibility, a &lt;code&gt;:content&lt;/code&gt; view, and an &lt;code&gt;onDismiss&lt;/code&gt; callback. The code looks like this:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;modal&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;assigns&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
  ~&lt;span class=&quot;token module class-name&quot;&gt;LVN&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
  &amp;lt;VStack
    id={@id}
    :if={@show}
    style=&#39;sheet(isPresented: attr(&quot;presented&quot;), content: :content)&#39;
    presented={@show}
    phx-change={@on_cancel}
  &gt;
    &amp;lt;VStack template=&quot;content&quot;&gt;
      &amp;lt;%= render_slot(@inner_block) %&gt;
    &amp;lt;/VStack&gt;
  &amp;lt;/VStack&gt;
  &quot;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;customizing-the-modal&quot;&gt;Customizing the Modal &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/#customizing-the-modal&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;I wanted to further refine the modal by tweaking its size, including a drag indicator, and changing the background.&lt;br /&gt;
Specifically, I wanted to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Make the modal initially occupy half the size of the screen.&lt;/li&gt;
&lt;li&gt;Include a drag indicator.&lt;/li&gt;
&lt;li&gt;Allow it to expand or dismiss completely.&lt;/li&gt;
&lt;li&gt;Replace the default background color with a translucent one.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The final result looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/sheet.png&quot; alt=&quot;Modal Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(It&#39;s not easy to notice the translucent effect due to the flat background color behind the modal.)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To achieve this result, I included a few custom classes in the &lt;code&gt;VStack&lt;/code&gt;&#39;s &lt;code&gt;:content&lt;/code&gt; template.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; It took me some time, along with assistance from the LVN team, to realize that the classes should be applied not to the main sheet component, but to the child VStack with the :content template. This is a key detail from the &lt;a href=&quot;https://developer.apple.com/documentation/swiftui/view/presentationdetents(_:)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SwiftUI API&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt; class&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;detents:medium:large ultrathinmaterial dragindicator:visible&quot;&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:content&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Classes&lt;/strong&gt; are an alternative way to add modifiers. They can combine multiple modifiers to create easy-to-use and standard components, and they can be chained together—much like Tailwind CSS.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4 id=&quot;defining-custom-classes&quot;&gt;Defining Custom Classes &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/#defining-custom-classes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;In my &lt;code&gt;app.swiftui.ex&lt;/code&gt; file, I&#39;ve defined the classes used above:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;
~&lt;span class=&quot;token module class-name&quot;&gt;SHEET&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
&quot;dragindicator:&quot; &amp;lt;&gt; do
  presentationDragIndicator(.{props})
end

&quot;ultrathinmaterial&quot; do
  presentationBackground(.ultraThinMaterial)
end
&quot;&quot;&quot;&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;detents:&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&gt;&lt;/span&gt; props&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;start&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token module class-name&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;props&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  ~&lt;span class=&quot;token module class-name&quot;&gt;RULES&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
    presentationDetents([.{start}, .{end}])
  &quot;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;hr /&gt;
&lt;p&gt;And that&#39;s it!&lt;/p&gt;
&lt;hr /&gt;
&lt;h3 id=&quot;what&#39;s-next%3F&quot;&gt;What&#39;s Next? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/prototyping-our-first-native-components-with-liveview-native/#what&#39;s-next%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In the next entry, we will start defining the views for the main pages outlined in our mockups, build the main components for each of them, and navigate between pages using the &lt;code&gt;TabView&lt;/code&gt; component and links.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stay tuned!&lt;/strong&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Understanding Navigation in LiveView Native</title>
    <link href="https://bonfirenetworks.org/posts/understanding-navigation-in-liveview-native/"/>
    <updated>2024-10-08T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/understanding-navigation-in-liveview-native/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;Read part one: &lt;a href=&quot;https://bonfirenetworks.org/posts/dev_diary_lvn&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Building Bonfire Native Apps with LiveView Native&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;Read part two: &lt;a href=&quot;https://bonfirenetworks.org/posts/dev_diary_lvn_2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Prototyping Our First Native Components with LiveView Native&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: This entry may evolve over time as the LiveView Native team pushes improvements and releases major versions of the libraries. Please bear with us as we test and implement the main navigation patterns in our upcoming Bonfire native app! Also, this article reflects our current understanding of SwiftUI and LiveView Native; we would love to get feedback and improve any parts that are not accurate!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Thanks to the LiveView Native team for their feedback and support! 🔥&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In our previous article, we experimented with building some simple UI components that we&#39;ll be using across the Bonfire app, and at the same time, we&#39;ve developed some initial confidence in writing LiveView Native (LVN) code.&lt;/p&gt;
&lt;p&gt;Today, we&#39;ll go through the implementation of the main navigation patterns needed to traverse our app&#39;s sections and views.&lt;/p&gt;
&lt;h2 id=&quot;liveview-native-navigation&quot;&gt;LiveView Native Navigation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/understanding-navigation-in-liveview-native/#liveview-native-navigation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In SwiftUI, there are three main ways to navigate an app:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tab Bar&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Navigation Bar&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The destination can be a different section in the same view, a different page, a sheet (modal), or an external view.&lt;/p&gt;
&lt;p&gt;In LiveView Native, all the routing and navigation happens within the &lt;code&gt;NavigationStack&lt;/code&gt; view, which is included by default in the &lt;code&gt;root.swiftui.leex&lt;/code&gt; and wraps all the views defined in the &lt;code&gt;router.ex&lt;/code&gt; module.&lt;/p&gt;
&lt;p&gt;The LVN documentation is a great starting point to learn more about how navigation works:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://hexdocs.pm/live_view_native_swiftui/0.3.0/native-navigation.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Native Navigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://hexdocs.pm/live_view_native_swiftui/0.3.0/navigation.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Navigation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-tabview&quot;&gt;The TabView &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/understanding-navigation-in-liveview-native/#the-tabview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;TabView&lt;/strong&gt; is a default SwiftUI component fixed at the bottom of a view. It consists of up to five navigation items (icons only or icons with text—although text is usually recommended if you&#39;re showing a maximum of three buttons) and is used for top-level navigation between major sections of a single view.&lt;/p&gt;
&lt;p&gt;In SwiftUI, the &lt;a href=&quot;https://developer.apple.com/documentation/swiftui/TabView&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;TabView&lt;/a&gt; is defined as:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TabView&lt;/strong&gt;: A view that switches between multiple child views using interactive user interface elements.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To include a &lt;code&gt;TabView&lt;/code&gt; in LVN, we need to use the default &lt;code&gt;&amp;lt;TabView&amp;gt;&lt;/code&gt; component.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/jtormey/lax/blob/4fb54e6071abf69b65a2fdc80db271c3e8fc47c0/lib/lax_web/live/chat_live/chat_components.swiftui.ex#L26&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Lax repository&lt;/a&gt; provides a couple of custom components to implement a &lt;code&gt;TabView&lt;/code&gt; in an elegant and simple way—we copy-pasted them into our app in no time 🥸️️️️️️ !&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;attr &lt;span class=&quot;token atom symbol&quot;&gt;:rest&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:global&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;include:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;~w(phx-change selection)&lt;/span&gt;
slot &lt;span class=&quot;token atom symbol&quot;&gt;:inner_block&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;required:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tab_bar&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;assigns&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
~&lt;span class=&quot;token module class-name&quot;&gt;LVN&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
  &amp;lt;TabView {@rest}&gt;
    &amp;lt;%= render_slot(@inner_block) %&gt;
  &amp;lt;/TabView&gt;
&quot;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

attr &lt;span class=&quot;token atom symbol&quot;&gt;:tag&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:any&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;required:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
attr &lt;span class=&quot;token atom symbol&quot;&gt;:name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;required:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
attr &lt;span class=&quot;token atom symbol&quot;&gt;:icon_system_name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;required:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;
slot &lt;span class=&quot;token atom symbol&quot;&gt;:inner_block&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;required:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;tab&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;assigns&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
	~&lt;span class=&quot;token module class-name&quot;&gt;LVN&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
	&amp;lt;Group tag={@tag} style=&quot;tabItem(:tab);&quot;&gt;
	  &amp;lt;Image template={:tab} systemName={@icon_system_name} /&gt;
	  &amp;lt;Text template={:tab}&gt;&amp;lt;%= @name %&gt;&amp;lt;/Text&gt;
	  &amp;lt;%= render_slot(@inner_block) %&gt;
	&amp;lt;/Group&gt;
	&quot;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then we just had to import them into our view like this:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab_bar phx&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;change&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;swiftui_tab_selection&quot;&lt;/span&gt; selection&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token attribute variable&quot;&gt;@swiftui_tab&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab tag&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:home&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt; icon_system_name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;square.stack&quot;&lt;/span&gt;&gt;
      &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;

	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab tag&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:notifications&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt; icon_system_name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;bell&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Notifications&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab tag&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:search&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt; icon_system_name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;magnifyingglass&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Search&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab tag&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:direct_messages&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt; icon_system_name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;tray&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;DMs&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab tag&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:profile&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt; icon_system_name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;person.crop.circle&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Profile&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;tab_bar&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And this is the result:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/basic.gif&quot; alt=&quot;Tab View Screenshot&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Currently, you can include only functional components as slots within each &lt;code&gt;&amp;lt;.tab&amp;gt;&lt;/code&gt;. It is not possible to include sub-LiveViews—this may evolve with future releases of the LiveView Native Core library.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;code&gt;TabView&lt;/code&gt; is mostly this; it resembles the standard &lt;code&gt;&amp;lt;Tabs&amp;gt;&lt;/code&gt; web design pattern: it lets the user navigate different content of the same page, highlighting the currently active &lt;code&gt;&amp;lt;Tab&amp;gt;&lt;/code&gt; component.&lt;/p&gt;
&lt;h3 id=&quot;the-toolbar-navigation&quot;&gt;The Toolbar Navigation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/understanding-navigation-in-liveview-native/#the-toolbar-navigation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We found the toolbar navigation trickier to implement, probably because of the various user experiences and customizations we required.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: We highly recommend the article &lt;a href=&quot;https://holyswift.app/how-to-create-toolbar-in-swiftui/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;How to Create Toolbar in SwiftUI&lt;/a&gt; to learn more about the different types of actions and properties you can leverage to build the toolbar.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In our case, our main issue consisted of having to switch between three different types of toolbars based upon the current active page.&lt;/p&gt;
&lt;p&gt;As mentioned earlier, the &lt;code&gt;&amp;lt;TabView&amp;gt;&lt;/code&gt; component only accepts functional components as slots for each &lt;code&gt;&amp;lt;Tab&amp;gt;&lt;/code&gt;. Additionally, we can only define a single &lt;code&gt;&amp;lt;Toolbar&amp;gt;&lt;/code&gt; for each view.&lt;/p&gt;
&lt;p&gt;This means that based on the active &lt;code&gt;tab&lt;/code&gt;, we need to programmatically change the &lt;code&gt;toolbar&lt;/code&gt; structure to customize it according to the needs of the rendered component.&lt;/p&gt;
&lt;p&gt;As far as we know, the current version of LVN doesn&#39;t include all the Optimistic UI features that are built into LiveView—or maybe it&#39;s just us doing something weird—but we are experiencing a few minor bugs when trying to programmatically edit the toolbar when props change.&lt;/p&gt;
&lt;p&gt;To add a basic toolbar, which includes only the navigation title, all you need is to include this code in your main view:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt; style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigationTitle(:title);&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will add the standard iOS navigation title at the top of your view like:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/nav1.png&quot; alt=&quot;Tab View Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;From there, we can go further and add buttons at the top left and right, add the search bar, add an extra dropdown menu next to the title, change the position of the title, or edit the background.&lt;/p&gt;
&lt;p&gt;We will need to apply all of the above in order to build toolbars like these:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/nav2.png&quot; alt=&quot;Tab View Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;iOS Toolbar provides ways for adding items and buttons on both the left and right. This is done by adding a &lt;code&gt;ToolbarItem&lt;/code&gt; (or &lt;code&gt;ToolbarItemGroup&lt;/code&gt; if you need to wrap more actions in the same component) and specifying a placement attribute. In order to add a &lt;code&gt;ToolbarItem&lt;/code&gt;/&lt;code&gt;ToolbarItemGroup&lt;/code&gt; in our toolbar, we need to specify it by including the &lt;code&gt;toolbar&lt;/code&gt; modifier in our parent &lt;code&gt;VStack&lt;/code&gt;: &lt;code&gt;toolbar(content: :toolbar)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Our code now looks like:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt; 
	style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;navigationTitle(:title)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;toolbar(content: :toolbar)&quot;&lt;/span&gt;
	  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This change alone is not enough though; we need to actually add the items we want to render.&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt; 
	style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;navigationTitle(:title)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;toolbar(content: :toolbar)&quot;&lt;/span&gt;
	  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItemGroup&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigationBarTrailing&quot;&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;plus&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;	
	&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;gear&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItemGroup&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigation&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;person.crop.circle&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt;&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;navigationBarTrailing&lt;/code&gt; placement allows us to show the actions on the right side of the toolbar; using &lt;code&gt;navigation&lt;/code&gt; places them on the left side.&lt;/p&gt;
&lt;p&gt;The toolbar now looks like:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/nav3.png&quot; alt=&quot;Tab View Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Getting better....&lt;/p&gt;
&lt;p&gt;But we don&#39;t want the title that big, and we want to center it in the middle of the toolbar.&lt;/p&gt;
&lt;p&gt;We have two possibilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Using &lt;code&gt;navigationBarTitleDisplayMode(.inline)&lt;/code&gt;&lt;/strong&gt;: This moves the title to the center of the toolbar and reduces the font size at the same time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Using a &lt;code&gt;ToolbarItem&lt;/code&gt; with &lt;code&gt;placement=&amp;quot;principal&amp;quot;&lt;/code&gt;&lt;/strong&gt;: Insert a &lt;code&gt;&amp;lt;Text&amp;gt;&lt;/code&gt; into it with the page title.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If we use the latter option, we should remove the &lt;code&gt;&amp;lt;Text template={:title}&amp;gt;Home&amp;lt;/Text&amp;gt;&lt;/code&gt; from the template.&lt;/p&gt;
&lt;p&gt;Here&#39;s the updated code:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt; 
	style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;navigationTitle(:title)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;toolbar(content: :toolbar)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;navigationBarTitleDisplayMode(.inline)&quot;&lt;/span&gt;
	  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItemGroup&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigationBarTrailing&quot;&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;plus&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;	
	&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;gear&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItemGroup&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigation&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;person.crop.circle&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt;&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;et voilà...&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/nav4.png&quot; alt=&quot;Tab View Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The missing piece for our first toolbar, which we can implement using the &lt;code&gt;toolbarTitleMenu&lt;/code&gt; modifier, is adding a dropdown menu next to the title:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt; 
	style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;navigationTitle(:title)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;toolbar(content: :toolbar)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	  &lt;span class=&quot;token string&quot;&gt;&quot;navigationBarTitleDisplayMode(.inline)&quot;&lt;/span&gt;
	  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItemGroup&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigationBarTrailing&quot;&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;plus&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;	
	&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;gear&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItemGroup&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigation&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;person.crop.circle&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;content&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;house&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;eye&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Following&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;person.2&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Local&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;globe&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Remote&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Divider&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button phx&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;click&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;show_filters&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;line.3.horizontal.decrease.circle&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Filters&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here&#39;s how it looks:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/nav5.png&quot; alt=&quot;Tab View Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;When the &lt;strong&gt;Search&lt;/strong&gt; tab is active, we want to remove the title from the toolbar and display a button that redirects the user to the search page. Meanwhile, the rest of the page shows trending search results or other default content. This is a common pattern we observed in several social network apps like the Mastodon iOS app, IceCubes (an alternative Mastodon iOS client), and X (btw are you still relying on X as your main social presence? If so, you may want to consider moving your main presence over the fediverse, it&#39;s a way less toxic environment and not owned by a megalomaniac idiot 🔥️️️️️️).&lt;/p&gt;
&lt;p&gt;The code to build the &lt;strong&gt;Search Toolbar&lt;/strong&gt; is as follows:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;
  style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;navigationTitle(:title)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;toolbar(content: :toolbar)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;&quot;navigationBarTitleDisplayMode(.inline)&quot;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;principal&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt; phx&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;click&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;go_to_search&quot;&lt;/span&gt; style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
			&lt;span class=&quot;token string&quot;&gt;&quot;frame(maxWidth: .infinity)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;token string&quot;&gt;&quot;controlSize(.small)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;token string&quot;&gt;&quot;foregroundStyle(.gray)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
			&lt;span class=&quot;token string&quot;&gt;&quot;buttonStyle(.bordered)&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
			&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;HStack&lt;/span&gt; style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;frame(maxWidth: .infinity)&quot;&lt;/span&gt;&gt;
				&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;magnifyingglass&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
				&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Search&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Text&lt;/span&gt;&gt;
			&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;HStack&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItemGroup&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigationBarTrailing&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;gear&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Button&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItemGroup&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;toolbar&quot;&lt;/span&gt; placement&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;navigation&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;icon name&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;person.crop.circle&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;ToolbarItem&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt; template&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;content&quot;&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;house&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Home&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;eye&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Following&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;person.2&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Local&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;globe&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Remote&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Divider&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button phx&lt;span class=&quot;token operator&quot;&gt;-&lt;/span&gt;click&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;show_filters&quot;&lt;/span&gt;&gt;
			&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt; systemImage&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;line.3.horizontal.decrease.circle&quot;&lt;/span&gt;&gt;&lt;span class=&quot;token module class-name&quot;&gt;Filters&lt;/span&gt;&amp;lt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;Label&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;button&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Resulting in:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/nav6.png&quot; alt=&quot;Tab View Screenshot&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Since each tab has different buttons and items to display on the toolbar, and we can only include one toolbar per view, we needed a way to programmatically edit the toolbar based on the active tab.&lt;/p&gt;
&lt;p&gt;We ended up defining a &lt;code&gt;Header&lt;/code&gt; component, using &lt;strong&gt;slots&lt;/strong&gt; for the different sections.&lt;/p&gt;
&lt;p&gt;Here is the final code:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;attr &lt;span class=&quot;token atom symbol&quot;&gt;:style&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:any&lt;/span&gt;
attr &lt;span class=&quot;token atom symbol&quot;&gt;:show_search&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:boolean&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;default:&lt;/span&gt; &lt;span class=&quot;token boolean&quot;&gt;false&lt;/span&gt;
attr &lt;span class=&quot;token atom symbol&quot;&gt;:page_title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:string&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;default:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&quot;&lt;/span&gt;
slot &lt;span class=&quot;token atom symbol&quot;&gt;:toolbar_trailing&lt;/span&gt;
slot &lt;span class=&quot;token atom symbol&quot;&gt;:navigation_menu&lt;/span&gt;
slot &lt;span class=&quot;token atom symbol&quot;&gt;:header_menu&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;main_header&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;assigns&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
~&lt;span class=&quot;token module class-name&quot;&gt;LVN&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
  &amp;lt;VStack style={@style}&gt;
	&amp;lt;%= if @show_search do %&gt;
	  &amp;lt;ToolbarItem template=&quot;toolbar&quot; placement=&quot;principal&quot;&gt;
		&amp;lt;Button phx-click=&quot;go_to_search&quot; 
		  style={[
		  &quot;frame(maxWidth: .infinity)&quot;,
		  &quot;controlSize(.small)&quot;,
		  &quot;foregroundStyle(.gray)&quot;,
		  &quot;buttonStyle(.bordered)&quot;]}&gt;
			&amp;lt;HStack style=&quot;frame(maxWidth: .infinity)&quot;&gt;
			  &amp;lt;.icon name=&quot;magnifyingglass&quot; /&gt;
			  &amp;lt;Text&gt;Search&amp;lt;/Text&gt;
		    &amp;lt;/HStack&gt;
		&amp;lt;/Button&gt;
	  &amp;lt;/ToolbarItem&gt;
	&amp;lt;% else %&gt;
	  &amp;lt;Text template=&quot;title&quot;&gt; &amp;lt;%= @page_title %&gt;&amp;lt;/Text&gt;
	&amp;lt;% end %&gt;
	&amp;lt;ToolbarItemGroup template=&quot;toolbar&quot; placement=&quot;navigationBarTrailing&quot;&gt;
	  &amp;lt;%= render_slot(@toolbar_trailing) %&gt;
	&amp;lt;/ToolbarItemGroup&gt;
	&amp;lt;ToolbarItemGroup template=&quot;toolbar&quot; placement=&quot;navigation&quot;&gt;
	  &amp;lt;%= render_slot(@navigation_menu) %&gt;
	&amp;lt;/ToolbarItemGroup&gt;
	&amp;lt;VStack template=&quot;content&quot;&gt;
	  &amp;lt;%= render_slot(@header_menu) %&gt;
	&amp;lt;/VStack&gt;
&amp;lt;/VStack&gt;
&quot;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is more Elixir than SwiftUI! 😊&lt;/p&gt;
&lt;p&gt;In our &lt;code&gt;home_live.ex&lt;/code&gt;, we already have a &lt;code&gt;handle_event&lt;/code&gt; function responsible for updating the &lt;code&gt;swiftui_tab&lt;/code&gt; value based on the tab bar&#39;s &lt;code&gt;phx-change=&amp;quot;swiftui_tab_selection&amp;quot;&lt;/code&gt; event.&lt;/p&gt;
&lt;p&gt;We added more logic to render different components in the header slots based on the active tab.&lt;/p&gt;
&lt;p&gt;The remaining task was to define the correct modifiers to apply to the toolbar struct. We experienced some issues while trying to update the modifiers array directly in the template or even in the &lt;code&gt;handle_params&lt;/code&gt; function.&lt;/p&gt;
&lt;p&gt;For example, doing something like this did not seem to work:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;
	style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;~s[toolbar(content: :toolbar)]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;~s[navigationTitle(:title)]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;~s[navigationBarTitleDisplayMode(.inline)]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;~s[toolbarBackground(.visible, for: .navigationBar)]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;token string&quot;&gt;~s[toolbarBackground(.ultraThinMaterial, for: .navigationBar)]&lt;/span&gt;
	&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;++&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token attribute variable&quot;&gt;@show_header_menu&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;do:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;~s[toolbarTitleMenu(content: :content)]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;else:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Even though the props were correctly added to the modifiers array. (Brian Carderella pointed out that these small issues will likely be resolved when the LiveView Native core library refactor is completed 🎉)&lt;/p&gt;
&lt;p&gt;We achieved our goal by wrapping the style in two different classes and conditionally switching between them based on the props.&lt;/p&gt;
&lt;p&gt;We&#39;ve added these two classes:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;main_header&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
~&lt;span class=&quot;token module class-name&quot;&gt;RULES&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
	toolbar(content: :toolbar)
	navigationTitle(:title)
	toolbarTitleMenu(content: :content)
	navigationBarTitleDisplayMode(.inline)
	toolbarBackgroundVisibility(.visible, for: .navigationBar)
	toolbarBackground(.ultraThinMaterial, for: .navigationBar)
&quot;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;

&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;simple_header&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;
~&lt;span class=&quot;token module class-name&quot;&gt;RULES&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
	toolbar(content: :toolbar)
	navigationTitle(:title)
	navigationBarTitleDisplayMode(.inline)
&quot;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And finally, in our &lt;code&gt;home_live.swiftui.neex&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&amp;lt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;main_header 
  page_title&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token attribute variable&quot;&gt;@page_title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt; 
  show_search&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token attribute variable&quot;&gt;@show_search&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  style&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token attribute variable&quot;&gt;@show_header_menu&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;do:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;main_header&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;else:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;simple_header&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:toolbar_trailing&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token attribute variable&quot;&gt;@toolbar_trailing&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:home_toolbar_trailing&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;home_toolbar_trailing &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:notifications_toolbar_trailing&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;notifications_toolbar_trailing &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:search_toolbar_trailing&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;search_toolbar_trailing &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:profile_toolbar_trailing&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;profile_toolbar_trailing &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:direct_messages_toolbar_trailing&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;direct_messages_toolbar_trailing &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; _ &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:toolbar_trailing&lt;/span&gt;&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:navigation_menu&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token attribute variable&quot;&gt;@navigation_menu&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:profile_navigation_menu&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
			&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token module class-name&quot;&gt;VStack&lt;/span&gt;&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; _ &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
			&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;navigation_menu &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:navigation_menu&lt;/span&gt;&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:header_menu&lt;/span&gt;&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;case&lt;/span&gt; &lt;span class=&quot;token attribute variable&quot;&gt;@header_menu&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:home_header_menu&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;home_header_menu &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:notifications_header_menu&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
		&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;notifications_header_menu &lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token atom symbol&quot;&gt;:search_header_menu&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; _ &lt;span class=&quot;token operator&quot;&gt;-&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
	&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token atom symbol&quot;&gt;:header_menu&lt;/span&gt;&gt;
&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;main_header&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is what the result looks like:&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;515&quot; src=&quot;https://www.youtube.com/embed/JOjgITS6rQg?si=3yoBrxvPnMADIk9V&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;We can optimize the code by using a single class and concatenating dynamic props, something along the lines of:&lt;/p&gt;
&lt;pre class=&quot;language-elixir&quot;&gt;&lt;code class=&quot;language-elixir&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;main_header:&quot;&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&gt;&lt;/span&gt; props&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token keyword&quot;&gt;do&lt;/span&gt;

~&lt;span class=&quot;token module class-name&quot;&gt;RULES&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;&quot;&quot;
  ...
&quot;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Additionally, we can use &lt;code&gt;push_patch&lt;/code&gt; to remember the current tab when navigating back to previous page from the Search view. We also need to iron our understanding about how SwiftUI handles the navigation stack.&lt;/p&gt;
&lt;p&gt;We&#39;ll continue this work in the next article, where we&#39;ll clean up the code and make it more robust. We&#39;ll also try to include some transition effects to change the header content when scrolling down the profile page.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;From the next article, all the code will be pushed to our GitHub, making it easier for contributors to read and navigate the code.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>Introducing Mosaic - Partner with the Bonfire Team to Create Your Own Federated Digital Space</title>
    <link href="https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/"/>
    <updated>2024-10-17T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/</id>
    <content type="html">&lt;p&gt;We’re excited to introduce &lt;strong&gt;&lt;a href=&quot;https://bonfirenetworks.org/mosaic/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mosaic&lt;/a&gt;&lt;/strong&gt;, a new initiative from the Bonfire team that empowers organisations by creating fully customised, federated digital spaces—built just for them.&lt;/p&gt;
&lt;h2 id=&quot;what-is-mosaic%3F&quot;&gt;What is Mosaic? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/#what-is-mosaic%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Mosaic is a unique service where the Bonfire team collaborates with you to co-design and build a bespoke online presence that serves as a hybrid between a traditional website and a social networking platform—going well beyond merely sharing pictures or short posts. Depending on your specific needs, we will incorporate, build, or customise Bonfire extensions to facilitate all kinds of information sharing, community building, and collaboration.&lt;/p&gt;
&lt;p&gt;With Mosaic, we build a bespoke software application that you can choose to self-host, ensuring you’re not locked into a monthly subscription with per-user costs and have complete control over your digital space.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;You can visit the &lt;a href=&quot;https://bonfirenetworks.org/mosaic/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mosaic website&lt;/a&gt; for more details, or the &lt;a href=&quot;https://bonfirenetworks.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire website&lt;/a&gt; for information about the software project that makes Mosaic possible.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;why-does-it-matter%3F&quot;&gt;Why does it matter? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/#why-does-it-matter%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Great question! In short, the way we work has changed dramatically, and our tools need to keep up. Here’s our perspective…&lt;/p&gt;
&lt;h3 id=&quot;yesterday%2C-we-used-to-work-in-companies.-today%2C-we-thrive-in-networks.&quot;&gt;Yesterday, we used to work in companies. Today, we thrive in networks. &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/#yesterday%2C-we-used-to-work-in-companies.-today%2C-we-thrive-in-networks.&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In today’s landscape, an organisation’s success hinges not only on internal efficiency but also on how effectively it can communicate and flourish within a broader network of relationships, partnerships, and collaborations. The challenge? Most platforms were designed for what’s hopefully a bygone era—one dominated by rigid hierarchies and a focus on profit over inclusivity and cooperation, often overlooking the importance of externalities.&lt;/p&gt;
&lt;p&gt;Enter &lt;strong&gt;Mosaic&lt;/strong&gt;—a fresh approach to meet today’s needs. In a networked environment, the flow of information between teams, partners, and different layers of collaborators is a key factor for success. Seamless communication uncovers opportunities, fosters partnerships, and drives innovation. It’s no longer about working in isolation; it’s about thriving through connection. Today’s working world blurs the lines between internal staff and the public, encompassing a vibrant community of team members, collaborators, early adopters, advisors, partners, advocates, ambassadors, community members, followers, and more.&lt;/p&gt;
&lt;p&gt;Unfortunately, most platforms just aren’t designed for this. They are stuck in the past, limiting what organisations can achieve. That’s where &lt;strong&gt;Mosaic&lt;/strong&gt; is ready to ignite change. Together, we can co-create the tools necessary to thrive in a networked world—flexible, federated, and designed to help communities, organisations, collectives, and consortia collaborate and grow in meaningful, unexpected, and interconnected ways.&lt;/p&gt;
&lt;h2 id=&quot;why-should-you-care-about-the-fediverse%3F&quot;&gt;Why should you care about the fediverse? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/#why-should-you-care-about-the-fediverse%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;fediverse&lt;/strong&gt; is a growing network of independent yet interconnected digital spaces, which can empower organisations in ways Big Tech cannot. It enables you to own your data, control your algorithms, and connect directly with your community—without the unpredictability of profit-driven platforms.&lt;/p&gt;
&lt;p&gt;Unlike proprietary apps like Instagram and Twitter, the fediverse prioritises trust and safety. Organisations can build meaningful connections, collaborate freely, and maintain control over their tools and online spaces. Thanks to standardised protocols like ActivityPub, users can easily export their data and migrate between instances, ensuring you’re never locked in.&lt;/p&gt;
&lt;p&gt;In the fediverse, you have options. You can join a vast network with millions of users or create an &lt;a href=&quot;https://writer.oliphant.social/oliphant/islands&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;island network&lt;/a&gt; focused on your community&#39;s needs. Whether you integrate into the global network or build your own archipelago, the fediverse offers a refreshing alternative to the dystopic &lt;a href=&quot;https://en.wikipedia.org/wiki/Enshittification&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;enshitification&lt;/a&gt; of Big Tech.&lt;/p&gt;
&lt;h2 id=&quot;build-once%2C-benefit-for-ever&quot;&gt;Build once, benefit for ever &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/#build-once%2C-benefit-for-ever&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire’s framework is open source under the &lt;a href=&quot;https://en.wikipedia.org/wiki/GNU_Affero_General_Public_License&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AGPL&lt;/a&gt; 3.0 license, ensuring that any extension or fork remains open and available to all. This has two important benefits:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Every solution built for one organisation is available for anyone to use, improve, or adapt.&lt;/strong&gt; Whether you’re building a community space, knowledge-sharing platform, or anything else, the tools we create together will contribute to the commons and benefit the broader ecosystem. As organisations work with us, they are not only solving their own challenges but also contributing to the success of others in the fediverse.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Everyone benefits from contributions made by others&lt;/strong&gt;, so you can incorporate any new features and improvements. This creates a virtuous cycle of innovation and collaboration. We hope this approach encourages like-minded organisations to cooperate, co-design and co-fund features, and work together for collective impact.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;With Mosaic, you’re not just solving your own problems—you’re investing in an ecosystem where everyone wins. You’re helping build a digital commons that empowers both your organisation and others to thrive in an increasingly networked world.&lt;/p&gt;
&lt;h2 id=&quot;a-real-world-example&quot;&gt;A real-world example &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/#a-real-world-example&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Our first Mosaic project is a great example of the possibilities it offers: an independent cinema archive needed a platform where visitors could explore their extensive film catalog and related information, while community members could contribute to further enrich the archive. With Mosaic, we’re building a federated digital space where members can for example add annotations to specific sections of videos, and visitors can search the collection, follow topics, watch films, and engage with community activities. This transforms it from a static archive into a living, evolving space where users actively contribute to preserving independent cinema, enriching the collection over time.&lt;/p&gt;
&lt;p&gt;All annotations and posts will be federated via the ActivityPub protocol, meaning users on platforms like Mastodon can discover and engage with the archive. And by building a Bonfire extension that integrates with the open-source software already used for film metadata and video hosting , we’re extending their toolset with social functionality tailored to their needs—without requiring them to switch platforms or manually copy information. This project exemplifies how Mosaic empowers organisations to build collaborative, networked digital spaces that foster community and go far beyond simple microblogging.&lt;/p&gt;
&lt;h2 id=&quot;ready-to-build-with-us%3F&quot;&gt;Ready to build with us? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/introducing-mosaic-partner-with-the-bonfire-team-to-create-your-own-federated-digital-space/#ready-to-build-with-us%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If Mosaic sounds like a solution worth exploring—or if you’re unsure and want to discuss your options—we’d love to chat! &lt;strong&gt;&lt;a href=&quot;https://cal.com/bonfire-networks/meet&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Let’s schedule a call&lt;/a&gt;&lt;/strong&gt; to discuss your specific needs and explore how we can collaborate to create the ideal federated digital space for your community or organisation.&lt;/p&gt;
&lt;p&gt;Our team is balancing core development of the Bonfire framework alongside Mosaic projects, so availability is limited. Reach out soon to secure a spot, and let’s start building something amazing together!&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>🐌 Slow Software for a Burning World 🔥</title>
    <link href="https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/"/>
    <updated>2025-04-20T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/</id>
    <content type="html">&lt;h4 id=&quot;a-reflection-on-bonfire%E2%80%99s-journey-to-1.0-and-an-open-invitation-to-shape-what-comes-next.&quot;&gt;&lt;em&gt;A reflection on Bonfire’s journey to 1.0 and an open invitation to shape what comes next.&lt;/em&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#a-reflection-on-bonfire%E2%80%99s-journey-to-1.0-and-an-open-invitation-to-shape-what-comes-next.&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;As we approach the release of Bonfire 1.0, this isn’t your typical launch announcement. Instead, it’s a moment to reflect on &lt;strong&gt;how&lt;/strong&gt; we’ve built Bonfire, a roadmap of values, methods, and intentions – and an invitation to define what comes next.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;You can &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;follow Bonfire on the fediverse&lt;/a&gt; for updates on the release, including highlights of unique features we’ll share over the next few days.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In a world of “move fast and break things,” we’ve chosen a different tempo — one rooted in care, deep listening, and collective stewardship. Slow software means building for long-term resilience and meaningful participation, rather than chasing novelty, speed, or scale.&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%8F%A6-profit-over-people%3A-at-what-cost%3F&quot;&gt;🏦 &lt;strong&gt;Profit over people: at what cost?&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#%F0%9F%8F%A6-profit-over-people%3A-at-what-cost%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The Silicon Valley model delivers quick but unaccountable decisions. Rules are one-sided, power is hoarded, and systems operate behind closed doors. The casualties are many:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trust:&lt;/strong&gt; Algorithms bred to addict or manipulate rather than to inform or empower.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consent&lt;/strong&gt;: Secrecy quietly eroding autonomy. Invisible hands reshaping our lives without consent.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Community:&lt;/strong&gt; Platforms optimising for engagement, making division and hatred profitable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Attention:&lt;/strong&gt; Human focus becomes data—extracted like oil to fuel the surveillance economy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Labour:&lt;/strong&gt; Care work like content moderation rendered invisible, workers treated as expendable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Environment:&lt;/strong&gt; Scale trumping sustainability at every turn.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As power concentrates, democracy withers and authoritarianism thrives. Algorithms tuned for &amp;quot;engagement&amp;quot; amplify fear, outrage, and division—because that’s what keeps us clicking. In the end, &lt;strong&gt;the tools meant to connect us are weaponized to divide us&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;We&#39;ve witnessed the damage when tech scales without care. What could we build instead?&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%90%8C-caracol%3A-a-different-outlook&quot;&gt;🐌 &lt;strong&gt;Caracol: a different outlook&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#%F0%9F%90%8C-caracol%3A-a-different-outlook&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire draws inspiration from the &lt;em&gt;caracol&lt;/em&gt; (snail), a &lt;a href=&quot;https://en.wikipedia.org/wiki/Zapatista_Army_of_National_Liberation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zapatista&lt;/a&gt; symbol of slow, collective movement. The caracol is a spiral, with no top or center—only a shared heart. It stands for governance from the edges, listening before action, autonomy over hierarchy, and the conviction that &lt;em&gt;how&lt;/em&gt; we build matters more than &lt;em&gt;what&lt;/em&gt; we build.&lt;/p&gt;
&lt;p&gt;These aren&#39;t lofty ideals—they&#39;re the backbone of Bonfire&#39;s design: a system built for flexibility, diversity, and overlapping needs. &lt;strong&gt;You don’t just use Bonfire—you shape it.&lt;/strong&gt; It’s not one tool; it’s a terrain. A toolkit. Imagine digital spaces growing organically, communities determining how they connect, and tools that can be picked up, transformed, or set aside as needed. The &lt;em&gt;caracol&lt;/em&gt; reminds us: meaningful progress comes from how we move, who we move with, and what kind of world we forge together.&lt;/p&gt;
&lt;h2 id=&quot;%E2%9C%8A-governance%3A-foundations-of-bonfire&quot;&gt;✊ &lt;strong&gt;Governance: foundations of Bonfire&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#%E2%9C%8A-governance%3A-foundations-of-bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The way we build is part of what we create. Inspired by &lt;a href=&quot;https://en.wikipedia.org/wiki/Sociocracy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;sociocracy&lt;/a&gt;—a method of collaborative governance based on circles, consent, and distributed authority, and by &lt;a href=&quot;https://en.wikipedia.org/wiki/Municipalism&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bookchin’s municipal confederations&lt;/a&gt;, the Zapatistas, and &lt;a href=&quot;https://en.wikipedia.org/wiki/Democratic_Autonomous_Administration_of_North_and_East_Syria&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Rojava&lt;/a&gt;, governance in Bonfire runs deep:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Everything is modular—down to the core:&lt;/strong&gt; All features are provided by separate extensions, meaning the “core app” contains no code but just configuration. There also isn’t a single core; instead, there exists different “flavours” of Bonfire: sets of config and extensions adapted to various use cases or communities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Communities govern “flavours”:&lt;/strong&gt; Bonfire&#39;s modularity serves a political purpose—inviting communities to discuss, configure, and collectively govern every aspect of their experience.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shining a light on the power of defaults:&lt;/strong&gt; Whenever a choice about how something should work in Bonfire is unclear, we make it configurable. Code establishes an initial default, but flavours can override it, communities can set instance-wide settings, and individuals make final decisions in their own account or profiles.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom roles:&lt;/strong&gt; Moving beyond binary admin/user hierarchies, communities and individuals define and assign roles with precisely calibrated permissions—distributing power and responsibility to match their unique contexts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Circles and boundaries:&lt;/strong&gt; Creating flexible &amp;quot;circles&amp;quot; (like &amp;quot;colleagues&amp;quot; or &amp;quot;book club&amp;quot;) and &amp;quot;boundaries&amp;quot; (granular permission sets) to control exactly who can see, interact with, or collaborate on anything—putting people in charge of their online relationships.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tools that prioritise real people and relationships&lt;/strong&gt; over speed and simplicity. We make no assumptions about the “average” user, social needs are complex and overlapping, there are no no one-size-fits-all solutions. We center needs often marginalized or overlooked—making them foundational so everyone benefits from greater flexibility and control.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;%F0%9F%9B%A1%EF%B8%8F-guarding-the-commons&quot;&gt;🛡️ &lt;strong&gt;Guarding the commons&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#%F0%9F%9B%A1%EF%B8%8F-guarding-the-commons&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Values alone aren’t enough—many well-intentioned projects eventually drift, burn out, or sell out. Bonfire is federated at every level—protocol, code, and governance—so its purpose and values can’t be quietly eroded or easily overturned. This technical and political design aims to resist capture, prevent &lt;a href=&quot;https://en.wikipedia.org/wiki/Enshittification&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;enshittification&lt;/a&gt;, and safeguard community autonomy for the long term.&lt;/p&gt;
&lt;p&gt;Here&#39;s how Bonfire can &lt;strong&gt;resist capture:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AGPL licensing:&lt;/strong&gt; All code is AGPL, ensuring all modifications remain open and accessible, preventing capture by Big Tech or cloud services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-layered modularity and forkability:&lt;/strong&gt; Everything is an extension—identity, moderation, groups. People can fork just an extension or a flavour–which encourages forking by lowering the maintainance effort.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Community-governed flavours:&lt;/strong&gt; Communities decide what&#39;s included and how it evolves.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Zero VC funding or ads:&lt;/strong&gt; Bonfire will remain free of venture capital and advertisement. No dark patterns. No pivoting away from responsibility or ethics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We&#39;re also experimenting with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Sociocratic circles:&lt;/strong&gt; Self-organizing groups stewarding specific extensions or flavours, making decisions by consent. We&#39;re expanding this approach, creating pathways for communities to shape and protect their own digital spaces.&lt;/li&gt;
&lt;li&gt;New models for &lt;strong&gt;participatory funding&lt;/strong&gt; and resource allocation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The commons survive only when they can &lt;strong&gt;regrow anywhere&lt;/strong&gt;. We design for resilience, adaptability, and collective stewardship.&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%8C%90-federation%3A-autonomy-through-connection&quot;&gt;🌐 &lt;strong&gt;Federation: autonomy through connection&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#%F0%9F%8C%90-federation%3A-autonomy-through-connection&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire federates (i.e., interconnects with other independent platforms) with Mastodon and the wider &lt;a href=&quot;https://en.wikipedia.org/wiki/Fediverse&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;fediverse&lt;/a&gt;, but federation is more than a technical protocol — it embodies our commitment to autonomy &lt;em&gt;and&lt;/em&gt; collaboration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each community governs itself while connecting with others, maintaining distinct cultures, rules, and practices.&lt;/li&gt;
&lt;li&gt;Federation isn&#39;t for scaling one model, but for interconnecting many. No central power dictates decisions—only connected, independent nodes working in concert.&lt;/li&gt;
&lt;li&gt;Offboarding and freedom to migrate: Users should never be locked into platforms by their data or social connections.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;We&#39;re building many interconnected worlds, not one massive platform.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%94%A5-bonfire%3A-public-interest-social-networks&quot;&gt;🔥 &lt;strong&gt;Bonfire: public interest social networks&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#%F0%9F%94%A5-bonfire%3A-public-interest-social-networks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire is a &lt;em&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Commons&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;commons&lt;/a&gt;&lt;/em&gt;–a place to gather, co-create, and build networks that last–beyond products to be sold or services that use, abuse, or extract from you.&lt;/p&gt;
&lt;p&gt;Bonfire’s values, goals, and processes are shaped by the people and communities who choose to participate. As a starting point, we uphold principles rooted in care, consent, and collective stewardship.&lt;/p&gt;
&lt;p&gt;Whether you&#39;re a community organiser, activist, builder or simply curious, join us:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Join the conversation:&lt;/strong&gt; Take part in our public discussion spaces. Share your experiences, needs, and questions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Help shape governance:&lt;/strong&gt; Participate in forming circles to govern specific extensions or Bonfire flavours, and share responsibility, decide by consent, and ensure Bonfire evolves with real community needs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Propose features or co-design new extensions:&lt;/strong&gt; Bring your ideas for how Bonfire can serve new purposes, or create new &amp;quot;flavours&amp;quot; and tools.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contribute feedback:&lt;/strong&gt; Help us spot issues, propose adaptations, or challenge assumptions so Bonfire can serve more people, more justly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Help shape the culture:&lt;/strong&gt; Share learnings from your own communities, organize workshops, or experiment with governance models.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Built for the long haul. &lt;em&gt;By people, for people&lt;/em&gt;.&lt;/p&gt;
&lt;h3 id=&quot;%F0%9F%8F%95%EF%B8%8F-campground%3A-a-living-laboratory&quot;&gt;🏕️ &lt;strong&gt;Campground: a living laboratory&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#%F0%9F%8F%95%EF%B8%8F-campground%3A-a-living-laboratory&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Our test instance, &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;the campground&lt;/a&gt;, is open as a local-only space for co-design and experimentation. Here, you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Experience what digital spaces built on consent, care, and mutual aid feel like.&lt;/li&gt;
&lt;li&gt;Collaborate to co-design and test features — making Bonfire safer, more resilient, accessible, and truly centered on people and communities.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This isn’t a product launch—we’re not looking for &lt;em&gt;users&lt;/em&gt; but for &lt;em&gt;active participants&lt;/em&gt;: people and groups who want to shape, critique, and experiment together — whether that’s on the campground, through their own Bonfire instances, or by joining others to co-create new digital spaces.&lt;/p&gt;
&lt;h2 id=&quot;%E2%9C%A8-let%E2%80%99s-build-what-lasts%2C-together&quot;&gt;✨ &lt;strong&gt;Let’s build what lasts, together&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/#%E2%9C%A8-let%E2%80%99s-build-what-lasts%2C-together&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If these ideas resonate, we invite you to reflect, dialogue, reach out, and co-create. Bonfire lives as a conversation in motion, beyond its code. The world needs many interconnected spaces built on care, autonomy, and collective power — not yet another app chasing scale.&lt;/p&gt;
&lt;p&gt;We hope these principles can ignite new approaches to digital community-building. The future is ours to build — intentionally, collectively, and with care. Join us in shaping what comes next.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;This post was written by the Bonfire maintainers&#39; circle and shaped by feedback from the advisory circle. Join the conversation on &lt;a href=&quot;https://matrix.to/#/#bonfire:matrix.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Matrix&lt;/a&gt;, comment on &lt;a href=&quot;https://bonfire.cafe/@Bonfire/114477426502965851&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;this post on the fediverse&lt;/a&gt; or on &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;the campground&lt;/a&gt;, or email us at &lt;a href=&quot;mailto:team@bonfire.cafe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;team@bonfire.cafe&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Credit for the art goes to Tomás, a Zapatista artist in a community near San Cristobal.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Announcing the Bonfire Social 1.0 Release Candidate</title>
    <link href="https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/"/>
    <updated>2025-06-04T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/</id>
    <content type="html">&lt;p&gt;After a long stretch of co-design, development, and reflection (see &lt;a href=&quot;https://bonfirenetworks.org/posts/slow_software_for_a_burning_world/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Slow Software for a Burning World&lt;/a&gt;), we’re excited to share the Bonfire Social 1.0 Release Candidate — a version ready for real-world testing and feedback before the official 1.0 release.&lt;/p&gt;
&lt;p&gt;We invite communities to install their own instances, explore the features, and help identify any remaining bugs or usability issues. Reach us at &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@bonfire@bonfire.cafe&lt;/a&gt; or through &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues/new?template=bug_report.md&amp;amp;milestone=1.0%20release&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;our issue tracker&lt;/a&gt;. Your input will help ensure Bonfire Social 1.0 is stable, accessible, and genuinely community-ready.&lt;/p&gt;
&lt;h2 id=&quot;what-is-bonfire-social%3F&quot;&gt;What is Bonfire Social? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#what-is-bonfire-social%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;While &lt;em&gt;Bonfire&lt;/em&gt; isn’t just another federated social app — it’s a modular framework for building digital spaces governed by communities – &lt;a href=&quot;https://bonfirenetworks.org/app/social&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;em&gt;Bonfire Social&lt;/em&gt;&lt;/a&gt; is the first &amp;quot;flavour&amp;quot; of Bonfire to reach 1.0, and is a starting point for communities who want a space of their own, that&#39;s locally governed and fully customizable, yet connected to the wider fediverse. It’s ideal for people who value self-determination and meaningful connection, balancing local autonomy with global conversation.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A flavour is a pre-configured bundle of Bonfire extensions that defines which features are included, how they behave, and what defaults are in place. Each flavour can have its own governance group, extensions, roadmap, and priorities. Besides Bonfire Social, &lt;a href=&quot;https://bonfirenetworks.org/apps/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;other flavours&lt;/a&gt; like Bonfire Community and Open Science are already in development, and any community can create their own.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Many features in Bonfire Social will feel familiar: feeds, profiles, following users, sharing posts, flagging or blocking content. Others might be new: rich-text posts, feed customization, nested discussions, multiple profiles per user, and fine-grained access control.&lt;/p&gt;
&lt;p&gt;Let’s explore some of the key features:&lt;/p&gt;
&lt;h2 id=&quot;key-features-in-this-release&quot;&gt;Key features in this release &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#key-features-in-this-release&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;custom-feeds&quot;&gt;Custom feeds &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#custom-feeds&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Bonfire puts users in charge of what they see. Instead of relying on hidden algorithms, you can easily create your own custom feeds using a simple interface—no coding required. Filter and sort content by type, circle, date, engagement level, source instance, and more to surface what matters most to you. &lt;/p&gt;
&lt;div style=&quot;position: relative; padding-top: 56.25%;&quot;&gt;&lt;iframe title=&quot;Bonfire Social: Custom feeds&quot; width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;https://tube.tchncs.de/videos/embed/9J3Q3hzFjW8KZqu7CB3Uv9?title=0&amp;amp;warningTitle=0&amp;amp;peertubeLink=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups allow-forms&quot; style=&quot;position: absolute; inset: 0px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Save presets and choose which ones to see in your sidebar and in what order.&lt;/p&gt;
&lt;div style=&quot;position: relative; padding-top: 56.25%;&quot;&gt;&lt;iframe title=&quot;Bonfire Social: Organize feeds&quot; width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;https://tube.tchncs.de/videos/embed/9kQt5v7jBCo7jqR2fvQ9x2?title=0&amp;amp;warningTitle=0&amp;amp;peertubeLink=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups allow-forms&quot; style=&quot;position: absolute; inset: 0px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h3 id=&quot;circles&quot;&gt;Circles &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#circles&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A &lt;a href=&quot;https://bonfirenetworks.org/posts/introducing_boundaries/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;circle&lt;/a&gt; is simply a list of people. Bonfire includes default circles like “local users” or “people I follow”, and you can define your own, e.g. &amp;quot;friends&amp;quot;, &amp;quot;mutual aid crew&amp;quot; or &amp;quot;monster movie fans.&amp;quot;&lt;/p&gt;
&lt;p&gt;Circles are private by default but can be shared with others.&lt;/p&gt;
&lt;div style=&quot;position: relative; padding-top: 56.25%;&quot;&gt;&lt;iframe title=&quot;Bonfire Social: Circles&quot; width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;https://tube.tchncs.de/videos/embed/kTvp9pgePdZzwBawo3pSQq?title=0&amp;amp;warningTitle=0&amp;amp;peertubeLink=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups allow-forms&quot; style=&quot;position: absolute; inset: 0px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h3 id=&quot;boundaries&quot;&gt;Boundaries &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#boundaries&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://bonfirenetworks.org/posts/introducing_boundaries/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Boundaries&lt;/a&gt; help you control who can see and interact with your content. E.g. you can share a post with several circles but only allow replies from a specific circle, or make a post public but invisible to specific people.&lt;/p&gt;
&lt;div style=&quot;position: relative; padding-top: 56.25%;&quot;&gt;&lt;iframe title=&quot;Bonfire Social: Boundaries&quot; width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;https://tube.tchncs.de/videos/embed/s8XPXLzv31hJ1m3YgCjtXK?title=0&amp;amp;warningTitle=0&amp;amp;peertubeLink=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups allow-forms&quot; style=&quot;position: absolute; inset: 0px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h3 id=&quot;nested-discussions&quot;&gt;Nested discussions &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#nested-discussions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Bonfire supports threaded conversations, where replies can branch into focused sub-threads without losing context. It’s ideal for deep discussions, collaborative work, or simply following a conversation’s collective train of thought. This structure is especially useful in communities that value dialogue over noise — where replies build on one another rather than compete for attention.&lt;/p&gt;
&lt;div style=&quot;position: relative; padding-top: 56.25%;&quot;&gt;&lt;iframe title=&quot;Bonfire Social: Nested discussions&quot; width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;https://tube.tchncs.de/videos/embed/7YTH3Q4KjdsfxiJK85zMyk?title=0&amp;amp;warningTitle=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups allow-forms&quot; style=&quot;position: absolute; inset: 0px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h3 id=&quot;themes-and-customization&quot;&gt;Themes and customization &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#themes-and-customization&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Bonfire ships with 16 colourful themes — but you can go further. Design your own colors, fonts, and layout styles. Do you prefer a sleek minimalist space or want to recreate the GeoCities era? Go for it.&lt;/p&gt;
&lt;div style=&quot;position: relative; padding-top: 56.25%;&quot;&gt;&lt;iframe title=&quot;Bonfire Social: Custom themes&quot; width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;https://tube.tchncs.de/videos/embed/2MYBYXN295Pk1atzQprRA7?title=0&amp;amp;warningTitle=0&amp;amp;peertubeLink=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups allow-forms&quot; style=&quot;position: absolute; inset: 0px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h3 id=&quot;multiple-users-profiles&quot;&gt;Multiple users profiles &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#multiple-users-profiles&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;In Bonfire, accounts and profiles are separate. One account can create multiple &lt;strong&gt;independent profiles&lt;/strong&gt;, each with its own followers, content, and settings.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Shared profiles&lt;/strong&gt; can also be managed by multiple accounts — ideal for collectives, publications, or project teams.&lt;/p&gt;
&lt;div style=&quot;position: relative; padding-top: 56.25%;&quot;&gt;&lt;iframe title=&quot;Bonfire Social: Shared user&quot; width=&quot;100%&quot; height=&quot;100%&quot; src=&quot;https://tube.tchncs.de/videos/embed/wDXxMXUMbC12ern22a9VES?title=0&amp;amp;warningTitle=0&amp;amp;peertubeLink=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups allow-forms&quot; style=&quot;position: absolute; inset: 0px;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;h3 id=&quot;additional-features&quot;&gt;Additional features &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#additional-features&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Install Bonfire (as a Progressive Web App) on mobile devices.&lt;/li&gt;
&lt;li&gt;Import community-curated blocklists  to ease moderation.&lt;/li&gt;
&lt;li&gt;Migrate your data and connections across instances and platforms.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/posts/custom_roles/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Custom roles and permissions&lt;/a&gt; to distribute admin powers&lt;/li&gt;
&lt;li&gt;Custom emoji support&lt;/li&gt;
&lt;li&gt;Direct messages and private group discussions, with the same nested threads and discussion features as regular posts&lt;/li&gt;
&lt;li&gt;Full-text search across posts, discussions, and profiles (users can opt out from being indexed)&lt;/li&gt;
&lt;li&gt;Federates  with &lt;strong&gt;Mastodon, Peertube, Mobilizon&lt;/strong&gt;, and many more&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extensions&lt;/strong&gt; can be enabled or disabled by admins &lt;em&gt;and by users&lt;/em&gt; — for example, you can disable likes or boosts if they don’t suit your needs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can find more &lt;a href=&quot;https://bonfirenetworks.org/app/social&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;details on Bonfire Social&lt;/a&gt; on our website or have a play on the &lt;a href=&quot;http://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;demo instance&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what%E2%80%99s-not-included&quot;&gt;What’s not included &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#what%E2%80%99s-not-included&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;These features are &lt;em&gt;not&lt;/em&gt; part of Bonfire Social 1.0:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues/1260&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mastodon API compatibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/posts/safer-social-networking-bonfire-s-recent-experiment-with-prosocial-design-patterns/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Content labeling&lt;/a&gt; (needs co-design and interoperability work)&lt;/li&gt;
&lt;li&gt;Emoji reactions (needs better federation)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/posts/dev_diary_groups_1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Groups and topics&lt;/a&gt; (coming in Bonfire Community flavour)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_coordination/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Federated coordination tools&lt;/a&gt; (coming in Bonfire Coordination flavour)&lt;/li&gt;
&lt;li&gt;Many other &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues?q=is%3Aissue%20state%3Aopen%20milestone%3A%22Potential%20new%20extensions%20or%20features%22&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;feature ideas&lt;/a&gt; (add your own!)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;getting-started&quot;&gt;Getting started &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#getting-started&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/deploy.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Install Bonfire Social&lt;/a&gt; or &lt;a href=&quot;http://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;try our demo instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Report bugs: mention &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@bonfire@bonfire.cafe&lt;/a&gt; or &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues/new?template=bug_report.md&amp;amp;milestone=1.0%20release&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;open an issue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/hosting/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Need managed hosting?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/mosaic/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Want to collaborate on a custom flavour?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what%E2%80%99s-next%3F&quot;&gt;What’s next? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/announcing-the-bonfire-social-1-0-release-candidate/#what%E2%80%99s-next%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The release of Bonfire Social 1.0 will mark both an ending and a beginning. After building a foundation for federated community infrastructure — no more one-size-fits-all platforms, we’ll focus on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improvements based on community feedback&lt;/li&gt;
&lt;li&gt;Co-designing other extensions and flavours with communities (e.g. &lt;a href=&quot;https://bonfirenetworks.org/posts/openscience_network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science Network&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ensuring sustainability for maintainers and contributors&lt;/li&gt;
&lt;li&gt;Expanding our moderation tools in collaboration with &lt;a href=&quot;https://erinkissane.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Erin Kissane&lt;/a&gt;, &lt;a href=&quot;https://mastodon.iftas.org/@jaz&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Jaz&lt;/a&gt;, and the &lt;a href=&quot;https://connect.iftas.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;IFTAS moderator community&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Your feedback, ideas, and use cases will shape what comes next. Let’s build it — together.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can comment on this post &lt;a href=&quot;https://bonfire.cafe/@Bonfire/114631617774926243&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;on the fediverse&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
  </entry>
  
  <entry>
    <title>Long-form content in Bonfire: Part 1</title>
    <link href="https://bonfirenetworks.org/posts/long-form-content-in-bonfire-part-1/"/>
    <updated>2025-06-27T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/long-form-content-in-bonfire-part-1/</id>
    <content type="html">&lt;p&gt;Inspired by &lt;a href=&quot;https://cosocial.ca/users/evan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@evan@cosocial.ca&lt;/a&gt; &#39;s recent article on &lt;a href=&quot;https://socialwebfoundation.org/2025/05/01/steps-forward-in-long-form-text/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;advancing long-form text in the social web&lt;/a&gt;, we&#39;ve taken the leap and developed our first prototype for publishing and reading articles on Bonfire, based on the &lt;a href=&quot;https://codeberg.org/fediverse/fep/src/branch/main/fep/b2b8/fep-b2b8.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FEP-b2b8 draft specification&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;beyond-microblogging&quot;&gt;Beyond microblogging &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/long-form-content-in-bonfire-part-1/#beyond-microblogging&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;From &lt;a href=&quot;https://bonfirenetworks.org/posts/not_just_yet_another_microblog/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;day one&lt;/a&gt;, we&#39;ve designed Bonfire to break free from the constraints of microblogging-centric social networks. We&#39;ve already experimented with extensions for &lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_coordination/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;coordinating tasks&lt;/a&gt;, &lt;a href=&quot;https://github.com/bonfire-networks/bonfire_valueflows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;exchanging resources&lt;/a&gt;, and more. As we work on &lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire_social_rc/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire Social 1.0&lt;/a&gt;, adding article support felt like a natural evolution of this vision.&lt;/p&gt;
&lt;p&gt;Working based on a FEP (fediverse enhancement proposal) that provided both design guidelines and technical specifications was refreshing and showed how co-design and shared standards can be our strongest ally for pushing the fediverse forward.&lt;/p&gt;
&lt;h2 id=&quot;one-feed%2C-many-content-types&quot;&gt;One feed, many content types &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/long-form-content-in-bonfire-part-1/#one-feed%2C-many-content-types&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Adding articles marks a small but significant step towards realising the vision of the open social web: a digital space where you can receive, read and interact with diverse content types from a single place, rather than juggling multiple platforms, accounts, and notification streams.&lt;/p&gt;
&lt;p&gt;With Bonfire, articles from writefreely, ghosts, wordpress and any other federated platforms that implement the FEP-b2b8, now appear seamlessly in your feed alongside other content from your network. You can:&lt;/p&gt;
&lt;p&gt;- Preview articles in the feed&lt;/p&gt;
&lt;p&gt;- Read the full article and nested comments without loading an external site (just like the good old days of RSS readers)&lt;/p&gt;
&lt;p&gt;- React or reply to the article or other comments&lt;/p&gt;
&lt;p&gt;This UX improvement offers a glimpse of what becomes possible as more platforms and software embrace the fediverse.&lt;/p&gt;
&lt;h2 id=&quot;but-why-stop-there%3F&quot;&gt;But why stop there? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/long-form-content-in-bonfire-part-1/#but-why-stop-there%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Thanks to our modular feed builder, we&#39;ve added an &amp;quot;Articles&amp;quot; feed preset. This dedicated timeline displays only long-form content, with sorting options for most liked, most replied, and more.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://hackmd.io/_uploads/BkMJxQ2Neg.png&quot; alt=&quot;articlesfeed&quot; /&gt;It&#39;s like having a decentralised blogging platform and feed reader integrated in your social network.&lt;/p&gt;
&lt;p&gt;Speaking of feed readers, we&#39;ve also added RSS and Atom feeds so you can subscribe to Bonfire feeds (including articles and/or microposts) via your favourite feed reader app as well.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://hackmd.io/_uploads/SyZZgXh4ge.png&quot; alt=&quot;rss&quot; /&gt;And yes, you can also write articles directly in Bonfire! While the authoring experience is still rough around the edges (we&#39;re actively improving the UX), we&#39;re pleased with this initial prototype (which includes a simple rich text editor using markdown, and the option to add a title and cover image). In fact, this very article was written and published through Bonfire.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://hackmd.io/_uploads/rk4Bf7hNxe.jpg&quot; alt=&quot;article_composer&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;what&#39;s-next%3F&quot;&gt;What&#39;s Next? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/long-form-content-in-bonfire-part-1/#what&#39;s-next%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As we refine the implementation, ideas are already flowing:&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Personal blog pages&lt;/strong&gt;: Do users want an optional dedicated blog section on their profile, maybe with tabs to easily switch between notes, articles, or other content types?&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Instance curation&lt;/strong&gt;: Could instance moderators pin and showcase their best articles on the homepage?&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Enhanced authoring&lt;/strong&gt;: Should we create specialized UIs for properly writing and managing blog posts?&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Email subscriptions&lt;/strong&gt;: Non-fediverse users could subscribe via email to federated blogs?&lt;/p&gt;
&lt;p&gt;The possibilities are endless, but we believe long-form content features should be shaped by actual community needs and designed collaboratively in the open, building upon FEP-b2b8 through real-world usage and experimentation.&lt;/p&gt;
&lt;h2 id=&quot;join-the-experiment&quot;&gt;Join the experiment &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/long-form-content-in-bonfire-part-1/#join-the-experiment&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This is just the beginning. You can experience writing and reading articles on Bonfire today at our &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;campground instance&lt;/a&gt; or by &lt;a href=&quot;https://bonfirenetworks.org/start/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;setting up your own Bonfire instance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If your community is interested in test-driving or co-designing long-form content features, we’d love to collaborate.&lt;/p&gt;
&lt;p&gt;To build a fully integrated, community-shaped publishing experience — and continue improving Bonfire in many other areas — we’re actively seeking support. You can &lt;a href=&quot;https://opencollective.com/bonfire-networks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;back Bonfire on OpenCollective&lt;/a&gt; or &lt;a href=&quot;https://bonfirenetworks.org/contact/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;get in touch&lt;/a&gt; to help shape the future of federated publishing.&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;&lt;em&gt;What would you like to see in federated long-form content? Join the conversation and help us build the open social web together!&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>🔥 Bonfire Social 1.0 RC2</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-social-1-0-rc2/"/>
    <updated>2025-07-08T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-social-1-0-rc2/</id>
    <content type="html">&lt;p&gt;We’re pleased to announce Bonfire Social 1.0 Release Candidate 2! This update is all about refining and polishing the experience, fixing bugs, and making Bonfire more enjoyable and reliable for everyone. These improvements come directly from your feedback, bug reports, and real-world testing.&lt;/p&gt;
&lt;p&gt;Of course, we couldn’t help ourselves and also snuck in some exciting new features—like long-form article publishing and more feeds customisations, plus plenty of interface refinements for both desktop and mobile.&lt;/p&gt;
&lt;p&gt;A huge thank you to everyone who has set up a Bonfire instance, or joined the &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;campground&lt;/a&gt; (our local-only testing space) to try out the app. Your suggestions and bug reports have been invaluable as we approach version 1.0. Please keep testing, sharing feedback, and helping us shape the future of federated social spaces!&lt;/p&gt;
&lt;h2 id=&quot;%E2%9C%A8-what%E2%80%99s-new-and-improved%3F&quot;&gt;✨ What’s new and improved? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0-rc2/#%E2%9C%A8-what%E2%80%99s-new-and-improved%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Long-form publishing:&lt;/strong&gt; Going beyond beyond short posts to &lt;a href=&quot;https://bonfire.cafe/post/01JYRX7HCGME693BGCZF6AGGK1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;read and write in-depth articles&lt;/a&gt;, ideal for essays, announcements, or detailed content. Article feeds are now available for RSS readers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Smarter feeds:&lt;/strong&gt; New feed options for &lt;strong&gt;events&lt;/strong&gt;, &lt;strong&gt;books&lt;/strong&gt;, and &lt;strong&gt;articles&lt;/strong&gt; help you discover what matters to you most. You can now also filter out your own activities from your feeds when desired.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Multi-profiles overview&lt;/strong&gt;: A new navigation menu can display all your profiles with notification indicators, allowing quick profile switching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Private by default:&lt;/strong&gt; New Bonfire instances start as invite-only, giving admins control over membership from day one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interface improvements:&lt;/strong&gt; We&#39;ve refined the user experience, enhanced notifications and ensured posts display properly across mobile devices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;More reliable:&lt;/strong&gt; Tons of fixes for authentication, media uploads, mentions, moderation, and other core features.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additional improvements include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Better translation and localization workflow&lt;/li&gt;
&lt;li&gt;Smoother OAuth/OpenID login and SSO support&lt;/li&gt;
&lt;li&gt;Updated documentation and guides for admins and contributors&lt;/li&gt;
&lt;li&gt;Enhanced S3 integration for uploads&lt;/li&gt;
&lt;li&gt;Lots of small bug fixes on comment threads, messaging, settings, and more&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a comprehensive list of changes, see the &lt;a href=&quot;https://docs.bonfirenetworks.org/changelog.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;full changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%8E%AA-community-contributions-and-other-initiatives&quot;&gt;🎪 Community contributions and other initiatives &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0-rc2/#%F0%9F%8E%AA-community-contributions-and-other-initiatives&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;We hosted our first &lt;a href=&quot;https://indieweb.social/@bonfire/114737730812193211&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;install party&lt;/a&gt; using &lt;a href=&quot;https://coopcloud.tech/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;coop-cloud&lt;/a&gt;, with all participants who followed along successfully deploying their own Bonfire instances.&lt;/li&gt;
&lt;li&gt;Seperately, ozoned from &lt;a href=&quot;https://social.firesidefedi.live/@firesidefedi&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fireside Fedi&lt;/a&gt; &lt;a href=&quot;https://video.firesidefedi.live/w/sXNGDdqurg59cE3syZ3svU&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;livestreamed their installation attempt&lt;/a&gt;, surfacing valuable setup challenges. This highlighted the need to simplify Docker deployment and improve documentation. Contributors are welcome to help make this easier!&lt;/li&gt;
&lt;li&gt;Sciety deployed a Bonfire instance as part of their &lt;a href=&quot;https://blog.sciety.org/weeknotes/sciety-product-news-01-07-2025/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;pre-print review project&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://spark.box464.social/pub/actors/spark464&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@spark464@spark.box464.social&lt;/a&gt; &lt;a href=&quot;https://spark.box464.social/post/01JZDM9H4148XRMW2XH7PQNNSC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;published an article&lt;/a&gt; on how to add a weather widget in Bonfire.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;%F0%9F%8C%8D-localisation%3A-bonfire-in-your-language!&quot;&gt;🌍 Localisation: Bonfire in your language! &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0-rc2/#%F0%9F%8C%8D-localisation%3A-bonfire-in-your-language!&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire Social is built to be diverse and welcoming, which means making it accessible in as many languages as possible. Thanks to our amazing translators, Bonfire is now available in several languages.&lt;/p&gt;
&lt;h3 id=&quot;%F0%9F%8F%85-top-translated-languages&quot;&gt;🏅 Top translated languages &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0-rc2/#%F0%9F%8F%85-top-translated-languages&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;- &lt;strong&gt;Portuguese (Brazil):&lt;/strong&gt; 100% translated &amp;amp; reviewed 🎉&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;French:&lt;/strong&gt; 98.9% translated, 69.4% reviewed&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Italian:&lt;/strong&gt; 96.7% translated, 54% reviewed&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;German:&lt;/strong&gt; 98% translated&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Spanish:&lt;/strong&gt; 57% translated&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Vietnamese:&lt;/strong&gt; 20.9% translated, 11.1% reviewed&lt;/p&gt;
&lt;p&gt;- ...and several more, including &lt;strong&gt;Catalan&lt;/strong&gt;, &lt;strong&gt;Cantonese&lt;/strong&gt; and &lt;strong&gt;Taiwanese&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Want to help Bonfire speak your language? Please &lt;a href=&quot;https://app.transifex.com/bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;join us&lt;/a&gt; and make a difference for communities worldwide!&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%A4%9D-help-needed&quot;&gt;🤝 Help needed &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0-rc2/#%F0%9F%A4%9D-help-needed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As we push toward 1.0, we&#39;re facing some specific challenges where community support and contributions would make a real difference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DevOps expertise&lt;/strong&gt;: We need help streamlining the Docker installation process to make Bonfire more accessible to new users. If you have experience with containerisation and deployment workflows, your contributions would be invaluable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Elixir developers&lt;/strong&gt;: Join us in improving Bonfire&#39;s stability and performance. We&#39;re focused on eliminating bugs and enhancing the core extensions&#39; reliability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Financial support&lt;/strong&gt;: As a small team of two working full-time on Bonfire, we need community support to sustain development. You can contribute through our &lt;a href=&quot;https://opencollective.com/bonfire-networks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Collective page&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Federation testing&lt;/strong&gt;: We&#39;re seeking users willing to set up Bonfire instances and try out federation and interoperability with other fediverse platforms. Your real-world testing helps ensure Bonfire works seamlessly across the fediverse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Translation&lt;/strong&gt;: Please &lt;a href=&quot;https://app.transifex.com/bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;join us&lt;/a&gt; or share this with your multilingual friends!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are our most pressing needs as we approach 1.0. If you can help with any of these areas, please get in touch via the &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;fediverse&lt;/a&gt;, &lt;a href=&quot;https://matrix.to/#/#bonfire-networks:matrix.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Matrix chat&lt;/a&gt;, or &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GitHub&lt;/a&gt;. Every contribution, big or small, helps make Bonfire better for everyone.&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%99%8F-thank-you!&quot;&gt;🙏 Thank you! &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0-rc2/#%F0%9F%99%8F-thank-you!&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A heartfelt thank you to everyone who has contributed translations and reviews. You are lighting up Bonfire for people everywhere! Here are some of our awesome translators:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Gilles Dutilh, Ahmad Dakhlallah, Lamparina Coletivo, alan ptm, Antonio Irre, Zulfikar A, CDN, cranio_is_thinking, Steven Bond, Diego KehrleSousa, Vrlo Vazno, Ed, Andrei Guliaikin, Hendra Wahyu T, Hippie Gschpängschtli, House of Olivier EU, Ivan Minutillo, Juan García, Lapineige, Pascal Schmid, Martin Frost, Duy, Mayel de Borniol, Sovversivo Anonimo, Peter Kvillegård, Poesty Li, Sergio Guidoux, Vaclovas lntas, Williams Melgar, and many more!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We really appreciate your work! 💜&lt;/p&gt;
&lt;p&gt;And a massive thank you to everyone who contributed code, ideas, testing, translations, and support—including &lt;a href=&quot;https://spark.box464.social/pub/actors/spark464&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@spark464@spark.box464.social&lt;/a&gt; , &lt;a href=&quot;https://pan.rent/users/tommi&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@tommi@pan.rent&lt;/a&gt;, &lt;a href=&quot;https://sueden.social/users/lechindianer&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@lechindianer@sueden.social&lt;/a&gt; , &lt;a href=&quot;https://bonfire.fishinthecalculator.me/pub/actors/fishinthecalculator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@fishinthecalculator@bonfire.fishinthecalculator.me&lt;/a&gt; , &lt;a href=&quot;https://gts.superseriousbusiness.org/users/dumpsterqueer&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@dumpsterqueer@gts.superseriousbusiness.org&lt;/a&gt; , &lt;a href=&quot;https://social.ozoned.net/users/ozoned&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@ozoned@social.ozoned.net&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Thanks to those that are taking time to test drive Bonfire on our &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;demo instance&lt;/a&gt; and provide feedback, such as @LiquidParasyte, @Rincewind, @youronlyone, @coyote...&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Thanks to &lt;a href=&quot;https://social.nlnet.nl/users/nlnet&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@nlnet@social.nlnet.nl&lt;/a&gt; for supporting the Bonfire development, all our Open Collective donors and our amazing community as a whole.&lt;/p&gt;
&lt;p&gt;Bonfire is a collaborative project, and &lt;a href=&quot;https://www.youtube.com/watch?v=9wxI4KK9ZYo&amp;amp;amp;list=RD9wxI4KK9ZYo&amp;amp;amp;start_radio=1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;we’re grateful to build it with you&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ready to try Bonfire 1.0 RC2?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href=&quot;https://bonfirenetworks.org/start/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Get started&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Try our demo instance&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Provide feedback&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chat with us on the fediverse&lt;/a&gt;: &lt;a href=&quot;https://bonfire.cafe/character/Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@Bonfire@bonfire.cafe&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href=&quot;https://matrix.to/#/#bonfire-networks:matrix.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Chat with us on Matrix&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let’s light up the fediverse together! 🚀&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Connect your existing tools to the fediverse with Mosaic</title>
    <link href="https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/"/>
    <updated>2025-07-15T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;Your organisation&#39;s favorite apps, now with superpowers.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We all navigate a constellation of specialized tools daily. Organisations depend on CRMs, project management platforms, and financial systems. Communities coordinate through forums, chat and event platforms, and resource-sharing databases. Individuals track their lives across fitness apps, reading lists, streaming services, knowledge management tools and more.&lt;/p&gt;
&lt;p&gt;Each app serves its purpose, but they each create isolated silos where valuable activities, insights, and connections remain trapped behind separate logins and walled gardens.&lt;/p&gt;
&lt;p&gt;What if you could keep using the tools built for your needs while opening them to your community or the broader fediverse according to your specific rules and boundaries?&lt;/p&gt;
&lt;h2 id=&quot;%F0%9F%A7%B0-bridge-your-tools-to-the-open-web&quot;&gt;&lt;strong&gt;🧰 Bridge your tools to the open web&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/#%F0%9F%A7%B0-bridge-your-tools-to-the-open-web&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Through our &lt;a href=&quot;https://bonfirenetworks.org/mosaic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mosaic&lt;/a&gt; initiative, leveraging the Bonfire modular framework, we offer like-minded organizations and communities the opportunity to build custom extensions that connect their homegrown or third-party applications to the fediverse. These bridges:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Import data from your existing tools&lt;/li&gt;
&lt;li&gt;Transform it into rich ActivityPub activities for federation&lt;/li&gt;
&lt;li&gt;Enable meaningful, two-way interactions&lt;/li&gt;
&lt;li&gt;Respect your privacy boundaries and governance needs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The result? Your isolated tools become part of a connected, collaborative ecosystem.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&quot;real-world-examples%3A-your-tools%2C-federated&quot;&gt;&lt;strong&gt;Real-world examples: your tools, federated&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/#real-world-examples%3A-your-tools%2C-federated&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;project-management-meets-community-feedback&quot;&gt;&lt;strong&gt;Project management meets community feedback&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/#project-management-meets-community-feedback&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Imagine your team uses a kanban board to manage development sprints. With a custom Bonfire extension, we could connect the service&#39;s API and monitor specific triggers like completed tasks, cards tagged with &lt;a class=&quot;hashtag&quot; rel=&quot;tag ugc&quot; href=&quot;https://bonfire.cafe/hashtag/feedback&quot;&gt;#feedback&lt;/a&gt;, or comments added.&lt;/p&gt;
&lt;p&gt;When triggered, the extension would create ActivityPub objects with rich metadata: task description, relevant links, and progress context. Your fediverse followers would receive these as native posts they can react to, boost, and comment on. Their feedback would flow back through the extension as comments on the original card.&lt;/p&gt;
&lt;p&gt;You would control the boundaries granularly, e.g. public for open source projects, followers-only for beta features, restricted to your instance for internal work, or anything in between. The two-way sync would ensure your project management tool remains the single source of truth while your community becomes an active participant in the development process.&lt;/p&gt;
&lt;h3 id=&quot;community-resources-go-network-wide&quot;&gt;&lt;strong&gt;Community resources go network-wide&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/#community-resources-go-network-wide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Your mutual aid network could maintain a resource spreadsheet or database tracking offers, needs, and availability. Our extension would poll for new entries or status changes (by connecting to an API, listening to webhooks, or even directly reading the database or spreadsheet itself), converting them into structured ActivityPub objects with standardised properties for location and resource type taxonomy tags, and custom properties for quantity and urgency.&lt;/p&gt;
&lt;p&gt;When someone marks &amp;quot;10 wool blankets available&amp;quot; or &amp;quot;urgent: need baby formula,&amp;quot; it would federate as a rich post that other instances can parse intelligently. Neighboring mutual aid groups would see these in dedicated feeds or maps, filtered by resource type or geographic proximity.&lt;/p&gt;
&lt;p&gt;The extension could handle resource matching across networks, suggesting possible connections between needs and offers while respecting each network&#39;s autonomy.&lt;/p&gt;
&lt;h3 id=&quot;events-that-travel-beyond-platform-borders&quot;&gt;&lt;strong&gt;Events that travel beyond platform borders&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/#events-that-travel-beyond-platform-borders&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Your organisation&#39;s calendar contains everything from public conferences to internal meetings. The extension would connect via calendar APIs (CalDAV, Google Calendar API, etc.) and intelligently parse event metadata: detecting whether events are public, extracting registration links, and identifying capacity limits.&lt;/p&gt;
&lt;p&gt;Public events would become rich ActivityPub Event objects that federated platforms can display natively—Mobilizon and Bonfire instances would show them in event listings, Mastodon users would see them as interactive posts. RSVPs would flow back through via ActivityPub federation, updating your attendee count in real-time.&lt;/p&gt;
&lt;p&gt;The extension could handle timezone conversions, recurring events, and last-minute changes. When you update event details, it would send an update to ensure all federated copies stay synchronised.&lt;/p&gt;
&lt;h3 id=&quot;the-possibilities-are-endless&quot;&gt;&lt;strong&gt;The possibilities are endless&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/#the-possibilities-are-endless&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Imagine federating your collaborative playlists to spark music discovery across communities. Or sharing fitness milestones that inspire distributed workout challenges. Or creating transparent financial reporting that builds trust with your supporter network.&lt;/p&gt;
&lt;h3 id=&quot;ready-to-give-your-tools-superpowers%3F&quot;&gt;&lt;strong&gt;Ready to give your tools superpowers?&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/connect-your-existing-tools-to-the-fediverse-with-mosaic/#ready-to-give-your-tools-superpowers%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The examples above showcase just a glimpse of what&#39;s possible when we bridge isolated tools to the fediverse. While these specific integrations are just ideas, they represent the transformative potential of Bonfire, and we&#39;re ready to build them with you.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bonfirenetworks.org/mosaic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mosaic&lt;/a&gt; is a unique service where the Bonfire team works with you to co-design and build custom extensions entirely shaped around your community&#39;s needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mosaic is perfect for you if:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You&#39;re frustrated by data trapped in isolated platforms&lt;/li&gt;
&lt;li&gt;Your community wants to participate more but faces too many barriers&lt;/li&gt;
&lt;li&gt;You believe in transparency and collaborative approaches&lt;/li&gt;
&lt;li&gt;You&#39;re ready to pioneer new models of digital cooperation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What we offer:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Custom extension development tailored to your specific tools and workflows&lt;/li&gt;
&lt;li&gt;Full control over privacy boundaries and federation rules&lt;/li&gt;
&lt;li&gt;Ongoing support as your needs evolve&lt;/li&gt;
&lt;li&gt;The opportunity to be among the first to explore federated tool integration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Let&#39;s start a conversation.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Whether you want to federate your project management, open up your resource database, or imagine entirely new possibilities, we&#39;re here to build it with you. Your use case could become the next example inspiring others to break down their digital silos.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cal.com/bonfire-networks/meet?duration=25&amp;amp;amp;overlayCalendar=true&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Book a call with us&lt;/a&gt; or contact us at &lt;a href=&quot;mailto:[team@bonfire.cafe](mailto:hello@bonfire.cafe&quot;&gt;&lt;a href=&quot;mailto:hello@bonfire.cafe%3C/a%3E&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;team@bonfire.cafe&lt;/a&gt;.&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Exploring a Bonfire Geosocial Extension</title>
    <link href="https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/"/>
    <updated>2025-07-23T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/</id>
    <content type="html">&lt;h2 id=&quot;overview&quot;&gt;Overview &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This issue explores implementing a basic geosocial extension for Bonfire that enables location-based social interactions without the privacy concerns, gamification and corporate overhead of foursquare.&lt;/p&gt;
&lt;h2 id=&quot;relevant-resources&quot;&gt;&lt;br /&gt;
Relevant resources &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#relevant-resources&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Use cases and proposed implementation approach: &lt;a href=&quot;https://hedgedoc.socialweb.coop/kUPvzmd4SjyN1oGxyrzskQ#&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;hedgedoc.socialweb.coop/kUPv...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Geosocial task force &lt;a href=&quot;https://github.com/swicg/geosocial&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/swicg/geosocial&lt;/a&gt; (Issues are particularly relevant)&lt;/li&gt;
&lt;li&gt;Small client for checking in places &lt;a href=&quot;https://socialwebfoundation.org/2025/07/14/seeking-interop-testing-for-geosocial-activitypub-client/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;socialwebfoundation.org/2025...&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;mockups&quot;&gt;Mockups &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#mockups&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;create-new-activities-in-the-composer&quot;&gt;Create new activities in the composer &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#create-new-activities-in-the-composer&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Currently, our composer only supports notes and articles. To enable check-ins/check-outs, we need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Activity type selector: Dropdown next to user avatar in composer&lt;/li&gt;
&lt;li&gt;Dynamic fields: Show relevant inputs based on selected activity type&lt;/li&gt;
&lt;li&gt;For check-ins/travel/check-outs: Autocomplete location input&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here our standard component, but with a dropdown element next the user avatar to select the activity to publish&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/efc167f9-7bb2-48a8-942e-98f2b68148a7&quot; alt=&quot;Image&quot; /&gt;&lt;br /&gt;
The dropdown shows the activity type available, based on the active extensions&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/cbdd2a62-ab0d-4a28-888e-a5e087835713&quot; alt=&quot;Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Once the user chooses the activity, the composer includes the needed extra field, in this case for check-in it only adds a autocomplete input for selecting the location.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(I added a dropdown next to checkin for switching between checkin - travel - checkout, maybe it&#39;s better to show all the 3 options inline?)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/335d27e4-9a04-4972-afda-d7deb02a3113&quot; alt=&quot;Image&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;the-place-page&quot;&gt;The place page &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#the-place-page&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Places should be first-class AP actor.&lt;/p&gt;
&lt;p&gt;This transforms places from simple geotags into active participants in the federated web, allowing physical spaces to build communities and curate their digital presence.&lt;/p&gt;
&lt;p&gt;This means also that a place should be managed by one or more user.&lt;/p&gt;
&lt;p&gt;In the following mockups we envisioned a very basic place page: on the right sidebar there is the About widget, with some extra fields that can be included in the place settings such as: name, address, phone number, email, opening hours, plus some aggregated data if needed, like the amount of check-in in last day/weel/month etc.&lt;/p&gt;
&lt;p&gt;The page would have different tabs based on what&#39;s most relevant for the place and the extensions enabled, here the check-in feed&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/848fbbef-1ae2-413b-8a88-437659cfcc2e&quot; alt=&quot;Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;and the events feed&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/289e91c3-1357-4853-b35f-50f5e8ad8b7d&quot; alt=&quot;Image&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We already have most of the building block ready for implementing this, at least for this basic version (eg. focusing only on &amp;quot;public&amp;quot; spaces, not including the event extension, focus on check-in/check-out functionalities).&lt;/p&gt;
&lt;br /&gt;
&lt;h2 id=&quot;location-pages-for-non-actor-places&quot;&gt;Location Pages for Non-Actor Places &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#location-pages-for-non-actor-places&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;For locations from &lt;a href=&quot;http://places.pub/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;places.pub&lt;/a&gt; (or similar services) that aren&#39;t yet ActivityPub actors, we can create aggregation pages that function like more structured location-specific hashtag pages. Users can follow these locations and explore all related activities in one place.&lt;/p&gt;
&lt;br /&gt;
&lt;h3 id=&quot;see-all-the-check-in-that-belong-to-a-specific-location&quot;&gt;See all the check-in that belong to a specific location &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#see-all-the-check-in-that-belong-to-a-specific-location&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/bb5d41ef-b15f-4a87-8f7f-c2b7ef78eb63&quot; alt=&quot;Image&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;see-the-map-with-all-the-other-locations-nearby&quot;&gt;See the map with all the other locations nearby &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#see-the-map-with-all-the-other-locations-nearby&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/3ba2b965-a530-4339-81be-c41236a9502f&quot; alt=&quot;Image&quot; /&gt;&lt;/p&gt;
&lt;h3 id=&quot;see-all-the-media-published-in-that-location&quot;&gt;See all the media published in that location &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/exploring-a-bonfire-geosocial-extension/#see-all-the-media-published-in-that-location&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;br /&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/9eb5119f-c17c-4d79-bc2f-73db719b981e&quot; alt=&quot;Image&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Next steps&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add a Map view mockup (we do already have one in the bonfire_geolocate extension) to navigate all the places in a interactive way&lt;/li&gt;
&lt;li&gt;Add more geosocial activity preview to see how they appear in other feeds&lt;/li&gt;
&lt;li&gt;Feedback on proposed UX flow&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire Social 1.0rc3</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/"/>
    <updated>2025-10-02T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/</id>
    <content type="html">&lt;p&gt;Bonfire’s latest release puts &lt;em&gt;data portability&lt;/em&gt; (moving and taking your data with you) and &lt;em&gt;anti-enshittification&lt;/em&gt; (avoiding manipulative platform tricks) front and center. Whether you’re moving from/to another fediverse app or between Bonfire instances, you can now bring along your posts, bookmarks, block lists, circles — and of course, your followers.&lt;/p&gt;
&lt;p&gt;This release also includes consent-based quoting, new dashboards for migration and federation status, improvements for using Bonfire on mobile, a smoother interface for boundaries, and new guides to help you get started.&lt;/p&gt;
&lt;p&gt;We encourage all instance operators to upgrade and explore these new capabilities. Your feedback on this release candidate will help us refine these features before the stable release.&lt;/p&gt;
&lt;p&gt;Here are more details on some of these...&lt;/p&gt;
&lt;h2 id=&quot;import-your-old-posts-when-moving-instances&quot;&gt;Import your old posts when moving instances &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#import-your-old-posts-when-moving-instances&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You can now bring your posts (and optionally their replies) with you when moving to Bonfire from another instance. Imported posts keep their original dates and links, and are added to your timeline in the right order, so your history looks complete. Replies and threads are preserved, as are like/boost counts. This works by automatically &amp;quot;boosting&amp;quot; your old posts (but without flooding people&#39;s feeds or notifications with old activities).&lt;/p&gt;
&lt;iframe style=&quot;border:0;&quot; width=&quot;800&quot; height=&quot;450&quot; src=&quot;https://www.tella.tv/video/cmg57she8000b0bju3osx89uy/embed?b=0&amp;title=0&amp;a=1&amp;loop=0&amp;t=0&amp;muted=0&amp;wt=0&quot; allowfullscreen=&quot;&quot; allowtransparency=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;h2 id=&quot;consent-based-quoting&quot;&gt;Consent-based quoting &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#consent-based-quoting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire now supports consent-based quoting, introduced through the new ActivityPub extension &lt;a href=&quot;https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FEP-044f&lt;/a&gt;. With this first iteration released alongside Mastodon’s, it marks an important step toward making quoting work smoothly — and respectfully — across the fediverse.&lt;/p&gt;
&lt;p&gt;With Bonfire, you can now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use boundaries to define who can quote your post, who must request first, or who cannot request at all.&lt;/li&gt;
&lt;li&gt;Quote — or request consent to quote — someone else’s post.&lt;/li&gt;
&lt;li&gt;Give or withdraw consent at any time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/quote.png&quot; alt=&quot;quote&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/quote2.jpg&quot; alt=&quot;quote2&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;other-data-portability-improvements&quot;&gt;Other data portability improvements &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#other-data-portability-improvements&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Instance migration is now more robust. In addition to follows, blocks, and posts, you can now export and import circles/lists, bookmarks, likes, and boosts.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/export.jpg&quot; alt=&quot;export&quot; /&gt;&lt;/p&gt;
&lt;p&gt;A dedicated dashboard helps you follow the progress of data imports and migrations, so you always know what&#39;s happening with your data.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/importstatus.jpg&quot; alt=&quot;importstatus&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;federation-status-dashboard&quot;&gt;Federation status dashboard &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#federation-status-dashboard&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Similarly, you can now easily track your outgoing and incoming federated activities with a new dashboard, making it simpler to monitor federation health and troubleshoot issues.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/fedstatus.jpg&quot; alt=&quot;fedstatus&quot; /&gt;&lt;/p&gt;
&lt;iframe style=&quot;border:0;&quot; width=&quot;800&quot; height=&quot;450&quot; src=&quot;https://www.tella.tv/video/cmg58kqnd000i0bl25mb40yi5/embed?b=0&amp;title=0&amp;a=1&amp;loop=0&amp;t=0&amp;muted=0&amp;wt=0&quot; allowfullscreen=&quot;&quot; allowtransparency=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;h2 id=&quot;rss%2Fatom-feeds&quot;&gt;RSS/Atom feeds &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#rss%2Fatom-feeds&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Access your data beyond the fediverse: Subscribe to Bonfire feeds via your preferred RSS/Atom client. You can subscribe to specific users or to a feed of your choice, including bookmarks, likes, etc, all available as RSS.&lt;/p&gt;
&lt;iframe style=&quot;border:0;&quot; width=&quot;800&quot; height=&quot;450&quot; src=&quot;https://www.tella.tv/video/cmg57fu7u00050bjj2skigzpn/embed?b=0&amp;title=0&amp;a=1&amp;loop=0&amp;t=0&amp;muted=0&amp;wt=0&quot; allowfullscreen=&quot;&quot; allowtransparency=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;h2 id=&quot;boundary-ui-%26-usability-improvements%3A&quot;&gt;Boundary UI &amp;amp; usability improvements: &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#boundary-ui-%26-usability-improvements%3A&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Boundaries (who can see or interact with your posts) are now easier to use. For example, you can share a post publicly but limit who can reply or quote it. Bonfire’s boundaries now also connect with GoToSocial’s interaction controls and Mastodon&#39;s quote authorisations, making them more interoperable across the fediverse. We also drafted a guide about &lt;a href=&quot;https://docs.bonfirenetworks.org/boundaries.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;how you can start using circles and boundaries&lt;/a&gt; (feedback welcome!)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/boundary.jpg&quot; alt=&quot;boundary&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;mobile-web-app-improvements&quot;&gt;Mobile web app improvements &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#mobile-web-app-improvements&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The progressive web app experience has been refined with UI and UX enhancements that make Bonfire feel more native on mobile devices. Whether you&#39;re installing Bonfire to your home screen or using it directly in your mobile browser, the interface now responds more smoothly and adapts better to different screen sizes.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/pwa.jpg&quot; alt=&quot;pwa&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;single-sign-on&quot;&gt;Single sign-on &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#single-sign-on&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire supports OpenID Connect and OAuth2 authentication, allowing instance administrators to configure their preferred identity providers for login and signup. We&#39;ve tested integration with GitHub, ORCID, Zenodo, and more, making it easier for communities to align authentication with their existing workflows and trust networks.&lt;/p&gt;
&lt;p&gt;Each instance can define which providers to enable and whether to allow new signups through SSO, giving administrators flexibility in how their communities access Bonfire. Bonfire can also act as an SSO provider itself, so other applications can authenticate users through your instance.&lt;/p&gt;
&lt;iframe style=&quot;border:0;&quot; width=&quot;800&quot; height=&quot;450&quot; src=&quot;https://www.tella.tv/video/cmg55xx3q007u0cl80ps2hrcj/embed?b=0&amp;title=0&amp;a=1&amp;loop=0&amp;t=0&amp;muted=0&amp;wt=0&quot; allowfullscreen=&quot;&quot; allowtransparency=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;h2 id=&quot;federation-interoperability-guide&quot;&gt;Federation interoperability guide &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#federation-interoperability-guide&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Published &lt;a href=&quot;https://docs.bonfirenetworks.org/federation-interoperability.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;interoperability docs&lt;/a&gt; to ensure compatibility with other ActivityPub software.&lt;/p&gt;
&lt;h2 id=&quot;user-guides&quot;&gt;User guides &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#user-guides&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/user-guides.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;New guides&lt;/a&gt; and documentation help you get started and make the most of Bonfire&#39;s features, whether you&#39;re new to the fediverse or exploring advanced capabilities like boundaries and circles. This is a work in progress, so feedback on how things would be better explained or what&#39;s missing would be very helpful!&lt;/p&gt;
&lt;p&gt;These guides are designed to help you understand, use, and configure Bonfire.&lt;/p&gt;
&lt;h3 id=&quot;core-concepts&quot;&gt;Core Concepts &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#core-concepts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/what-is-bonfire.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;What is Bonfire?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/what-is-federation.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;What is Federation, the Fediverse, and ActivityPub?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/flavours.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Choosing a Bonfire Flavour&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/choosing-an-instance.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Choosing a Bonfire Instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/your-profile.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Your Bonfire Profile and Identity&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;using-bonfire&quot;&gt;Using Bonfire &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#using-bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/getting-started.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Getting Started: Signing Up and Profiles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/finding-following.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Finding people &amp;amp; Following&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/posting-and-interacting.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Posting, Sharing, and Interacting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/attachments-and-media.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Attachments and Media&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/boundaries.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Privacy &amp;amp; Sharing Controls: Circles &amp;amp; Boundaries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/content-warnings.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sensitive Content &amp;amp; Content Warnings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/custom-feeds.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Custom Feeds &amp;amp; Filters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/shared-circles.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Circles as Shared Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/messages.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Messaging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/searching.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/notifications.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Notifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/settings-customisation.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Settings &amp;amp; Customizing your Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/moderation.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Blocking &amp;amp; Moderation Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/rss.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;RSS Feeds&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;data-%26-identity-portability&quot;&gt;Data &amp;amp; Identity Portability &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#data-%26-identity-portability&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/data-manage.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Managing your data&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/data-manage.html#moving-your-information&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Moving your information&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/data-manage.html#deleting-your-data&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Deleting your data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/data-manage.html#frequently-asked-questions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Frequently Asked Questions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/instance-immigration.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Moving to a Bonfire instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/instance-emigration.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Moving away from your Bonfire instance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;advanced-guides&quot;&gt;Advanced guides &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#advanced-guides&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/remote-interactions.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Remote Interactions and the Fediverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/extensions.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Bonfire Extensions/Plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/running-your-own.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Running Your Own Instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/moderator-tools.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Moderator Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/admin-tools.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Admin Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a full list of changes, you can read the &lt;a href=&quot;https://docs.bonfirenetworks.org/changelog.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;changelog&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what&#39;s-next&quot;&gt;What&#39;s next &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#what&#39;s-next&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;We&#39;re eager to dive deeper with you and gather feedback &lt;a href=&quot;https://mastodon.social/@fediforum/115203362012720253&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;during the next FediForum&lt;/a&gt; on Oct 7-8th, where we&#39;ll paricipate in a session along with our friends from the &lt;a href=&quot;https://www.newsmastfoundation.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NewsMast Foundation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In November, we&#39;ll be &lt;a href=&quot;https://www.sfscon.it/talks/bonfire-public-interest-social-networks/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;presenting at SFSCON&lt;/a&gt; in Bolzano, Italy. We&#39;d love to connect and hang out with those of you who&#39;ll be there, if you&#39;re planning to attend, please reach out!&lt;/li&gt;
&lt;li&gt;Beyond Bonfire Social, we&#39;re also working on the Open Science Network flavour, which is shaping up to address critical needs in academic and research communities.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;support-the-project&quot;&gt;Support the project &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-social-1-0rc3/#support-the-project&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Building truly autonomous digital spaces requires community and solidarity.&lt;/p&gt;
&lt;p&gt;If Bonfire’s vision speaks to you, there are many ways to help. Financial support via &lt;a href=&quot;https://opencollective.com/bonfire-networks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Collective&lt;/a&gt; helps us dedicate time to maintenance rather than just features. But contributions aren’t only financial — testing this release candidate, &lt;a href=&quot;https://app.transifex.com/bonfire/bonfire/dashboard/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;translating the interface&lt;/a&gt;, reporting bugs, or spreading the word are equally valuable. Every action strengthens the commons we’re building together.&lt;/p&gt;
&lt;p&gt;Anti-enshittification is a collective effort to create digital commons that serves people, not platforms.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire Social 1.0 is here, back the community‑funded roadmap</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-social-1-0-is-here-back-the-community-funded-roadmap/"/>
    <updated>2025-11-07T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-social-1-0-is-here-back-the-community-funded-roadmap/</id>
    <content type="html">&lt;p&gt;Today we&#39;re releasing Bonfire Social 1.0: a federated community‑first social network and the modular toolkit that powers it: a framework for building apps on the open social web beyond microblogging. We&#39;re pairing the launch with a &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=ysD_3Grs5UGdSSFrePZkMw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;crowdfund&lt;/a&gt; so communities drive what we build next.&lt;/p&gt;
&lt;a target=&quot;blank&quot; class=&quot;&quot; href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=ysD_3Grs5UGdSSFrePZkMw&quot;&gt;
    &lt;img src=&quot;https://bonfirenetworks.org/img/crowd.jpg&quot; /&gt;
&lt;/a&gt;
&lt;p&gt;If you believe the social web should be open and portable - where your profiles, relationships and data move with you, where governance lives with communities, and where you can build beyond microblogging for community organising, mutual aid, and collective decisionmaking, this is your moment to help.&lt;/p&gt;
&lt;p&gt;Please back the campaign, share it, and invite others to make this &amp;quot;last migration&amp;quot; from closed platforms to open, interoperable networks.&lt;/p&gt;
&lt;div class=&quot;flex place-content-center py-12&quot;&gt;
&lt;a class=&quot;btn btn-xl btn-primary&quot; href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=ysD_3Grs5UGdSSFrePZkMw&quot;&gt;Visit the campaign page for more details&lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;Quick links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfirenetworks.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.bonfirenetworks.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Follow updates on the fediverse&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=ysD_3Grs5UGdSSFrePZkMw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Crowdfunding&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thank you for helping build a safer and community‑centred social web, slowly, autonomously, together.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Matters of care - why maintenance comes first</title>
    <link href="https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/"/>
    <updated>2025-11-12T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/</id>
    <content type="html">&lt;p&gt;It was not an easy choice to focus our &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=-YQJw6aoAk2lztEAWCtGSw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;crowdfunding campaign&lt;/a&gt; on care and maintenance as the condition sine qua non to consider it successful.&lt;/p&gt;
&lt;p&gt;Some may dismiss a maintenance‑focused campaign as unambitious or uninteresting, if they don&#39;t see the stretch goals beyond it. Others may just not be hooked on backing a project that cares (pun intended) so much about maintenance, as Erin Kissane beautifully put it in &lt;a href=&quot;https://www.wrecka.ge/sparks-fly-up/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;her recent essay&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bonfire also, to my absolute delight, foregrounds maintenance—the thing no institutional funder ever wants to help with, because the incentives are for the innovative and new, not the stable and thriving&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Care work is unsexy. It doesn’t open wallets or drive clicks. So why put care as the foundation, and how does it shape what and how we build?&lt;/p&gt;
&lt;p&gt;First, let&#39;s clarify what &amp;quot;care&amp;quot; means to us. We go by the definition elaborated by Joan Tronto and Berenice Fisher in &lt;a href=&quot;https://www.scribd.com/document/330973025/Fisher-Tronto-Toward-a-Feminist-Theory-of-Caring-1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Toward a feminist theory of caring&lt;/a&gt;, discovered while reading the &lt;a href=&quot;https://syllabus.pirate.care/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PirateCare&lt;/a&gt; syllabus several years ago, shared with us by our friend Maddalena Fragnito:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the most general sense, care is a species activity that includes everything we do to maintain, continue and repair our world so that we may live in it as well as possible. That world includes our bodies, ourselves and our environment, all of which we seek to interweave in a complex, life-sustaining web.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Almost all open source software goes through that, because care is first of all about nurturing relationships:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;To care about something, or for somebody, is inevitably to create relation. Caring is more than an affective-ethical state: it involves material engagement in labours to sustain interdependent worlds, labours that are often associated with exploitation and domination.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;- Maria Puig de La Bellacasa, 2012. &lt;a href=&quot;https://syllabus.pirate.care/library/BROWSE_LIBRARY.html#/book/1643ef2b-c9d8-4eb1-baf5-730144eadc6d&quot; title=&quot;&#39;Nothing comes without its world&#39;: Thinking with care&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;em&gt;Nothing comes without its world: Thinking with care&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;valuing-unglamorous-labour&quot;&gt;Valuing unglamorous labour &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/#valuing-unglamorous-labour&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Maintaining, continuing and repairing are care work. They’re foundational to any open‑source project. Maintenance is the unglamorous work that keeps people safe, tools usable, and the commons alive.&lt;/p&gt;
&lt;p&gt;Day to day, that looks like fixing bugs and security issues, keeping things reliable and performant, documenting how to use and deploy, adding settings people ask for, translating the interface, and making it accessible on slow connections and phones. It’s unglamorous, often invisible, but it’s what builds reliability, equity, and trust.&lt;/p&gt;
&lt;p&gt;But caring in open‑source software is also about maintaining relationship and communication: documentation and guides, replying to questions, and being accountable to the community that is using or wants to use your tools: community support; managing translations and localisation; troubleshooting; moderation for project spaces; attending calls and events; onboarding help... did we say troubleshooting?&lt;/p&gt;
&lt;h2 id=&quot;mutual-aid-over-burnout&quot;&gt;Mutual aid over burnout &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/#mutual-aid-over-burnout&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;However, care isn’t just outwards facing, it&#39;s how we hold eachother up. If life intervenes (with illness, caregiving, burnout, financial stress, etc.) we don&#39;t apply pressure; we offer solidarity. As much as possible, the rest of us stretch so others don&#39;t have to vanish or push through pain. We redistribute tasks, slow a release, pool funds, and amplify their other work. People first, with tempo and budgets set by real lives. That&#39;s how the commons stays alive: not just through resilient code but through resilient relationships.&lt;/p&gt;
&lt;p&gt;This relational care extends in collaborations with people involved in flavours such as the &lt;a href=&quot;https://openscience.network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science Network&lt;/a&gt;, family and friends, and allied communities or projects. &lt;strong&gt;It takes a village to keep the commons alive&lt;/strong&gt; and healthy beyond any &amp;quot;core team&amp;quot;.&lt;/p&gt;
&lt;h2 id=&quot;how-care-shapes-the-system&quot;&gt;How care shapes the system &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/#how-care-shapes-the-system&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We also apply care at the root of our technical and governance infrastructure. We want our software to be community‑driven in terms of what features are prioritised, which are excluded, how features are designed, how defaults are decided, and how communities should not be bottlenecked by previous decisions about how things are supposed to work for them.&lt;/p&gt;
&lt;p&gt;We believe in many interconnected worlds, not one platform. Communities should set their own rules and still connect. That’s why we create everything as remixable building blocks and release code under the open source AGPL licence and refuse ads or VC incentives that drive enshittification.&lt;/p&gt;
&lt;p&gt;In short, we &lt;a href=&quot;https://bonfirenetworks.org/posts/slow-software-for-a-burning-world/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;prioritise care over novelty and speed&lt;/a&gt;. We listen first, do user research, and design for consent and harm reduction. Ethics and real needs guide what we build and how we ship.&lt;/p&gt;
&lt;h2 id=&quot;tools-for-organising-and-care&quot;&gt;Tools for organising and care &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/#tools-for-organising-and-care&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We&#39;ve now released the Bonfire Social flavour and are actively working on the &lt;a href=&quot;https://openscience.network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science Network&lt;/a&gt;, in cooperation with a group of scientists and researchers.&lt;/p&gt;
&lt;p&gt;Once we have care covered, we&#39;ll feel ready to commit to building exciting and critical features together with an awesome list of communities and partners, to transform how social networks can empower communities for the better: free from billionaires, VCs, and benevolent dictators.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=-YQJw6aoAk2lztEAWCtGSw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;crowdfunding&lt;/a&gt; stretch goals include tools such as for groups, events, collective decision‑making, cross‑instance moderation tooling, mutual aid networks, living memory archives, etc., to move beyond social media (broadcasting content to an audience) and extend the social graph to community organising, blurring the lines between local communities and digital spaces.&lt;/p&gt;
&lt;h2 id=&quot;infrastructure-for-the-long-haul&quot;&gt;Infrastructure for the long haul &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/#infrastructure-for-the-long-haul&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;With the Co‑op Hosting stretch goal (in cooperation with &lt;a href=&quot;https://coopcloud.tech/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Co-op Cloud&lt;/a&gt;) we want to build a network of care to offer an infrastructure that is accessible and trustworthy to non‑technical communities across the whole software lifecycle, providing sustainability for all partners and teams involved. Shared sustainability means funding infrastructure, ongoing maintenance and contributor care, not just new features.&lt;/p&gt;
&lt;h2 id=&quot;back-the-care-work&quot;&gt;Back the care work &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/#back-the-care-work&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Our crowdfunding campaign is radically ambitious specifically because we put care as the precondition to research and development.&lt;/p&gt;
&lt;p&gt;At the time of writing we’re 74% of the way towards the care and maintenance goal. &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=-YQJw6aoAk2lztEAWCtGSw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Please help us cross the last mile to our first goal&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you can&#39;t contribute funds, please share the campaign on different channels, introduce us to people who could help (such as journalists or pilot communities) or contribute feedback or translations, all equally part of building (and maintaining!) the commons together.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Gifting with Integrity: Federated Digital Spaces for Mutual Aid Networks</title>
    <link href="https://bonfirenetworks.org/posts/gifting-with-integrity-federated-digital-spaces-for-mutual-aid-networks/"/>
    <updated>2025-11-15T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/gifting-with-integrity-federated-digital-spaces-for-mutual-aid-networks/</id>
    <content type="html">&lt;p&gt;&lt;em&gt;Meet Adrian and Lee, two of the people helping shape Bonfire&#39;s future. They are gifting group administrators who&#39;ve been on the frontlines of the Buy Nothing movement, building community, fostering generosity, and fighting against Facebook&#39;s enshittification every step of the way.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;They&#39;re co-designing the &lt;strong&gt;Mutual Aid Networks&lt;/strong&gt; stretch goal with us, bringing years of lived experience into Bonfire&#39;s development.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;In this video and in Adrian&#39;s writeup below they share their story, why this matters, and why we&#39;re building it together.&lt;/em&gt;&lt;/p&gt;
&lt;iframe title=&quot;Federated Digital Spaces for Mutual Aid Networks&quot; width=&quot;100%&quot; height=&quot;415&quot; src=&quot;https://tube.tchncs.de/videos/embed/sDPYuULUTgqb8sRsX4bSye&quot; allow=&quot;fullscreen&quot; sandbox=&quot;allow-same-origin allow-scripts allow-popups allow-forms&quot; style=&quot;border: 0px;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=7Vo-UxoRp0GKKVWKtESgIA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Support our crowdfunding campaign&lt;/a&gt;&lt;/strong&gt; to make community-owned gifting infrastructure a reality.&lt;/em&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;the-gifting-movement&quot;&gt;The Gifting Movement &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/gifting-with-integrity-federated-digital-spaces-for-mutual-aid-networks/#the-gifting-movement&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;I am an administrator of a gifting group, formerly known as “Buy Nothing” on the formerly tolerable “facebook”. We’re looking for a new home.&lt;/p&gt;
&lt;p&gt;Buy Nothing was a grassroots movement that had millions of participants in thousands of groups across the world. In my suburb, 1 in 5 people are members of our local chapter’s facebook group, which exists for the sole purpose of either giving things away, or asking for things, from your neighbours. The movement has now forked into both a privately owned (somewhat buggy) app and a rebel alliance of facebook groups called “Gifting with Integrity” and other names.&lt;/p&gt;
&lt;p&gt;Buy Nothing’s global success could be attributed to the context in which it was started, its thoughtful principles and its careful coordination. Facebook’s universal adoption and its built-in groups functionality made it technically easy to set up one of these communities and have the posts appear in people’s news feeds.  People were already checking these, which made it a low barrier to entry. Buy Nothing groups emphasised that meeting new people; helping each other, being kind and respectful in the process; were all part of the goal. That was a new experience for many facebook users, who are used to the &lt;a href=&quot;https://www.youtube.com/watch?v=8HXFurHCkP8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;wild west&lt;/a&gt; of facebook Marketplace interactions. Facebook doesn’t really facilitate kindness and respect out of the box but the founders of Buy Nothing worked hard to build &lt;a href=&quot;https://buynothingproject.org/academy&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;a kind-of open-source administrative control&lt;/a&gt; to circumvent facebook’s default of &lt;a href=&quot;https://theconversation.com/its-not-just-bad-behavior-why-social-media-design-makes-it-hard-to-have-constructive-disagreements-online-161337&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;engineering for conflict&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;a-movement&#39;s-secret-sauce&quot;&gt;A Movement&#39;s Secret Sauce &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/gifting-with-integrity-federated-digital-spaces-for-mutual-aid-networks/#a-movement&#39;s-secret-sauce&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The movement tapped into the unmistakable joy that comes from giving and sharing as well as the security we feel from getting our needs met by our community. It tapped into the longing for real, human connection that was coming from our increasing addiction to being online.&lt;/p&gt;
&lt;p&gt;The group administrators are responsible for bringing the movement&#39;s principles from theory into action. Every group administrator who set up a Buy Nothing group was asked to complete the Buy Nothing training linked above. This included introducing ideas like: what is a gift economy; understanding the benefits of diversity; understanding the issues with consumerism, prejudice, privilege; and all the practicalities of starting a group. Group administrators were connected in regional and global chat groups, enabling them to solve problems together, share expertise and evolve new ideas to be incorporated into the training material. The result was the most progressive induction I had partaken in up to that moment.&lt;br /&gt;
Having a clear educational pathway makes it possible to replicate the successful elements of a group in new instances. The initial learning load is not a barrier to entry, but instead resonates with the people who have noticed the same issues it solves. They see it as a meaningful call to action which they are willing to put their energy behind. The power and privilege of administrating a group is given freely to anyone willing to endure this rewarding rite of passage.&lt;/p&gt;
&lt;p&gt;Group administrators promote their group through their real-life social networks. Since they have such a good understanding of the movement’s principles, these are relayed with enthusiasm and passion. This gets passed through friends and friends-of-friends like a wave. The enthusiasm and passion exchanged is just not comparable to receiving a link from a stranger. If people know and trust the admins, this trust is also transferred into the group they create. This becomes an essential part of setting and propagating the culture. Everyone in the group is connected to everyone else, friends, family or neighbours and this affects how we interact with each other: with accountability and consideration (not like many other spaces of the internet, which are more like people who have crossed international borders to go on a bender without repercussions.)&lt;/p&gt;
&lt;h2 id=&quot;mutual-aid-movements-v-capitalism&quot;&gt;Mutual Aid Movements v Capitalism &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/gifting-with-integrity-federated-digital-spaces-for-mutual-aid-networks/#mutual-aid-movements-v-capitalism&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;As facebook has increasingly needed to deliver higher revenue to justify its share price, the quality of our news feeds has been in freefall, consisting mostly of paid content, devoid of truth and morality. Now it feels like our local gifting groups are being held hostage along with the other interest groups and communities. They all came to facebook because that&#39;s where the people were. Now the only reason people go on facebook is because that&#39;s where the groups are.&lt;/p&gt;
&lt;p&gt;There have been a lot of attempts to make apps that take the gifting phenomenon out of facebook. None though seem to have achieved the cohesive, world spanning momentum of the original Buy Nothing groups. In the official Buy Nothing app, “Community Builders” (aka “Administrators”) are now considered optional extras, so anyone can start using the app in any area, at any time, regardless of whether someone has committed themselves to grow and nurture the movement there. The result is that people have an experience of turning up to a party with no one else there, one at a time. I guess Buy Nothing failed to replicate the success of Buy Nothing. Like many other tech startups, they might have thought it made business sense to engineer away the need for administrators, to reduce a perceived problem of work hours. But in doing so, they ignored the dynamics of a social movement: who’s going to promote the group now? Who’s going to take responsibility for the group’s direction? Who’s going to provide the feedback and new ideas? Sure they might keep trying to make AI grow a conscience and moderate every conversation in the world at once, but we love being moderators and we love our oceans at their current temperatures, so why introduce new problems for useless solutions?&lt;/p&gt;
&lt;h2 id=&quot;mutual-aid-unleashed&quot;&gt;Mutual Aid Unleashed &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/gifting-with-integrity-federated-digital-spaces-for-mutual-aid-networks/#mutual-aid-unleashed&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Innovation should be targeted at real problems. The way existing commercial online marketplaces are set up, there is little consideration for the economy of movement. At any point in time, any person might decide they want something from literally anywhere and the result is traffic (and emissions). We also have a problem of people feeling the need to be glued to their phones in case they miss out on something. To address this in our groups we encourage people to wait a while before choosing who will receive their gift. If we had control of the underlying software, we could design our gifting platform to first expose gifts to nearby neighbours and increase the radius over time. This would introduce a natural delay in the likelihood of a gift being allocated, and help in strengthening nearby neighbourhood connections (reversing feelings of isolation). It would also reduce transport emissions by prioritising these localised interactions, while saving more distant interactions for more niche objects.&lt;/p&gt;
&lt;p&gt;We can also be conscious about how our online communities affect our culture, which means we can decide together which of our expectations we want to keep and which don’t serve us well anymore. Should I expect, as people in my city do, that every 6 months, I can generate a pile of rubbish that is too big to go in my 240L bin (which I also expect to be emptied every week?) Should I expect that the council will take it, squash it and bury it? Should I expect that the only way this stuff is going to get recycled is by people driving around rummaging through the rubbish? Should I expect someone else to recover and repair our broken stuff? Should I expect there is a lower class to do this for me and that they should show gratitude for this honour? Or should I try to demonstrate that when I buy something, its existence is my responsibility, including when it is no longer useful to me. Are there things I just shouldn’t buy? Are there things that shouldn&#39;t be for sale in the first place?&lt;/p&gt;
&lt;p&gt;When we have determined what our community’s principles or “rules” are, finding out about them shouldn’t be the same experience as encountering a big tech’s “terms of service”: large blocks of complicated text, cut off by a scroll bar, making room for a big “Agree” button that will make it all go away.  These are designed for minimal engagement and minimal understanding to obfuscate rules that benefit one large company. Moderators and group administrators need to establish, learn, evolve and propagate community culture and if this is enhanced in our technology design, we will be rewarded with a safe, progressive and popular movement.&lt;/p&gt;
&lt;p&gt;The cultural change that we are talking about amounts to a large reduction of material waste and a great improvement in mental health outcomes for our community. Had the costs otherwise fallen upon our state bodies, they would be exponentially greater than the cost of investing in development of open source software which can be deployed across many regions with similar issues to solve. Investing in community hosting collectives, is a far more economic proposition than corporate subscription solutions which not only cover running costs but investors&#39; completely insatiable greed.&lt;/p&gt;
&lt;p&gt;We are driven by a desire to see less unnecessary consumption, less trash, less traffic and less isolation. We want to see less misinformation and less of the corruption, suffering and inequality it enables. We want more input and more community connections. We see easy ways to influence all of these things by letting communities partake in designing and running their own communications platforms.&lt;/p&gt;
&lt;p&gt;We want to connect with other gifting groups around the country and around the world about how they’re addressing similar issues. We want to collaborate with the local council and government bodies who see value in backing these community-led and community-owned initiatives. We’d love to hear from members of gifting communities about their thoughts on social media and how our groups should evolve in the future. We want to work with local, progressive tech people who are passionate about sustainable, community hosting and software. Let’s connect and build this together.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you are part of a mutual aid or gifting community, get in touch with us to work together on the mutual aid stretch goal. &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=7Vo-UxoRp0GKKVWKtESgIA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Support our crowdfunding campaign&lt;/a&gt; to make community-owned gifting infrastructure a reality.&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>What is Bonfire? Plural by design</title>
    <link href="https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/"/>
    <updated>2025-11-27T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/</id>
    <content type="html">&lt;p&gt;Bonfire is difficult to pin down with a single definition, and that&#39;s a feature, not a bug. The project&#39;s very structure is about enabling a tapestry of social spaces, all built with shared building blocks but diverging in flavour, practice, and purpose. In this post we embrace the project&#39;s plurality and explore the many ways people around the web describe and understand Bonfire.&lt;/p&gt;
&lt;h2 id=&quot;1.-familiar-yet-different%3A-not-(just)-another-mastodon&quot;&gt;1. &lt;strong&gt;Familiar yet different: not (just) another Mastodon&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/#1.-familiar-yet-different%3A-not-(just)-another-mastodon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Many pin Bonfire as “Mastodon-adjacent”, but see both a family resemblance and a revolution brewing:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Bonfire Social seems to be a Mastodon alternative?&amp;quot;&lt;a href=&quot;https://masto.ahlcode.fi/@nicd/114754600642984492&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^14&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Mastodon sets out to create a single optimized interface for a short form social network. Bonfire sets out to let you create different interfaces that match what your unique community needs...&amp;quot;&lt;a href=&quot;https://social.tchncs.de/@Blort/115336522698974359&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^1&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or, as another puts it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Bonfire, the swiss knife fused with a dremel of the fediverse&amp;quot;&lt;a href=&quot;https://fosstodon.org/@devSJR/114756522774543346&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^15&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;2.-bonfire-as-a-toolkit-or-framework-for-building-community-platforms&quot;&gt;2. &lt;strong&gt;Bonfire as a toolkit or framework for building community platforms&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/#2.-bonfire-as-a-toolkit-or-framework-for-building-community-platforms&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A recurring theme is that Bonfire is fundamentally &lt;em&gt;not just&lt;/em&gt; a social platform, but an extensible toolkit or framework:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Bonfire is a framework to put together different configurable communities or social networks based on ActivityPub. ... Bonfire sets out to let you create different interfaces that match what your unique community needs through extensions.&amp;quot;&lt;a href=&quot;https://social.tchncs.de/@Blort/115336522698974359&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^1&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;It&#39;s modular. Devs can create plug-ins to add features. For example, you can run different &#39;apps,&#39; including social (Mastodon-like), community (Forum-like)... hoping devs can pick and choose feature sets they want to build unique platforms. Like fediverse legos.&amp;quot;&lt;a href=&quot;https://mastodon.social/@box464/114762962043899358&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Both a platform like mastodon, and a toolkit for internet community software...&amp;quot;&lt;a href=&quot;https://mastodon.online/@CrisColor/115530887699974411&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^3&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or as one commenter quips:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Beneath the surface, there’s a bigger story ... rather than simply being a social platform, it’s also a development framework.&amp;quot;&lt;a href=&quot;https://wedistribute.org/2024/02/bonfire-nextgen-framework/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^4&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;3.-flavours-and-extensions%3A-customisation-and-plurality-by-design&quot;&gt;3. &lt;strong&gt;Flavours and extensions: customisation and plurality by design&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/#3.-flavours-and-extensions%3A-customisation-and-plurality-by-design&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;What makes Bonfire unique is the &lt;em&gt;flavour&lt;/em&gt; and &lt;em&gt;extension&lt;/em&gt; model, which means each instance could feel totally different:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;In Bonfire, Extensions are first-class citizens... ranging from the federation library to data access controls to mutual aid tools ... pick and choose which ones to use, then bundle them together into a single app experience. Bonfire calls these experiences &lt;em&gt;Flavors&lt;/em&gt;...&amp;quot;&lt;a href=&quot;https://wedistribute.org/2024/02/bonfire-nextgen-framework/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^4&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Each flavor is a preconfigured bundle ... When a community opts to run a particular &#39;flavor,&#39; it gets to govern the app as it sees fit, adding its own extensions and determining its own roadmap for product changes. This puts the social software back under users’ control...&amp;quot;&lt;a href=&quot;https://techcrunch.com/2025/06/05/bonfires-new-software-lets-users-build-their-own-social-communities-free-from-platform-control/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^5&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One commenter likens Bonfire to &lt;em&gt;&amp;quot;a social networking-focused Nextcloud,&amp;quot;&lt;/em&gt;&lt;a href=&quot;https://tech.lgbt/@Kye&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^6&lt;/a&gt; while another compares it to &lt;strong&gt;&lt;em&gt;&amp;quot;getting all your friends together for a big barn-raising, and then each of you gets to customize and decorate your own interior unit. The foundation is prepared for you and all the timber and roofing supplies are available.&amp;quot;&lt;/em&gt;&lt;/strong&gt;&lt;a href=&quot;https://cosocial.ca/@johannab/115509323263896820&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^7&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Or succinctly:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Fediverse platform built for customization and extension as a one sentence explanation.&amp;quot;&lt;a href=&quot;https://lemmy.ml/comment/21468461&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^8&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;4.-commons-and-cooperative-ethos%2C-not-just-software&quot;&gt;4. &lt;strong&gt;Commons and cooperative ethos, not just software&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/#4.-commons-and-cooperative-ethos%2C-not-just-software&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire’s modularity isn’t just technical, but philosophical:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Bonfire is building a modular toolkit for communities with the decentralised, commons patterns at heart...&amp;quot;&lt;a href=&quot;https://social.coop/@Wtebbens/115547264551624156&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^9&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;kind of a framework to build fediverse apps… putting a lot is emphasis on community and cooperative aspects.&amp;quot;&lt;a href=&quot;https://europe.pub/comment/3662441&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^21&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;The team describes Bonfire as open, community-first infrastructure, and their design is explicitly for communities rather than individual people.&amp;quot; Bonfire is &amp;quot;a &#39;third path&#39; between blockchain’s emphasis on individual sovereignty and Big Tech’s centralisation, one that centers collective care and community autonomy.&amp;quot;&lt;a href=&quot;https://connectedplaces.online/reports/fediverse-report-141-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^10&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Bonfire’s own flavor offerings, like the &lt;a href=&quot;https://openscience.network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science Network&lt;/a&gt;, are co-designed with stakeholders:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Each feature is being co-designed with organisations bringing domain expertise, from Princeton HCI’s research on collective governance to Co-op Cloud’s work on community hosting infrastructure.&amp;quot;&lt;a href=&quot;https://connectedplaces.online/reports/fediverse-report-141-2/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^10&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;5.-granular-boundaries-%26-empowerment-of-communities-and-individuals&quot;&gt;5. &lt;strong&gt;Granular boundaries &amp;amp; empowerment of communities and individuals&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/#5.-granular-boundaries-%26-empowerment-of-communities-and-individuals&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Many point out this signature capability: fine-tuned privacy and boundaries.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;...with a unique feature of boundaries, your posts can be shared to specific people within your &#39;circles&#39;.&amp;quot;&lt;a href=&quot;https://mastodon.social/@box464/114762962043899358&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;On peut gérer avec précision qui peut voir/intéragir avec les messages avec un système de cercles.&amp;quot;&lt;a href=&quot;https://pouet.chapril.org/@Zekovski/114750760263976302&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^11&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Other features noted include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Custom feeds&lt;/li&gt;
&lt;li&gt;Multiple independent profiles per user&lt;/li&gt;
&lt;li&gt;Portability &amp;amp; content migration tools&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&amp;quot;Group-based visibility and feeds with Circles and extremely granular controls for who can see, reply to, and otherwise interact with posts using Boundaries.&amp;quot;&lt;/em&gt;&lt;a href=&quot;https://www.wrecka.ge/sparks-fly-up/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^12&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;6.-diverse-use-cases-%26-flavours-in-practice&quot;&gt;6. &lt;strong&gt;Diverse use cases &amp;amp; flavours in practice&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/#6.-diverse-use-cases-%26-flavours-in-practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Far from being “just another Mastodon,” Bonfire’s architecture enables specialized communities and use cases:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;An example of what you can do with the blocks: Bonfire’s Open Science community project ... was co-designed with working scholars to build something that served them, specifically. ... It’s designed to integrate scholarly data...&amp;quot;&lt;a href=&quot;https://www.wrecka.ge/sparks-fly-up/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^12&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It’s also being tried out for:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;experimenting with #Bonfire as a platform for Buddhist monasteries.&amp;quot;&lt;a href=&quot;https://todon.nl/@yetiinabox/114774170205352633&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^13&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And for those seeking sanctuary from Facebook groups:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Would it be an alternative place to put facebook groups? There are fb groups doing important things like Buy Nothing Project, food sharing etc.... I&#39;m really looking forward to community-built and community-hosted alternatives.&amp;quot;&lt;a href=&quot;https://cosocial.ca/@johannab/115509323263896820&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^7&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;7.-bonfire&#39;s-potential-and-the-challenge-of-defining-it&quot;&gt;7. &lt;strong&gt;Bonfire&#39;s potential and the challenge of defining it&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/#7.-bonfire&#39;s-potential-and-the-challenge-of-defining-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If there&#39;s a through-line, it&#39;s excitement and a sense that Bonfire eludes easy description:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;I&#39;ve been very hyped for Bonfire for quite some time...&amp;quot;&lt;a href=&quot;https://pouet.chapril.org/@Zekovski/114750760263976302&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^11&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;This is...starting to feel like an endgame platform for me.&amp;quot;&lt;a href=&quot;https://mastodon.social/@quillmatiq/114779406172655395&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^16&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Bonfire is really cool. And this kind of stuff is absolutely the future of the Fediverse...&amp;quot;&lt;a href=&quot;https://mastodon.social/@benpate&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^20&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;I really need to make some time to play with @bonfire . I love the idea of it but the practicalities are confusing the f out of me...&amp;quot;&lt;a href=&quot;https://toot.wales/@alexisbushnell&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^17&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;I do wish they could get a little better at communicating what exactly their project is though, it took a hot minute, reading, and also asking folks on lemmy to try and figure out kinda-sorta-vaguely what they’re building...&amp;quot;&lt;a href=&quot;https://mastodon.online/@CrisColor/115530887699974411&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^3&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;I wish them the best, but I think they really need to work on their sales pitch. It&#39;s hard to tell what it &lt;em&gt;is&lt;/em&gt;.&amp;quot;&lt;a href=&quot;https://lobste.rs/s/ggcrok/announcing_bonfire_social_1_0_release?&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^18&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;8.-yet-to-be-defined%3A-blank-space-for-new-flavours&quot;&gt;8. &lt;strong&gt;Yet-to-be-defined: blank space for new flavours&lt;/strong&gt; &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/what-is-bonfire-plural-by-design/#8.-yet-to-be-defined%3A-blank-space-for-new-flavours&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;What is Bonfire? An evolving answer. There are “empty slots” for flavours, use cases, approaches, and communities not yet imagined or built:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Open Science Network is a &#39;network&#39;, kind of like Mastodon. It is built with Bonfire... You can also create other custom &#39;networks&#39; using Bonfire? ... All of them speak ActivityPub, so you can follow individual accounts from Mastodon?... Perhaps a different tack... What if you could create your own Mastodon server, but instead brand it with your organization&#39;s identity? What if it had additional easily customizable features like [fill in] to tailor your social media network to the needs of your organization?... That&#39;s Bonfire.&amp;quot;&lt;a href=&quot;https://mastodon.online/@mastodonmigration/115535701046246821&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;^19&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Ask not what Bonfire is, ask what it could be, in your hands.&lt;/p&gt;
&lt;p&gt;Want to join us in building the future of Bonfire? &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=U5xT-y8I5EC1WnTtoMO1bA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Support and share the crowdfunding campaign&lt;/a&gt; to join install parties, workshops, co-design sessions, and more!&lt;/p&gt;
&lt;div class=&quot;flex items-center place-content-center my-6&quot;&gt;
&lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=U5xT-y8I5EC1WnTtoMO1bA&quot; class=&quot;btn-xl btn  btn-primary&quot;&gt;Support the crowdfunding&lt;/a&gt;
&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>Why Community Matters: Groups as the Next Step for the Fediverse</title>
    <link href="https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/"/>
    <updated>2025-12-05T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/</id>
    <content type="html">&lt;p&gt;Good news everyone! The &lt;a href=&quot;https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;maintenance&lt;/a&gt; goal of our &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=uMxfxdtM7kaxrjwxZLShUA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;crowdfunding campaign&lt;/a&gt; is 100% funded. Huge thanks to everyone who supported us! Our focus now moves to the &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=uMxfxdtM7kaxrjwxZLShUA#/section/what-were-building-next-4672931&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;first stretch goal&lt;/a&gt;: €25k to co‑design federated groups together with communities.&lt;/p&gt;
&lt;p&gt;Whether you are an old‑school tweeter or have moved to the fediverse, you know the status quo: follow people, read your home feed, boost, reply, and maybe gather followers, post thoughts or links and receive random replies. That can be great for conversation and discovery, but the moment you try to organise something together, like an event, project, reading circle or local initiative, you feel the limits of a feed built around individuals.&lt;/p&gt;
&lt;p&gt;Shouting at the mythical &amp;quot;global town square&amp;quot; may be fine for chatter but it’s lousy for organising. When you need specific people to see, act, and follow through, you need a group. So your community&#39;s calls to action aren&#39;t at the mercy of algorithms or noisy feeds.&lt;/p&gt;
&lt;p&gt;Federated groups in Bonfire will be spaces where communities gather to organise, care, and coordinate across the fediverse. They&#39;ll live next to your personal feed, but each group having a specific purpose: a study circle, a lab team, an activist collective, a local mutual aid crew, a project team. Inside you’ll find posts, conversations, calendars, shared resources, and more. Crucially, groups will be portable and interoperable (see &lt;a href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#faq-(frequently-asked-questions)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FAQ&lt;/a&gt;), so communities can grow and thrive without lock‑in.&lt;/p&gt;
&lt;h2 id=&quot;how-this-compares-with-groups-on-existing-platforms&quot;&gt;How this compares with groups on existing platforms &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#how-this-compares-with-groups-on-existing-platforms&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Millions of people rely on Facebook groups and other Big Tech platforms to connect and communicate, but enshitification and overnight, top‑down changes keep communities locked in and powerless.&lt;/p&gt;
&lt;p&gt;Bonfire’s federated groups restore agency: a shared home to gather and organise without the traps. Communities own their spaces, set visibility and membership on their terms, and members can join and participate from anywhere, without platform or server lock‑in.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;See the &lt;a href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#faq-(frequently-asked-questions)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FAQ&lt;/a&gt;) for details about portability, interop, or how groups compare to forums and “threadiverse” apps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;what-groups-bring-to-the-table&quot;&gt;What groups bring to the table &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#what-groups-bring-to-the-table&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Imagine a repair cafe with a calendar, community documents like code of conduct and how‑tos, a shared resource list, and discussions that carry on between meetups so planning and organising keep moving. Or a research collective that shares articles, schedules peer sessions, and keeps notes in one place. Or an activist movement that coordinates across servers without forcing everyone to “move” to a single app.&lt;/p&gt;
&lt;p&gt;Groups make these everyday needs feel natural, not improvised. They sit alongside your main feed, giving communities a home where real collaboration happens rather than getting lost in the noise.&lt;/p&gt;
&lt;h2 id=&quot;pilot-communities-and-real-use-cases&quot;&gt;Pilot communities and real use cases &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#pilot-communities-and-real-use-cases&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/groupusecases.jpg&quot; alt=&quot;group use cases&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Federated groups are not just a concept. We are co‑designing them with communities who have lived these needs and who will help design how they should work in practice. Partners like  &lt;a href=&quot;https://hci.princeton.edu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Princeton HCI&lt;/a&gt; and pilot communities make the use cases concrete. They help us design groups that work for real people, not simplistic features designed for the lowest common denominator.&lt;/p&gt;
&lt;h3 id=&quot;gifting-groups&quot;&gt;Gifting groups &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#gifting-groups&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Gifting communities (such as BuyNothing groups on Facebook) show how everyday care can flourish when neighbors build trust and simply offer, request, and match what&#39;s needed. Group admins like &lt;a href=&quot;https://bonfirenetworks.org/posts/gifting-with-integrity-federated-digital-spaces-for-mutual-aid-networks/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Adrian and Lee from Gifting with Integrity explain&lt;/a&gt; how in such groups:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;enthusiasm and passion gets passed through friends and friends-of-friends like a wave [and] is just not comparable to receiving a link from a stranger. If people know and trust the admins, this trust is also transferred into the group they create. This becomes an essential part of setting and propagating the culture. Everyone in the group is connected to everyone else, friends, family or neighbours and this affects how we interact with each other: with accountability and consideration (not like many other spaces of the internet, which are more like people who have crossed international borders to go on a bender without repercussions)...&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Having run large local groups and watched Facebook’s enshitification increasingly degrade their experience, they now want to rebuild autonomous spaces. In Bonfire, gifting groups will rebuild trust, share offers and needs, and design location‑aware features that prioritise nearby neighbors, so generosity moves sustainably through neighborhoods.&lt;/p&gt;
&lt;h3 id=&quot;mutual-aid-networks&quot;&gt;Mutual Aid Networks &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#mutual-aid-networks&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;From everyday support to emergencies, mutual aid such as &lt;a href=&quot;https://mutualaidnetwork.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;HUMANs&lt;/a&gt; coordinate people, information, food, rides, spaces, schedules, funds, and other resources locally. Today, much of this lives inside closed platforms, spreadsheets, or siloed tools that are hard to search and share.&lt;/p&gt;
&lt;p&gt;Federated groups can provide mutual aid networks a portable home across the fediverse, with location‑aware activities, resource lists, and simple matching mechanisms that prioritise local or urgent needs.&lt;/p&gt;
&lt;h3 id=&quot;knowledge-commons-%26-open-science-network&quot;&gt;Knowledge Commons &amp;amp; Open Science Network &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#knowledge-commons-%26-open-science-network&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://hcommons.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Knowledge Commons&lt;/a&gt; is a network for researchers and knowledge creators across disciplines, where they can discover open‑access scholarship and teaching materials, share work in the repository, and make interdisciplinary connections. Communities building on Bonfire&#39;s &lt;a href=&quot;https://openscience.network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science Network&lt;/a&gt; flavour, such as &lt;a href=&quot;https://sciety.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sciety&lt;/a&gt; also curate and discuss preprints, reviews, and scholarship across institutions. Until now, these groups typically live inside single sites where membership and conversations are siloed, and participation can be cumbersome.&lt;/p&gt;
&lt;p&gt;With federated groups, research and knowledge‑sharing collectives can span institutions and disciplines, keeping conversations, documents, and events portable so coordination doesn’t break when people, servers, or platforms change.&lt;/p&gt;
&lt;h3 id=&quot;civic-coordination&quot;&gt;Civic coordination &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#civic-coordination&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;As Jon Pincus, member of the &lt;a href=&quot;https://wa-privacy.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Washington Privacy Organizers&lt;/a&gt; said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;quot;Group functionality comes up in almost every single conversation I have with organizers and activists about their needs. Microblogging is great for getting the word out about actions and other kinds of public communications, but isn&#39;t useful for other important scenarios like discussing priorities and tactics or working in cross-organization coalitions.&amp;quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Activist groups and civic technologists have worked on participatory processes and community coordination for years, and need portable spaces that cross organisational boundaries, with clear roles, shared context, and the ability to keep discussions and decisions visible over time.&lt;/p&gt;
&lt;h2 id=&quot;what&#39;s-next&quot;&gt;What&#39;s next &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#what&#39;s-next&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/groups-discovery.jpg&quot; alt=&quot;Screenshot of groups discover&quot; /&gt;&lt;/p&gt;
&lt;p&gt;We’ve prototyped the core groups functionality; next we’ll build the tools communities need, co‑designing the UX with partner communities, learning from pilots and iterating in the open, to ensure groups federate across Bonfire instances and compatible fediverse apps.&lt;/p&gt;
&lt;p&gt;Our north star is maximum compatibility: we’ll align with standards and collaborate across the ecosystem, while keeping usability and real workflows front and centre so people and groups can safely interconnect across servers and platforms. For details on portability and interop, see the &lt;a href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#faq-(frequently-asked-questions)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FAQ&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id=&quot;we-need-your-help&quot;&gt;We need your help &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#we-need-your-help&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If this resonates, please &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=uMxfxdtM7kaxrjwxZLShUA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;back the groups stretch goal so we can deliver federated groups&lt;/a&gt;, bring your community into the co‑design process or join as a pilot group, and share the campaign with your networks.&lt;/p&gt;
&lt;div class=&quot;flex items-center place-content-center my-6&quot;&gt;
&lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=uMxfxdtM7kaxrjwxZLShUA&quot; class=&quot;btn-xl btn  btn-primary&quot;&gt;Support the crowdfunding&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Together we can give communities durable homes that cross server boundaries while staying open and portable, without trading away autonomy for convenience, so communities can organise, document, and coordinate in spaces they control. Let’s build the tools communities deserve, and let&#39;s make them community‑owned from the start.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;faq-(frequently-asked-questions)&quot;&gt;FAQ (Frequently Asked Questions) &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#faq-(frequently-asked-questions)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;will-this-work-with-mastodon%3F&quot;&gt;Will this work with Mastodon? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#will-this-work-with-mastodon%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;To begin with, Mastodon users should be able to interact with federated groups at a basic level. Group posts and replies will appear as standard activities to Mastodon users, and they&#39;ll be able to follow and @‑mention groups. Some specific features may not be supported in Mastodon and will appear as links back to the group’s home server.&lt;/p&gt;
&lt;h3 id=&quot;what-about-old%E2%80%91fashioned-forums%3F&quot;&gt;What about old‑fashioned forums? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#what-about-old%E2%80%91fashioned-forums%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Forums are excellent for structured, long‑form discussion. Threads nest neatly, topics stay organised, and communities build rich archives over time. They’re also often self‑hosted, governed and moderated by their community rather than at the whims of a Big Tech platform. But classic forums are typically isolated on a single site. You need to create a new account for each one and remember check for updates regularly (or endure noisy email notifications). If you move on, you lose the network, content, and reputation you built there, as forums rarely interconnect with each other or the wider social web.&lt;/p&gt;
&lt;p&gt;Groups in Bonfire are inspired by the best of forums (community-run with clear topics and findable archives) while being portable and interconnected across the fediverse from the start. A group is not only a set of threads; it also has rules (who can find it and join, who can post or participate, who can see what&#39;s posted, and codes of conduct and moderation processes), a list of members and moderators, and content such as events, shared resources, and other lightweight workflows living in one context, so organising feels natural. You have a single identity on your home server from which you can join and participate in groups on any server, rather than being stuck on a single site.&lt;/p&gt;
&lt;p&gt;We should note that &lt;a href=&quot;https://www.discourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Discourse&lt;/a&gt; modernised the forum experience with cleaner UX and solid organisational tools and has an experimental federation plugin to enable forums to exchange some activity. &lt;a href=&quot;https://nodebb.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;NodeBB&lt;/a&gt; is a similarly modern forum app that has implemented federation and integrates with the fediverse. These are important steps we support and want to interconnect with.&lt;/p&gt;
&lt;h3 id=&quot;how-this-compares-to-the-%22threadiverse%22%3F&quot;&gt;How this compares to the &amp;quot;threadiverse&amp;quot;? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#how-this-compares-to-the-%22threadiverse%22%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Reddit and the federated platforms it inspired (such as &lt;a href=&quot;https://join-lemmy.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Lemmy&lt;/a&gt;, &lt;a href=&quot;https://join.piefed.social/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PieFed&lt;/a&gt;, and &lt;a href=&quot;https://joinmbin.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mbin&lt;/a&gt;) are great for topic‑based discussion. Bonfire groups overlap with some of those ideas and aim to be compatible with the threadiverse, but with experience is more focused on collaboration than just topical threads and votes. Think less “top tech news of the day” or “comment storm on a hot post” and more “a space where an idea or project unfolds over time.” You can plan a meetup, share notes, link documents, and keep decisions visible.&lt;/p&gt;
&lt;p&gt;A key detail for longer discussions: Bonfire supports deeply nested threaded conversations with a design inspired by those apps. When a topic branches in different directions, replies can split into focused sub‑threads, making it easier to follow each path without losing the larger context. Long conversations become more readable, and side topics can mature without derailing the main thread.&lt;/p&gt;
&lt;h3 id=&quot;what-do-you-mean-by-portable-and-interoperable-groups%3F&quot;&gt;What do you mean by portable and interoperable groups? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#what-do-you-mean-by-portable-and-interoperable-groups%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Portable: Your identity stays on your home server, but you can join groups anywhere. Groups can move hosts and take their membership and existing content with them.&lt;/p&gt;
&lt;p&gt;Interoperable: A group on one server can talk to people and groups using other apps or servers. Posts, replies, events, and updates travel across the network without forcing everyone onto the same platform. And because groups sit inside the wider fediverse, a conversation can bridge to Mastodon, threadiverse apps, federated forums, or any other ActivityPub platforms without losing the group’s home or history.&lt;/p&gt;
&lt;h3 id=&quot;what-standards-will-this-use%3F&quot;&gt;What standards will this use? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#what-standards-will-this-use%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We build on ActivityPub and ActivityStreams 2.0. For group‑specific behaviour, we&#39;ll use and contribute to &lt;a href=&quot;https://helge.codeberg.page/fep/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fediverse Enhancement Proposals (FEPs)&lt;/a&gt; and participate in the &lt;a href=&quot;https://github.com/swicg/groups&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SWICG working group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We will endeavour to avoid fragmentation between different implementations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Participate in shared standards work (&lt;a href=&quot;https://helge.codeberg.page/fep/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FEPs&lt;/a&gt;, &lt;a href=&quot;https://github.com/swicg/groups&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SWICG&lt;/a&gt;, etc)&lt;/li&gt;
&lt;li&gt;Publish an interoperability guide and docs&lt;/li&gt;
&lt;li&gt;Provide reference JSON examples and test fixtures&lt;/li&gt;
&lt;li&gt;Prefer the most compatible common behaviours; add clearly defined extensions that degrade gracefully&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;how-do-moderation-and-safety-work-across-instances%3F&quot;&gt;How do moderation and safety work across instances? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/#how-do-moderation-and-safety-work-across-instances%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;All the familiar moderation tools are available: report, block, or (de)federate at the server group, or individual level. Groups also will have their own moderation team which can for example remove/hide posts, which federates to other servers to reduce duplicated labour.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire 1.0.1: Building Momentum</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/"/>
    <updated>2026-01-16T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/</id>
    <content type="html">&lt;p&gt;We&#39;re back with Bonfire 1.0.1, an update focused on making your social web experience livelier, more connected, and truly yours.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Now is a good time to update your instance or discover Bonfire firsthand at &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;campground.bonfire.cafe&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We’ve moved our main presence from indieweb.social to bonfire.cafe! Be sure to follow us at &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;@bonfire@bonfire.cafe&lt;/strong&gt;&lt;/a&gt;. Our deep thanks go to &lt;a href=&quot;https://indieweb.social/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;indieweb.social&lt;/a&gt; for being a warm and welcoming home as we found our footing in the fediverse.&lt;br /&gt;
Our old account will continue boosting posts from bonfire.cafe, so you won&#39;t miss anything during the transition.&lt;/p&gt;
&lt;h2 id=&quot;what-the-new-release-includes&quot;&gt;What the new release includes &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#what-the-new-release-includes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;new-features&quot;&gt;New features &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#new-features&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Follow hashtags&lt;/strong&gt;: Discover and join conversations that matter to you, bringing relevant posts into your feed without needing to follow specific people. &lt;em&gt;(Note: You&#39;ll see tagged posts known to your instance, for example, if someone on your server follows the author or boosted the post.)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scheduled posts&lt;/strong&gt;: Plan ahead and have your posts published at just the right moment for your community.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Language &amp;amp; translation&lt;/strong&gt;: Choose your preferred language(s), set a language for your posts, and translate content from other languages. &lt;em&gt;(Translation currently works in some Chromium-based browsers, using a local translation engine. Support for other browsers, using LibreTranslate or DeepL, is coming soon.)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replies in feeds&lt;/strong&gt;: Choose what to display above a reply in your feeds: the direct parent post being replied to, the original post that started the thread, or just a label indicating that it is a reply. Set your preference in settings.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Polls&lt;/strong&gt; &lt;em&gt;(work in progress)&lt;/em&gt;: Ask questions and gather input from your community. You can now view and vote on remote polls, creating them locally is coming soon.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mastodon-compatible API&lt;/strong&gt; &lt;em&gt;(work in progress)&lt;/em&gt;: This will make it possible to interact with Bonfire through dozens of fediverse clients available on mobile and desktop. We&#39;re gradually adding support for more parts of the API and will be testing it with different third-party clients (please report any issues if you test it with your favourite app!).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ActivityPub client-to-server (C2S) API&lt;/strong&gt; &lt;em&gt;(work in progress)&lt;/em&gt;: Opening new possibilities for how you can interact with fediverse through third-party apps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Widgets&lt;/strong&gt;: Configure your homepage to display widgets highlighting what interests you most, rather than being dropped straight into a feed of activities. Head to &amp;quot;configure your dashboard&amp;quot; in settings to choose your widgets and switch between a composable widget layout or the standard &amp;quot;my following&amp;quot; feed. Reorder them by dragging and dropping directly on the dashboard (tip: you can also do that with navigation menu items on the left or widgets on the right of most screens).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;widgets&quot;&gt;Widgets &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#widgets&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/widgets.jpg&quot; /&gt;
&lt;p&gt;Currently available widgets include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Trending links&lt;/strong&gt;: Discover the latest news and what&#39;s generating conversation across your instance.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recent articles&lt;/strong&gt;: Discover long-form content and blog posts from across your network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suggested profiles&lt;/strong&gt;: Instance admins can curate recommendations to help newcomers find interesting people to follow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We’d love your feedback on which widgets you’d find most useful. &lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues/1758&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Let us know&lt;/a&gt; what you’d like to see on your dashboard. What would make Bonfire feel even more like home?&lt;/p&gt;
&lt;h3 id=&quot;performance&quot;&gt;Performance &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#performance&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prioritised federation queues&lt;/strong&gt;: We now prioritise the processing of mentions and DMs over regular posts, so direct conversations arrive without delay.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Database improvements&lt;/strong&gt;: Added more indexes and improved queries for snappier responses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server-to-server federation&lt;/strong&gt;: Various optimisations for smoother communication between instances.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ui-and-ux-enhancements&quot;&gt;UI and UX enhancements &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#ui-and-ux-enhancements&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We&#39;ve put work into smoothing out the interface and improving design patterns across the app: small touches that add up to a better experience.&lt;/p&gt;
&lt;h3 id=&quot;bug-fixes&quot;&gt;Bug fixes &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#bug-fixes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This release squashes bugs around federation behaviour, threading, user interface, composer states, and more. See the &lt;a href=&quot;https://docs.bonfirenetworks.org/changelog.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;full changelog&lt;/a&gt; for the complete list.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update your instance or try Bonfire at &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;campground.bonfire.cafe&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;crowdfunding-update&quot;&gt;Crowdfunding update &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#crowdfunding-update&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;img src=&quot;https://bonfirenetworks.org/img/groupusecases.jpg&quot; /&gt;
&lt;p&gt;As you may know, we ran a &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=c5aSQvu800edVSDdNwzumA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;crowdfunding campaign&lt;/a&gt; in December. We raised €32,467, surpassing our primary goal of €30,000 for &lt;a href=&quot;https://bonfirenetworks.org/posts/matters-of-care-why-maintenance-comes-first/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;maintenance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We’re deeply grateful to everyone who chipped in, your support genuinely moved us. Seeing so many people rally behind Bonfire, all through grassroots word-of-mouth, was both encouraging and humbling. We&#39;re energised by seeing this vision of a more caring, community-based social web resonate so widely. Thank you for believing in what we’re building, together.&lt;/p&gt;
&lt;p&gt;We&#39;re now working on fulfilling rewards, so if you backed the campaign, you&#39;ll hear from us soon!&lt;/p&gt;
&lt;p&gt;And if you didn&#39;t get a chance to pledge in December, or want to help us level up, you&#39;re in luck: &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=c5aSQvu800edVSDdNwzumA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;the campaign is &lt;strong&gt;now open for a limited time&lt;/strong&gt; for late pledges&lt;/a&gt; for anyone who wants to boost our progress toward the first stretch goal of €25,000 for &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=c5aSQvu800edVSDdNwzumA#/section/what-were-building-next-4672931&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;federated groups&lt;/strong&gt;&lt;/a&gt; (for a total of €55,000), which are a foundational feature to empower communities across the fediverse and make Bonfire even stronger for community organising and collaboration.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Read our blog post about &lt;a href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;why groups matter as the next step for the fediverse&lt;/a&gt; and &lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=c5aSQvu800edVSDdNwzumA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;contribute to building groups in Bonfire&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;flex items-center place-content-center my-6&quot;&gt;
&lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=U5xT-y8I5EC1WnTtoMO1bA&quot; class=&quot;btn-xl btn  btn-primary&quot;&gt;Support the crowdfunding&lt;/a&gt;
&lt;/div&gt;
&lt;h2 id=&quot;what&#39;s-next&quot;&gt;What&#39;s next &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#what&#39;s-next&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;We’re already hard at work on the next release. We’re excited to make it even easier to organise, share, and stay safe together, with expanded API compatibility to open Bonfire to more third-party apps, along with poll creation, new widgets, and the usual bug hunting and interoperability improvements.&lt;/p&gt;
&lt;p&gt;We&#39;ve also started work on end-to-end encrypted messaging as part of the &lt;a href=&quot;https://socialwebfoundation.org/2025/12/19/implementing-encrypted-messaging-over-activitypub/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Social Web Foundation&#39;s project to bring interoperable secure messaging to the fediverse&lt;/a&gt;, a meaningful step toward private, secure communication on the open social web. We&#39;ll be testing this over the next few months and releasing it when a secure and interoperable implementation is ready.&lt;/p&gt;
&lt;div class=&quot;flex items-center place-content-center my-6&quot;&gt;
&lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=U5xT-y8I5EC1WnTtoMO1bA&quot; class=&quot;btn-xl btn  btn-primary&quot;&gt;Support the crowdfunding&lt;/a&gt;
&lt;/div&gt;
&lt;h2 id=&quot;from-the-community&quot;&gt;From the community &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#from-the-community&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://btfree.social/@ozoned&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Ozoned&lt;/a&gt; recorded a &lt;a href=&quot;https://tubefree.org/w/3pATRDsqiBu99aVUwBTvUf&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;video walk-through&lt;/a&gt; of setting up a Bonfire instance from scratch, a great resource if you&#39;re thinking about self-hosting. Thanks for your contribution, Ozoned!&lt;/p&gt;
&lt;p&gt;Meanwhile, The Fulcrum wrote a &lt;a href=&quot;https://www.thefulcrum.dev/grab-a-seat-at-our-bonfire-the-revolutionary-community-platform/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;thoughtful article exploring Bonfire&lt;/a&gt; and its potential. We&#39;re eager to see how they&#39;ll experiment with the framework and what emerges from their work.&lt;/p&gt;
&lt;p&gt;We&#39;re also working with &lt;a href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/newsmastfoundation.org&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Newsmast Foundation&lt;/a&gt; to setup a Bonfire server for an existing community, stay tuned!&lt;/p&gt;
&lt;p&gt;Have you made something with Bonfire or written about it? We&#39;d love to hear from you and feature community projects in future updates.&lt;/p&gt;
&lt;h2 id=&quot;see-you-at-fosdem%3F&quot;&gt;See you at FOSDEM? &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-1-building-momentum/#see-you-at-fosdem%3F&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;On January 30th and February 1st, the Bonfire team will be at &lt;a href=&quot;https://fosdem.org/2026/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;FOSDEM&lt;/a&gt;, a free software event in Brussels that brings together more than 8000 people every year. We&#39;re running two sessions: one in the Social Web track titled &lt;a href=&quot;https://fosdem.org/2026/schedule/event/3QHALR-bonfire_building_modular_consentful_and_federated_social_networks/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Building Modular, Consentful, and Federated Social Networks&lt;/a&gt; and another in the Decentralised Communication track: &lt;a href=&quot;https://fosdem.org/2026/schedule/event/LSUYXG-bonfire_modular_communication_tools_on_the_open_social_web/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Modular Communication Tools on the Open Social Web&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We’ll also have some exciting announcements about new collaborations and projects, stay tuned!&lt;/p&gt;
&lt;p&gt;Besides the talks, we’re eager to catch up with friends old and new from across the open source and fediverse communities. If you’re attending, we hope you’ll find us and say hi! We’d love to connect, answer your questions, and share ideas, whether you’re a hacker, organiser, or just curious about the fediverse.&lt;/p&gt;
&lt;p&gt;Thank you for making Bonfire what it is. Every message, suggestion, and act of cooperation moves us closer to a more caring fediverse. Can’t wait to see what we grow together!&lt;/p&gt;
&lt;div class=&quot;flex items-center place-content-center my-6&quot;&gt;
&lt;a href=&quot;https://www.indiegogo.com/projects/bonfire/community?refcode=U5xT-y8I5EC1WnTtoMO1bA&quot; class=&quot;btn-xl btn  btn-primary&quot;&gt;Support the crowdfunding&lt;/a&gt;
&lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire 1.0.2: Shaping Your Space</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/"/>
    <updated>2026-03-17T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/</id>
    <content type="html">&lt;p&gt;We just released Bonfire 1.0.2, an update focused on giving you a more stable and reliable experience.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Now is a good time to update your instance or discover Bonfire firsthand at &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;campground.bonfire.cafe&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We&#39;re also heads-down working with several communities who are setting up their own Bonfire servers. Plus updates on end to end encryption and federated groups. More below.&lt;/p&gt;
&lt;h2 id=&quot;what&#39;s-new-in-bonfire-1.0.2&quot;&gt;What&#39;s new in Bonfire 1.0.2 &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#what&#39;s-new-in-bonfire-1.0.2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;keyword-filtering&quot;&gt;Keyword filtering &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#keyword-filtering&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;You can now filter out posts containing specific words, phrases, or hashtags. Useful for tuning out topics you&#39;d rather not see. Instance admins can set filters that apply across the whole instance, and per-user filtering is coming in a future release.&lt;/p&gt;
&lt;h3 id=&quot;translate-posts-with-one-click&quot;&gt;Translate posts with one click &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#translate-posts-with-one-click&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A translate button now appears under posts, making it easy to read content written in other languages. Translation works in Chrome using built-in local translation system; for other browsers instance admins or individual users can also set up LibreTranslate or DeepL APIs, configurable in translation extension settings.&lt;/p&gt;
&lt;h3 id=&quot;feed-markers&quot;&gt;Feed markers &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#feed-markers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Your place in the feed is now saved when you navigate away, so you can pick up exactly where you left off, without scrolling back through posts you&#39;ve already seen.&lt;/p&gt;
&lt;h3 id=&quot;new-dashboard-widgets&quot;&gt;New dashboard widgets &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#new-dashboard-widgets&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Weather, instance stats, and user summary are now available for your customisable dashboard. Bonfire&#39;s homepage is moving toward a widget-based layout that goes well beyond the classic microblogging feed, to become a space you can genuinely shape around what matters to you.&lt;/p&gt;
&lt;p&gt;Currently available widgets include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Highlighted posts&lt;/strong&gt;: Pinned or featured content from your community&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Weather&lt;/strong&gt;: Local conditions at a glance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Instance info&lt;/strong&gt;: An overview of your instance&#39;s key defaults: federation behaviour, open vs invite-only registration, and known servers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;User summary&lt;/strong&gt;: Surfaces your account info and highlights safety defaults at a glance, including discoverability and search indexing settings&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recent articles&lt;/strong&gt;: Discover long-form content and blog posts from across your network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Suggested profiles&lt;/strong&gt;: Instance admins can curate recommendations to help newcomers find interesting people to follow.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/bonfire-networks/bonfire-app/issues/1758&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;We&#39;d love your feedback on what kind of widgets you&#39;d find most useful&lt;/a&gt;. What would make Bonfire feel even more like home?&lt;/p&gt;
&lt;h3 id=&quot;better-mobile-experience-and-keyboard-shortcuts&quot;&gt;Better mobile experience and keyboard shortcuts &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#better-mobile-experience-and-keyboard-shortcuts&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;The composer is smoother on mobile, and you can now press &lt;code&gt;Cmd+Enter&lt;/code&gt; (or &lt;code&gt;Ctrl+Enter&lt;/code&gt; on Windows/Linux) to publish a post without reaching for the button. Keyboard shortcuts for opening the composer (&lt;code&gt;n&lt;/code&gt;) and minimising it (&lt;code&gt;-&lt;/code&gt;) are also available.&lt;/p&gt;
&lt;h3 id=&quot;stronger-federation&quot;&gt;Stronger federation &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#stronger-federation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;We added support for RFC 9421 HTTP Message Signatures, a newer and more robust standard for verifying messages between instances. This improves trust across the fediverse by making it harder to spoof messages between servers, and was added in collaboration with the broader ActivityPub community (big thanks to Hong Minhee from &lt;a href=&quot;https://fedify.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Fedify&lt;/a&gt;!)&lt;/p&gt;
&lt;h3 id=&quot;bug-fixes&quot;&gt;Bug fixes &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#bug-fixes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;This release squashes a long list of bugs around federation behaviour, threading, user interface, polls, content warnings, and more. See the &lt;a href=&quot;https://docs.bonfirenetworks.org/changelog.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;full changelog&lt;/a&gt; for the complete list.&lt;/p&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update your instance or try Bonfire at &lt;a href=&quot;https://campground.bonfire.cafe/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;campground.bonfire.cafe&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;ongoing-projects&quot;&gt;Ongoing projects &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#ongoing-projects&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Several communities are actively working toward launching their own Bonfire instances, and we&#39;re supporting them through setup, co-design, and customisation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jacobin.de/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;Jacobin DE&lt;/strong&gt;&lt;/a&gt; chose Bonfire as their community space for readers and contributors, putting community-governed infrastructure in the hands of Germany&#39;s most prominent independent left media outlets, tightly connected with their publication. In collaboration with &lt;a href=&quot;https://newsmastfoundation.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Newsmast Foundation&lt;/a&gt; for the mobile app and &lt;a href=&quot;https://klasse-methode.it/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Klasse &amp;amp; Methode&lt;/a&gt; for hosting.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.totnespulse.co.uk/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;Totnes Pulse&lt;/strong&gt;&lt;/a&gt;: a local app for Totnes, a pioneering transition town in Devon, UK, experimenting with Bonfire as local social infrastructure for community events and discussions. In collaboration with &lt;a href=&quot;https://newsmastfoundation.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Newsmast Foundation&lt;/a&gt; for mobile apps and &lt;a href=&quot;https://lauti.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Lauti&lt;/a&gt; for events publishing.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bida.im/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;strong&gt;Bida&lt;/strong&gt;&lt;/a&gt; and &lt;a href=&quot;https://nobigtech.social/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;nobigtech.social&lt;/a&gt;: An Italian collective and fediverse pioneer, they&#39;ve set up a bonfire instance for their community with the goal of codesigning together new features focused for collectives and grassroots organisations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;University of Warwick&#39;s &lt;a href=&quot;https://warwick.ac.uk/fac/cross_fac/cim/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Centre for Interdisciplinary Methodologies&lt;/a&gt;&lt;/strong&gt;: A higher education institution joining in co-designing and piloting Bonfire&#39;s &lt;a href=&quot;https://openscience.network/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Open Science Network&lt;/a&gt; for academic community building and open knowledge exchange.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Princeton University&#39;s &lt;a href=&quot;https://hci.princeton.edu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Human-Computer Interaction&lt;/a&gt;&lt;/strong&gt;: Collaborating on protocol-based UX research into community-governed social platforms, with a project to help communities better define and communicate their governance structure and rules, like &amp;quot;nutrition labels&amp;quot; for online communities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Federated groups&lt;/strong&gt; are taking shape. Proper groups are a &lt;a href=&quot;https://bonfirenetworks.org/posts/why-community-matters-groups-as-the-next-step-for-the-fediverse/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;critical missing piece of the fediverse&lt;/a&gt;, and although the crowdfunding stretch goal for groups didn&#39;t quite reach its target, our collaboration with Jacobin DE (and potentially other communities down the line) is giving us the momentum to push forward. We&#39;re currently working together to co-design and improve the UX of our groups prototypes. In parallel, we&#39;re collaborating with other ActivityPub developers through the &lt;a href=&quot;https://github.com/swicg/groups/issues&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Groups task force of the W3C Social Web Incubator Community Group&lt;/a&gt; to ensure federated groups will be interoperable across the fediverse. If your community would benefit from federated groups and you&#39;d like to help co-design and co-fund this work, please &lt;a href=&quot;mailto:team@bonfire.cafe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;get in touch&lt;/a&gt;, the more communities involved, the better the result!&lt;/li&gt;
&lt;li&gt;We&#39;re also making progress on &lt;strong&gt;end-to-end encrypted messaging&lt;/strong&gt; as part of the project initiated by the &lt;a href=&quot;https://socialwebfoundation.org/2025/12/19/implementing-encrypted-messaging-over-activitypub/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Social Web Foundation&lt;/a&gt; to bring interoperable secure messaging using the MLS standard to the fediverse. We&#39;ll be testing this over the coming months and will release it when a secure and interoperable implementation is ready.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;crowdfunding-update&quot;&gt;Crowdfunding update &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#crowdfunding-update&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Thanks again to everyone who backed us, your contributions will go a long way in making Bonfire more usable and stable for everyone!&lt;/p&gt;
&lt;p&gt;We&#39;re now preparing to fulfil rewards. If you selected a physical reward (printed or screenprinted artwork), please &lt;a href=&quot;https://www.indiegogo.com/en/users/pledgesandorders&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;make sure to check your shipping address&lt;/a&gt; on Indiegogo so we can get it to you. You&#39;ll hear from us soon either way.&lt;/p&gt;
&lt;h2 id=&quot;thank-you&quot;&gt;Thank you &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-2-shaping-your-space/#thank-you&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every message, bug report, translation, and contribution moves us closer to the fediverse we want to inhabit. Thank you for being part of it. We can&#39;t wait to see what we grow together.&lt;/p&gt;
&lt;p&gt;Follow us at &lt;a href=&quot;https://bonfire.cafe/@Bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;@bonfire@bonfire.cafe&lt;/a&gt; · Email: team@bonfire.cafe · &lt;a href=&quot;https://docs.bonfirenetworks.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Docs&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Bonfire 1.0.3: Stability, Clarity, and Federated Publishing</title>
    <link href="https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/"/>
    <updated>2026-05-15T00:00:00Z</updated>
    <id>https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/</id>
    <content type="html">&lt;p&gt;Since the 1.0 release of Bonfire Social, we&#39;ve been heads-down listening to our our pilot communities, beta testers, and co-design partners. Version 1.0.3 is the result: a release focused on stability and polish, which fixes a wide range of bugs and brings meaningful usability improvements, especially around feeds, boundaries, and more advanced features. It also ships a set of new capabilities born from our ongoing collaboration with Jacobin DE.&lt;/p&gt;
&lt;h2 id=&quot;stability-first&quot;&gt;Stability first &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/#stability-first&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This release addresses dozens of issues reported by communities actively using Bonfire day to day. The progressive web app experience is smoother on mobile. Federation is more reliable. Many reported bugs have been fixed and UX improvements have made based on community feedback: tooltips, focus states, icon labels, layout glitches, and accessibility issues across the board.&lt;/p&gt;
&lt;h2 id=&quot;making-power-feel-approachable&quot;&gt;Making power feel approachable &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/#making-power-feel-approachable&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This release gave particular design attention to one of Bonfire&#39;s most powerful (and sometimes daunting) areas: boundaries and post permissions.&lt;/p&gt;
&lt;p&gt;Those features are an example of where Bonfire&#39;s depth and breadth of options can feel overwhelming at first: a lot of choices, many possible combinations, and real user empowerment that deserves to be surfaced carefully.&lt;/p&gt;
&lt;p&gt;We&#39;ve been working on a layered design pattern that we&#39;re calling &lt;em&gt;calm empowerment&lt;/em&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;a handful of simple defaults that cover most users;&lt;/li&gt;
&lt;li&gt;a middle layer of curated overrides for people who want some control without being overwhelmed by all possible options;&lt;/li&gt;
&lt;li&gt;finally, a full advanced matrix of options behind an explicit &amp;quot;expand&amp;quot; gesture for power users.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;
&lt;p&gt;For boundaries, this means the screen now leads with the presets (Public, Local, Mentions, Follows), followed by a small set of controls for the most common adjustments: &amp;quot;allow replies?&amp;quot;, &amp;quot;allow quote posts?&amp;quot;, each of which works across all relevant audience circles at once, without requiring you to understand the full permission matrix. All options are still available, but exposed only after a conscious choice, for the cases that genuinely need it.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/calmempowerment.png&quot; alt=&quot;Screenshot of Bonfire&#39;s boundaries settings, showing layered presets and expandable controls&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Feed filtering is next on the list, as something we can simplify while retaining all its power. More broadly, calm empowerment is becoming a guiding pattern across Bonfire extensions. We&#39;re experimenting with it for two upcoming beta features: group creation, where simple defaults get you started but the full range of visibility and membership controls is there when you need it; and poll creation, where the surface is as simple as single or multiple choice, but opens up into proposal phases, consensus building, ranked choice voting, and more.&lt;/p&gt;
&lt;p&gt;The goal is simplicity by default, while being endlessly configurable for those who want it, without making anyone feel like they have to decipher or fight the interface. We&#39;re working on applying this pattern consistently across Bonfire, and plan to write more about the thinking behind it: both as a design reference and as a broader conversation about what it means to feel genuinely empowered by a social network rather than managed by one.&lt;/p&gt;
&lt;h2 id=&quot;new-dashboard-widgets&quot;&gt;New dashboard widgets &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/#new-dashboard-widgets&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/widgets.png&quot; alt=&quot;Screenshot of Bonfire&#39;s configurable dashboard showing new community widgets&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The dashboard (what you see when signing in, instead of being thrown straight into a feed) is now significantly more useful. New configurable widgets focus on community building and participation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spotlight&lt;/strong&gt;: posts pinned by instance moderators surfaced prominently for all members&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Getting started&lt;/strong&gt;: an onboarding widget to help new users find their feet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Polls closing soon&lt;/strong&gt;: keeps active decisions visible at a glance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Top discussions&lt;/strong&gt;: the 3 most-replied local posts from the last few days, for a pulse on what&#39;s alive in your community&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;federated-discussions%2C-anywhere-on-the-web&quot;&gt;Federated discussions, anywhere on the web &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/#federated-discussions%2C-anywhere-on-the-web&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;img width=&quot;1570&quot; height=&quot;975&quot; alt=&quot;Screenshots of Bonfire&#39;s embeddable comments widget shown under a recipe and a governance proposal&quot; src=&quot;https://bonfirenetworks.org/img/comments.png&quot; /&gt;
&lt;p&gt;Paste a script into any web page (a blog article, a portfolio, a recipe, a funding proposal, a research draft) and it instantly gets a federated comment thread tied to that URL. The page becomes a post on your Bonfire profile, and people can respond from anywhere on the fediverse, and even from Bluesky and the ATmosphere thanks to bridging via &lt;a href=&quot;https://fed.brid.gy/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BridgyFed&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bonfire-powered comments embedded on your web page&lt;/strong&gt; means nested discussion threads that are boostable, upvotable, and most importantly, federated. Readers can engage from within the webpage, and the conversation also lives on the linked Bonfire instance, where it can be moderated like any other content and followed or replied to from across the fediverse.&lt;/p&gt;
&lt;p&gt;We&#39;re continuing to refine the embeddable comments widget over the coming weeks as part of our collaboration with &lt;a href=&quot;https://www.jacobin.de/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Jacobin DE&lt;/a&gt;. More soon.&lt;/p&gt;
&lt;h2 id=&quot;community-publishing-with-ghost&quot;&gt;Community publishing with Ghost &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/#community-publishing-with-ghost&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Working with Jacobin DE also pushed forward a set of features we&#39;re genuinely excited about for any community that publishes content alongside social interaction: a deep integration between Bonfire and &lt;a href=&quot;https://ghost.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Ghost&lt;/a&gt;, the open source publishing platform.&lt;/p&gt;
&lt;p&gt;We demoed what this looks like in practice at FediForum: &lt;a href=&quot;https://spectra.video/w/hV9wzGzsXvNjgXtVg3uS2i&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;watch the recording here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Single sign-on.&lt;/strong&gt; Members sign in on Ghost and Bonfire using the same email address, and move between the two without friction.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gated login and membership sync.&lt;/strong&gt; Ghost membership tiers sync directly with Bonfire circles and groups. New members land in the right spaces automatically. If a user tries to sign in but isn&#39;t yet a member on Ghost, they receive a registration link.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article import.&lt;/strong&gt; Ghost articles are imported into Bonfire automatically, attached to the author&#39;s profile and placed in the relevant groups and topics, with full content, images, and captions included, ready to be discussed across the fediverse. Visibility is set automatically based on the Ghost tier (public, members-only, or paid), so each piece reaches the right audience without manual intervention.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;But doesn&#39;t Ghost already federate?&lt;/strong&gt; Ghost has built-in federation, and WordPress has a plugin for it, broadcasting articles into the fediverse and pulling replies back as comments. That&#39;s a great start. But Jacobin&#39;s needs pushed us further: a structured community space where your content is an invitation for people to go from audience to participants, with groups, topics, polls, moderation and governance tools, etc. So each tool focuses on what it does best.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This isn&#39;t a Jacobin-specific feature set, it&#39;s a reusable foundation for any publisher or community who wants a fully-integrated federated social space, whether that&#39;s a newsletter, a media outlet, or a membership organisation. Publishers like &lt;a href=&quot;https://digiday.com/media/why-publishers-are-preparing-to-federate-their-sites/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;The Verge and 404 Media&lt;/a&gt;, the New York Times, and &lt;a href=&quot;https://deadsuperhero.com/integrating-a-news-publication-into-the-fediverse/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;others&lt;/a&gt; are all exploring deeper social integration into their articles.&lt;/p&gt;
&lt;p&gt;If you&#39;re running Ghost and thinking about where your community conversation should live, we&#39;d love to talk. The same approach could be extended to other publishing tools: WordPress, Drupal, or whatever your community already uses.&lt;/p&gt;
&lt;p&gt;More broadly, this reflects something we care about in how Bonfire relates to other tools: we&#39;re not trying to replace your CMS, your event platform, or your preferred workflow. Bonfire can publish articles natively, but if Ghost already meets your publishing needs, or you organise events with another tool, the goal is integration: bringing the federated social layer to where people already are, rather than asking them to start over. The same thinking is behind our &lt;a href=&quot;https://lauti.org/blog/lauti-updates-2026/#cooperation-with-bonfire&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;LAUTI integration for events&lt;/a&gt;. Keep the tools that work, and connect them to the open social web.&lt;/p&gt;
&lt;h2 id=&quot;tags.pub-integration&quot;&gt;tags.pub integration &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/#tags.pub-integration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bonfire now can integrate with &lt;a href=&quot;https://tags.pub/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;tags.pub&lt;/a&gt;, making it easier to use hashtags to discover and participate in conversations across different servers. Thanks to Papiris and Ozoned for the testing and feedback that made this happen.&lt;/p&gt;
&lt;h2 id=&quot;first-translation-complete&quot;&gt;First translation complete &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/#first-translation-complete&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Thanks to the Jacobin DE team, Bonfire now has a complete German translation. If your community is German-speaking, it&#39;s a good time to give Bonfire a try.&lt;/p&gt;
&lt;p&gt;Contributions to other languages are always welcome, &lt;a href=&quot;https://app.transifex.com/bonfire/bonfire/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;join the effort&lt;/a&gt; to contribute to an existing language or start a new one.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://bonfirenetworks.org/img/transl.png&quot; alt=&quot;Screenshot of Bonfire&#39;s translation progress, showing languages ranked by percentage completed&quot; /&gt;&lt;/p&gt;
&lt;h2 id=&quot;also-in-this-release&quot;&gt;Also in this release &lt;a class=&quot;direct-link&quot; href=&quot;https://bonfirenetworks.org/posts/bonfire-1-0-3-stability-clarity-and-federated-publishing/#also-in-this-release&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Modular community rules (the first step in bringing research and co-design with Princeton HCI students and researchers into Bonfire), per-user and per-instance keyword filtering, smarter nested thread sorting that surfaces the most active discussion branches, and the usual round of performance improvements and dependency updates.&lt;/p&gt;
&lt;p&gt;Read the &lt;a href=&quot;https://docs.bonfirenetworks.org/changelog.html#bonfire-social-1-0-3-2026-05-14&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;full changelog&lt;/a&gt; for details.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Get involved.&lt;/strong&gt; If you&#39;re running a Bonfire instance, now is a good time to upgrade. If you&#39;ve been curious about Bonfire for your community or organisation, &lt;a href=&quot;mailto:team@bonfire.cafe&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;get in touch&lt;/a&gt;, we&#39;d love to hear what you&#39;re building.&lt;/p&gt;
&lt;p&gt;— Ivan &amp;amp; Mayel&lt;/p&gt;
</content>
  </entry>
</feed>