@triptych great 😊 any question let us know!
Bonfire
Public Interest Social Networks
Bonfire is built by communities, for communities. Rooted in autonomy, mutual care, and collective power. Co-create your tools, reclaim your data, and resist manipulation by shaping your own federated digital spaces.
Previously at @bonfire@indieweb.social
To implement federation, all you need is to declare in your context what Activity and/or Object types you want to handle, eg for posts:
```
def federation_module,
do: [
"Note",
{"Create", "Note"},
{"Create", "Article"}
]
```
and implement these two functions:
- for outgoing: `ap_publish_activity(subject_struct, verb, object_struct)`
- for incoming: `ap_receive_activity(subject_struct, activity_json, object_json)`
“LiveHandlers” are simply a way to put a bunch of event handlers (handle_event, but also handle_params, etc) in a single module where they can be reused by multiple LiveViews and LiveComponents.
Examples: https://github.com/bonfire-networks/bonfire_ui_social/tree/main/lib/live_handlers
2/2
- Schema: https://github.com/bonfire-networks/bonfire_pages/blob/main/lib/pages/page.ex
- Context: https://github.com/bonfire-networks/bonfire_pages/blob/main/lib/pages/pages.ex
- Create a page “act” (which along with “epics” is an optional way to define pipes that pass data between different extensions and modules in a particular order): https://github.com/bonfire-networks/bonfire_pages/blob/main/lib/pages/page.create.ex
- “Epic” definition (which reuses many “acts” from other extensions) https://github.com/bonfire-networks/bonfire_spark/blob/main/lib/runtime_config.ex#L120
A lot of choices about how to implement things depend of your data schemas, and how closely you want/can integrate with existing functionality. Eg. you could reuse PostContent if your data has a title/name, summary, and body. This is what we do for the WIP pages extensions: which means not much code needs to be rewritten
1/2
Example integration with the composer:
- form inputs: https://github.com/bonfire-networks/bonfire_pages/blob/main/lib/web/components/smart_inputs/create_page_live.ex & https://github.com/bonfire-networks/bonfire_pages/blob/main/lib/web/components/smart_inputs/create_page_live.sface
- include it in config: https://github.com/bonfire-networks/bonfire-app/blob/main/flavours/classic/config/bonfire_ui.exs#L118
- Incoming & outgoing federation (i.e. translation between ActivityStreams schema and your internal schema, the rest is handled out of the box)
- Integrate Boundaries
We don’t have guides written yet for many of these, but happy to point you to the relevant code (both the places to integrate with, and example implementations), some of which is documented.
2/2
@triptych yeah that just gets you a skeleton, then you’ll probably need at least:
- DB schema(s): https://doc.bonfirenetworks.org/database.html
- Backend logic modules (contexts)
- Integration with the composer (smart input)
- Publish activities to feeds
- “Activity previews” to display your custom activity and/or object types in feeds
- Custom UIs using https://surface-ui.org https://www.phoenixframework.org https://daisyui.com https://tailwindcss.com
- LiveHandlers as the glue between your backend logic and UI
1/2
@kyva hola, nuestros otros fondos vinieron de https://nlnet.nl/ y https://culturalfoundation.eu/stories/culture-of-solidarity-fund/
Learn how the Bonfire framework empowers communities to (re)design their digital spaces from the ground up: https://bonfirenetworks.org/design
@triptych feel free to ask when it comes time for you to grok those (or any other components), it may even be a good exercise for us to draft the missing docs 😄
@triptych That's definitely something we need to write as we near 1.0, for now I can recommend this repo to use as a base for a new extension: https://github.com/bonfire-networks/bonfire_extension_template (we hope to create generators so there's less manual operations involved for this in future)
Also the guides which you can find in the sidebar of the docs are a must, such as: https://doc.bonfirenetworks.org/database.html
Notable things still missing from those are:
- how to add activities to the feed
- plugging into federation
- setting boundaries
@antanicus la nuova stagione di un medico in famiglia promette bene 🔥 😂
@enverdemichelis
Exciting to follow the work done by the UXDI team, who is using Bonfire as a case study to research and prototype a governance module for federated communities. Big thanks to @mavita and the rest of the team 😊 Thanks @edumerco for pushing us to participate, must say we've been selected by an amazing team!
#CommunityGovernance #UXDI
Next November 10-12 in Naples there will be the 2nd edition of the Reclaim The Tech festival! We're thrilled to contribute in a laboratory exploring "Participatory, Inclusive, and Community-centered Technologies as alternatives to capitalist platform".
Kudos to the great community bringing all of this to life! See you in Naples - Ci vediamo a Napoli! 🎉
Check out the agenda: https://reclaimthetech.it/programma-lab/
Thank you newpublic for featuring us in your Digital Spaces Directory (https://newpublic.org/directory). Thrilled to see many fellow #Fediverse projects and friends included as well! 🔥
@samliebeskind