Decentralized Grassroots Campaign Management for the Fediverse
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Arnold Schrijver 95327a7ed4 Rename Host stakeholder to Tenant (aligns with Groundwork) 8 months ago
assets Add logo images 1 year ago
concepts Update documentation, add feature gherkin (test) 10 months ago
datamodels Update documentation 10 months ago
functionality Rename Host stakeholder to Tenant (aligns with Groundwork) 8 months ago
.gitignore Update project organization 9 months ago Elaborate project information 10 months ago
LICENSE Initial commit 1 year ago Rename Host stakeholder to Tenant (aligns with Groundwork) 8 months ago

This is outreach. A federated campaign management service for grassroots activism.



Outreach allows anyone to organize Outreach Communities on the Fediverse and crowdsource PR Campaigns targeted to the public on other media and platforms outside of the Fediverse. Every community member is a co-campaigner and can help prepare and improve campaigns before they are launched. After launch participating members invoke their own social media to help spread the message.

In this repository we'll elaborate the domain, functionality and architecture designs. As we do so we lay the basis for techdocs and end-user documentation by following Readme Driven Development.

Join the team

We are looking for Designers and Coders to contribute to the project. Do you join the team? Besides being part of a cool project, we want you to benefit from your participation.

Find out how you can benefit from contributing (click to expand)

You know best what advantages you get from collaborating, but here are some to inspire you:

  • Acquire UX, UI and graphics design skills, build your portfolio.
  • Practice your coding skills (Golang, React, JS, HTML/CSS and more).
  • Practice your project management skills. Learn agile development. Learn community-building skills.
  • Learn together with others how to set up and run an (open source) software project.
  • Practice your skills as a technical writer in both techdocs and end-user documentation.
  • Evaluate humane tech best-practices and apply them in practice. Become an expert.
  • Build your professional network through all the people you meet (stakeholders, coworkers, etc.).
  • Become a campaigner and advocate for the project and use it to gain social media influence.
  • Create blogs and articles about project-related subjects, which we'll promote together.
  • Create your own FOSS libraries to integrate with or in parallel with other projects.
  • Use Outreach as early adopter to promote your own community/project/organization.
  • Have a say on the direction that Outreach develops to. Influence the project Roadmap.
  • Learn all about the Free Software Movement and Fediverse cultures.
  • Mention your involvement on your Resume and on LinkedIn.
  • Receive LinkedIn skill endorsements, and even Recommendations.


Can you help with UX design, elaborating requirements, architecture concepts? There are some exciting challenges. We value humane technology, privacy, security, and ethics in our design. Practice your skills.


The backend will be implemented in Golang using Go-Fed, frontend in Preact (probably), JS/SCSS/HTML. We'll follow domain-driven design (DDD), command-query responsiblity separation (CQRS), and clean architecture. Come code with us.

Project status

Next steps

  • Requirements elicitation with stakeholders.
  • Elaborate use cases and gauge for viability.
  • Define minimum viable product (MVP).
  • Prepare project launch announcement (a campaign).
  • Organize team and development process.
  • Start implementation of MVP.

Project organization

Outreach provides a service that is modeled as an extension of the fediverse ActivityPub protocol. It will be implemented as a so-called Service Module: A plugin extension that runs on top of a generic Fediverse platform. This platform is called Groundwork, and it is developed in parallel with Outreach. Participation in Outreach means you'll also be involved with Groundwork.

Groundwork project:

Relationship to Groundwork

The Minimum Viable Product will be built directly on top of Go-Fed's apcore, and not yet on Groundwork as a Service Module. In this effort Outreach will be used to elicit requirements for Groundwork (at groundwork-matters), and implemented such that refactoring to a Groundwork Service Module is a smooth transition.

Functionality elaboration


Stakeholder Key benefits
Organizer: Primary stakeholder. Anyone that facilitates an outreach community. Target audience are existing communities, FOSS maintainers, non-profits, NGO's and sustainable businesses. An organizer is also both fedizen and campaigner.
  • Greatly expand the power of your existing PR team to reach the broader public.
  • Explore Fediverse's open, vibrant culture, and people fully aligned to your cause.
  • Familiarize with next-gen social media and be part of an innovative movement.
Campaigner: Secondary stakeholder. Anyone with membership in an outreach community. Target audience are passionate people who want to active for a good cause. A campaigner is also a fedizen.
  • Help causes, groups, projects and organizations that appeal to you be more successful.
  • Get known for your activity, present yourself, cooperate with like-minded people.
  • Suggest your own work for promotion, and let the community help raise its popularity.
Fedizen: Any person that is part of the Fediverse.
  • Stay in the loop of communities, organizations and on themes you are passionate about.
  • Outreach will attract many interesting people and organizations to join the Fediverse.
  • Opportunities to extend Outreach. Create integrations and value-adding services.
Tenant: Indirect (not shown in domain model). The person or organization that hosts and administers an outreach server. A tenant is organizer of a special 'organizers community'.
  • Provide a service to help others strengthen the causes you care about.
  • May charge a fee for the use of the hosted service (not part of Outreach).
  • Determine the moderation and code of conduct guidelines for communities.
  • Be in full control of the software and the extensions that are installed.

Domain model

Outreach platform offers "Grassroots Campaign Management" as seen in this domain model (also shown on project website):

Outreach domain model

As text in ubiquitous language (linked to elaboration) the domain reads as follows:

Community management

Ubiquitous language Features
The organizer defines themes to build communities around presentation, common cause
The organizer owns and facilitates one or more communities community: launch, themes, profile, roles, disband
campaigner: ban
The organizer is a campaigner that manages outreach campaigns strategy, prepare, launch, refine, cancel
The campaigner is a fedizen that joins a community membership

Campaign management

Ubiquitous language Features
The community interacts with one or more campaigns announce, discuss, volunteer, improve, ...
The community members take action on active campaigns advice, instruction, strategy
The campaign communicates one or more themes followers, public
The campaign promotes one or more events publication, conference, release, meetup, ...
The campaign targets one or more channels social media, forum, newspaper, mail, ...
The campaign recommends desired actions per event / channel like, share, comment, republish, ...
The actions invoke campaigner owned channels report, share, log
The actions interact with one or more events report, share, log
The channels advertise the events to the broader public metrics, objectives, retrospective
Any fedizen can follow a theme to get updates community-independent, campaign summaries (toots)
The organizer informs fedizens about activity generic info (toots)

Service management

Note: This supporting domain is not displayed in the domain model above.

Ubiquitous language Features
A fedizen registers an account with the tenant signup, login, logout
A fedizen terminates their account with the tenant export, terminate
The tenant facilitates outreach services for organizers sysadmin, integrations, guidelines, code-of-conduct

Domain concepts

Community: Group of fedizen that campaign together.

Community (entity)

Any person or organization on the Fediverse can join communities on any Outreach server. Select one that campaigns for causes that are close to your heart. Didn't find a community? No problem, just create one yourself and invite your friends. Better yet, launch your own server and have full control. Whether you are a climate change activist, free and open software evangelist, or want to promote the worker cooperative you are part of. Outreach has got you covered.

Host community

A special type of community is the host community, a system community which is not federated and only exists on the server. It is created automatically on any Outreach installation once it has organizers that are not the same person as the tenant. They become members without ability to opt out. The tenant - in a role of organizer - uses this system community to administer the other communities that exist on the server.

Campaign: Definition of a public relations campaign.

Campaign (entity)

Outreach campaigns allow you to inform your community members and followers of your community themes about past and upcoming events. They provide a full overview of campaign activities and strategy to follow. Recipients can give your PR a boost by invoking their own channels in the ways specified in the campaign. The Outreach service lowers the barrier to participation by automating much of the manual labour involved. The community gives feedback and help fine-tune strategy and objectives before a campaign is launched. Campaign metrics become available to all members.

Theme: Campaign topics that can be followed across communities.

Theme (entity)

Campaigns revolve around themes. They are central to your community, and are what attracts people to become active for your cause. There can be a single theme. For an open-source developer it may be their project, to attract funding. But for Greenpeace there'll be many, like 'Climate change' and 'Sustainability'. Once defined people can subscribe and follow them to receive campaign-related activities, such as newly launched campaigns and their final outcomes.

Event: That what is being promoted in the campaign.

Event (entity)

Campaign events are what is being promoted. Events can be any occurrence, online or in the real world, that is related to a campaign theme. They may occur in the future or have already passed. Some examples are a conference, a blog post, an upcoming software release, a funding request or actions of others that need a response. For each event a set of objectives, appropriate channels and desired actions may be specified so that the campaign follows a strategic plan.

Channel: The targeted social media and other online platforms.

Channel (entity)

PR channels are chosen based on themes, objectives and events of the campaign. For a software release these could be just Hacker News, Techcrunch and some forums, while Extinction Rebellion may target all major social media. A community member becomes a campaigner when they perform actions on a channel according to campaign guidelines. This participation is entirely voluntary and for ethical reasons no pressure or monetary incentives must be at play.

Action: Desired actions to be performed per event, per channel.

Action (entity)

Activism is easier when it takes little effort. Outreach makes campaigning as convenient as possible by automating many actions relevant to a particular channel and part of the campaign. For Twitter a single-click consent might trigger multiple Likes and Retweets of an event, from the personal account of the campaigner. Campaigners remain in full control. After all real activists should only act from conviction, unforced. Act from the heart and mind.


Minor features:

  • Membership Validation: Members and/or organizers approve community join requests.

Major features:

  • Campaign Templates: Save repetitive work on similar campaigns by initializing from templates.
  • Metrics Insight: Privacy-first, transparent metrics collection, analysis and presentation.
  • Adaptive Strategy: Dynamic strategy-driven campaigns steered by activity and metrics.


  • Git integration: Persist campaign data in external git repositories specified by the organizer.
  • Dogfooding: Organizers are automatic members of a community + themes that promote Outreach itself.

Project team


See the list of Contributors.

Credits to for, and Codeberg for hosting great FOSS.


AGPL 3.0 for project code, and CC BY-SA 4.0 for documentation.