||8 months ago|
|assets||1 year ago|
|concepts||10 months ago|
|datamodels||10 months ago|
|functionality||8 months ago|
|.gitignore||9 months ago|
|CONTRIBUTORS.md||10 months ago|
|LICENSE||1 year ago|
|README.md||8 months ago|
This is outreach. A federated campaign management service for grassroots activism.
- Join the team
- Project status
- Project organization
- Functionality elaboration
- Project team
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.
- A first Proof of Concept of the project website is available.
- 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.
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 Codeberg elaboration: groundwork-matters
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.
|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|
Community: Group of fedizen that campaign together. ↲
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.
Campaign: Definition of a public relations campaign. ↲
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. ↲
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. ↲
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. ↲
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. ↲
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.
- Membership Validation: Members and/or organizers approve community join requests.
- 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.
See the list of Contributors.