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.
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.
You know best what advantages you get from collaborating, but here are some to inspire you:
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.
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.
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.
|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.||
|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.||
|Fedizen: Any person that is part of the Fediverse.||
|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'.||
Outreach platform offers "Grassroots Campaign Management" as seen in this domain model (also shown on project website):
As text in ubiquitous language (linked to elaboration) the domain reads as follows:
|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
|The organizer is a campaigner that manages outreach campaigns||strategy, prepare, launch, refine, cancel|
|The campaigner is a fedizen that joins a community||membership|
|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)|
Note: This supporting domain is not displayed in the domain model above.
|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|
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.
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.
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.
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.
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.
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.
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.
See the list of Contributors.