diff --git a/Makefile b/Makefile index d7585424..b874b19b 100644 --- a/Makefile +++ b/Makefile @@ -3,11 +3,11 @@ init: make start start: stop - @bash docker/message.sh "starting MobiliZon with docker" + @bash docker/message.sh "starting Mobilizon with docker" docker-compose up -d @bash docker/message.sh "started" stop: - @bash docker/message.sh "stopping MobiliZon" + @bash docker/message.sh "stopping Mobilizon" docker-compose down @bash docker/message.sh "stopped" test: stop diff --git a/README.md b/README.md index e59e6d8f..808777ed 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ -MobiliZon is your federated organization and mobilization platform. Gather people with a convivial, ethical, and emancipating tool. +Mobilizon is your federated organization and mobilization platform. Gather people with a convivial, ethical, and emancipating tool.
Developed with โฅ by Framasoft @@ -20,7 +20,7 @@ MobiliZon is your federated organization and mobilization platform. Gather peopl Mobilizon is a tool designed to create platforms for managing communities and events. Its purpose is to help as many people as possible to free themselves from Facebook groups and events, from Meetup, etc. -The MobiliZon software is under a Free licence, so anyone can host a MobiliZon server, called an instance. These instances may federate with each other, so any person with an account on *ExampleMeet* will be able to register to an event created on *SpecimenEvent*. +The Mobilizon software is under a Free licence, so anyone can host a Mobilizon server, called an instance. These instances may federate with each other, so any person with an account on *ExampleMeet* will be able to register to an event created on *SpecimenEvent*. ## โจ Features @@ -41,7 +41,7 @@ There's no lock-in, you can interact with the event without registration. ## Contributing -We appreciate any contribution to MobiliZon. Check our [CONTRIBUTING](CONTRIBUTING.md) file for more information. +We appreciate any contribution to Mobilizon. Check our [CONTRIBUTING](CONTRIBUTING.md) file for more information. ## Links diff --git a/SECURITY.md b/SECURITY.md index 05671d8c..be9788c4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,4 +1,4 @@ -[Mobilizon](https://joinmobilizon.org) takes security, privacy and user control seriously, and want to put them front and centre of our project. +[Mobilizon](https://joinmobilizon.org) takes security, privacy and user control seriously, and we want to put them front and centre of our project. This document outlines security procedures and general policies for the Mobilizon project. Framasoft, the Mobilizon maintainer team and community take all security bugs in Mobilizon seriously. Thank you for improving the security of Mobilizon. We appreciate your efforts and responsible disclosure and will make every effort to acknowledge your contributions. @@ -9,11 +9,11 @@ Framasoft, the Mobilizon maintainer team and community take all security bugs in * Users always know where their private data/metadata resides, who has access to it, and are able to access, export, and delete it. -* Protect private user data/metadata, not just from hackers but also (as much as is possible) from other users, instance admins, community moderators, and external applications +* Protect private user data/metadata, not just from hackers but also (as much as is possible) from other users, instance admins, community moderators, and external applications. -* Secure from malicious creation, alteration or deletion public data +* Secure from malicious creation, alteration or deletion of public data. -* GDPR compliance +* GDPR compliance. Framasoft is both a developer of open-source/free/libre self-hosted software, and a service provider with users in the European Union. As a result, we are putting user privacy, data sovereignty, and GDPR compliance into our security plans, including asking both the Framasoft community and outside hackers to review our approaches and implementations. @@ -40,7 +40,7 @@ We are committed to working with security researchers to verify, reproduce, and * Contact Framasoft or a maintainer of the Mobilizon project (or the instance admin) immediately if you do inadvertently encounter user data. Do not view, alter, save, store, transfer, or otherwise access the data, and immediately purge any local information upon reporting the vulnerability; * The lead maintainer will acknowledge your email within 48 hours, and will send a more detailed response within 48 hours indicating the next steps in handling your report. After the initial reply to your report, the security team will endeavor to keep you informed of the progress towards a fix and full announcement, and may ask for additional information or guidance. * Give us time to confirm, determine the affected versions and prepare fixes to correct the issue before disclosing it to other parties (if after waiting a reasonable amount of time, we are clearly unable or unwilling to do anything about it, please do hold us accountable!) -* Please test against a local instance of the software, and refrain from running any Denial of Service or automated testing tools against Framasoft's (and our partners') infrastructure +* Please test against a local instance of the software, and refrain from running any Denial of Service or automated testing tools against Framasoft's (and our partners') infrastructure Note : Please report security bugs in third-party modules to the person or team maintaining the module. diff --git a/support/guides/contributing.md b/support/guides/contributing.md index 4b2d5108..84d58c7b 100644 --- a/support/guides/contributing.md +++ b/support/guides/contributing.md @@ -6,24 +6,24 @@ First off, thank you for considering contributing to Mobilizon! -Our aim is for this project to make you feel welcome as a contributor. +Our aim for this project is to make you feel welcome as a contributor. We hugely value the comments and contributions of community members in the various publicly-accessible areas in use, which currently are: * Home: [Home](https://joinmobilizon.org) -* Wiki: [Project Wiki](https://framagit.org/framasoft/mobilizon/wikis) (Gitlab) -* Code: [Framagit](https://framagit.org/framasoft/mobilizon) (Gitlab) -* Issue tracking: [Framagit](https://framagit.org/framasoft/mobilizon) (Gitlab) +* Wiki: [Project Wiki](https://framagit.org/framasoft/mobilizon/wikis) (GitLab) +* Code: [Framagit](https://framagit.org/framasoft/mobilizon) (GitLab) +* Issue tracking: [Framagit](https://framagit.org/framasoft/mobilizon) (GitLab) * Discussion: [Mobilizon forum](https://framacolibri.org/c/mobilizon) (Discourse) * Chat: [#Mobilizon:matrix.org](https://matrix.org/#/room/#Mobilizon:matrix.org) (Matrix) or `#mobilizon` on Freenode (IRC) ### How to communicate with others ? -As you may know, English is not the only language in the community and communicating in various languages can be quite tricky. Some might not understand what you're saying, while other have a hard time writing in a language that is not their primary language. +As you may know, English is not the only language in the community and communicating in various languages can be quite tricky. Some might not understand what you're saying, while others have a hard time writing in a language that is not their primary language. -If you don't have noticed yet, French is the de-facto language for communication in various channels. This is because a huge part of our community speaks French, as Framasoft is a French organization. +If you haven't noticed yet, French is the de-facto language for communication in various channels. This is because a huge part of our community speaks French, as Framasoft is a French organization. -We don't want to impose French as the only language in the project, though, because we would lose a ton of potential users users and contributors that can help us make Mobilizon better. +We don't want to impose French as the only language in the project, though, because we would lose a ton of potential users and contributors that can help us make Mobilizon better. You can write what you would like to tell us in the language you're most comfortable with and then use automagic translation to translate your message in English. It's far from perfect, but if we can understand the main idea you wanted to expose, it's sufficient. @@ -68,7 +68,7 @@ Please go through the checklist below before posting any โจ ๐ ๐ * **Check if you're using the latest version** of Mobilizon and all its relevant components and if you can get the desired behaviour by changing some config settings. * **Perform a cursory search** in the issue tracker to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. -* Never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to tcit plus mobilizon at framasoft dot org. +* Never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead, sensitive bugs must be sent by email to tcit plus mobilizon at framasoft dot org. > **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one. @@ -81,21 +81,21 @@ Open an issue providing the following information: * **Use a clear and descriptive title** for the issue to identify the suggestion. * **Provide a description of the suggested enhancement** in as many details as possible, including the steps that you imagine you (as a user) would take if the feature you're requesting existed. * **Describe the current behaviour** and **explain which behaviour you would like to see instead** and why. -* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the parts of Mobilizon which the suggestion is related to. You can use a tool called [LICEcap](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [Silentcast](https://github.com/colinkeenan/silentcast) or [Byzanz](https://github.com/GNOME/byzanz) on Linux. -* **Provide specific examples to demonstrate the enhancements**. If possible, include drawings, screenshots, or gifs of similar features in another app. +* **Include screenshots and animated GIFs** which help demonstrate the steps or point out the parts of Mobilizon which your suggestion is related to. You can use a tool called [LICEcap](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [Silentcast](https://github.com/colinkeenan/silentcast) or [Byzanz](https://github.com/GNOME/byzanz) on Linux. +* **Provide specific examples to demonstrate the enhancements**. If possible, include drawings, screenshots, or GIFs of similar features in another app. * **Explain why this enhancement would be useful** to most participants of Mobilizon and isn't something that can or should be implemented as a community extension. * **List some other communities, platforms or apps where this enhancement exists.** ### Reporting Bugs ๐ -Open an issue providing the following information by filling in issue template below, explaining the problem and including additional details to help maintainers reproduce the problem: +Open an issue providing the following information by filling in the issue template below, explaining the problem and including additional details to help maintainers reproduce the problem: * **Use a clear and descriptive title** for the issue to identify the problem. * **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining where you started in Mobilizon, and then which actions you took. When listing steps, **don't just say what you did, but explain how you did it**. For example, if you moved the cursor to the end of a line, explain if you used the mouse or a keyboard shortcut, and if so which one? * **Provide specific examples to demonstrate the steps**. Include links to pages, screenshots, or copy/pasteable snippets, which you use in those examples. If you're providing snippets in the issue, use Markdown code blocks. * **Describe the behaviour you observed after following the steps** and point out what exactly is the problem with that behaviour. * **Explain which behaviour you expected to see instead and why.** -* **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. +* **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem. You can use [LICEcap](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [Silentcast](https://github.com/colinkeenan/silentcast) or [Byzanz](https://github.com/GNOME/byzanz) on Linux. * **If you're reporting a crash**, include a crash report with error logs. * **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below. @@ -122,39 +122,39 @@ Even if you like to write code, other types of contributions are a great way to #### Do you like to design? ๐จ -* Restructure layouts to improve the project's usability -* Conduct user research to reorganise and refine the project's navigation or menus -* Create art for icons and app screens +* Restructure layouts to improve the project's usability. +* Conduct user research to reorganise and refine the project's navigation or menus. +* Create art for icons and app screens. #### Do you like to write? โ -* Write and improve the project's documentation -* Write tutorials for the project -* Curate a wiki page of examples showing how the project can be used +* Write and improve the project's documentation. +* Write tutorials for the project. +* Curate a wiki page of examples showing how the project can be used. #### Do you like organising? ๐ฅ -* Link to duplicate issues, and suggest new issue labels, to keep things organised -* Go through open issues and suggest revisiting or closing old ones -* Ask clarifying questions on recently opened issues to move the discussion forward +* Link to duplicate issues, and suggest new issue labels, to keep things organised. +* Go through open issues and suggest revisiting or closing old ones. +* Ask clarifying questions on recently opened issues to move the discussion forward. #### Do you like helping people? ๐ -* Answer questions about the project on forums and other sites -* Answer questions for people on open issues +* Answer questions about the project on forums and other sites. +* Answer questions for people on open issues. #### Do you like helping others code? ๐ -* Review code on other peopleโs submissions -* Write tutorials for how a project can be used -* Offer to mentor another contributor +* Review code on other people's submissions. +* Write tutorials for how a project can be used. +* Offer to mentor another contributor. #### Do you like to code? ๐ฉ -* Find an open issue to tackle -* Offer to help write a new feature -* Improve tooling, testing & deployment options -* Read the **next section for guidelines** +* Find an open issue to tackle. +* Offer to help write a new feature. +* Improve tooling, testing & deployment options. +* Read the **next section for guidelines**. --- @@ -171,7 +171,7 @@ Mobilizon can be developed locally. For instructions on how to do this, please s #### Coding & git practices -* We use GitLab's merge requests as our code review tool +* We use GitLab's merge requests as our code review tool. * We encourage any dev to comment on merge requests and we think of the merge request not as a "please approve my code" but as a space for co-developing. * We develop features on separate branches identified by issue numbers. * We don't currently use release branches or tags because we don't have release management at this phase of development. @@ -186,19 +186,19 @@ Mobilizon can be developed locally. For instructions on how to do this, please s #### Git commit messages -* Limit the first line to 72 characters or less, referencing relevant issue numbers -* Be as descriptive as you want after the first line -* Consider starting the commit message with an applicable emoji (see Issue & Commit Categories below) +* Limit the first line to 72 characters or less, referencing relevant issue numbers. +* Be as descriptive as you want after the first line. +* Consider starting the commit message with an applicable emoji (see Issue & Commit Categories below). #### Merge requests * Follow [the code styleguides](styleguide.html). -* Document new code based on [the documentation styleguide](https://hexdocs.pm/elixir/writing-documentation.html) +* Document new code based on [the documentation styleguide](https://hexdocs.pm/elixir/writing-documentation.html). * Each merge request should implement ONE feature or bugfix. If you want to add or fix more than one thing, submit more than one merge request. -* Fill in the merge request template below -* Include relevant issue number(s) in the merge request title +* Fill in the merge request template below. +* Include relevant issue number(s) in the merge request title. * Include screenshots or animated GIFs in your merge request whenever possible. -* End all files with a newline +* End all files with a newline. #### Template for merge requests @@ -218,7 +218,7 @@ Mobilizon can be developed locally. For instructions on how to do this, please s * ๐ `enhancement` : General improvements. * โจ `feature` : New features. * ๐ `bug` : Confirmed bugs, or reports that are likely to be bugs. -* ๐ `question` : Questions (e.g. how can I do X?) +* ๐ `question` : Questions (e.g. how can I do X?). * ๐ฎ `feedback` : General feedback. * ๐จ `ui` : Visual design. * ๐ `copy` : Text in the apps, or translations. @@ -231,7 +231,7 @@ Mobilizon can be developed locally. For instructions on how to do this, please s * ๐ฅ `crash` : Crash. * ๐ฃ `encoding` : Character encoding or data serialization issue. * ๐ `cleanup` : Removing, moving or refactoring code or files. -* โ `tests` : Testing +* โ `tests` : Testing. #### Issue Status diff --git a/support/guides/development/development.md b/support/guides/development/development.md index e1852308..cb96f1f3 100644 --- a/support/guides/development/development.md +++ b/support/guides/development/development.md @@ -1,5 +1,5 @@ # Development -Clone the repo, and start the project trough Docker. You'll need both Docker and Docker-Compose. +Clone the repo, and start the project through Docker. You'll need both Docker and Docker-Compose. ```bash git clone https://framagit.org/framasoft/mobilizon && cd mobilizon make @@ -28,19 +28,19 @@ make * Run migrations: `mix ecto.migrate`. * Start Phoenix endpoint with `mix phx.server`. -Now you can visit [`localhost:4000`](http://localhost:4000) from your browser +Now you can visit [`localhost:4000`](http://localhost:4000) in your browser and see the website (server *and* client) in action. ### Client -If you plan to specifically change the client side (frontend), do the following +If you plan to specifically change the client side (front-end), do the following once the server is running: - * Install the NodeJS (we guarantee support for the latest LTSย and later) ![](https://img.shields.io/badge/node-%3E%3D%2010.0+-brightgreen.svg) + * Install NodeJS (we guarantee support for the latest LTS and later) ![](https://img.shields.io/badge/node-%3E%3D%2010.0+-brightgreen.svg) * Change directory to `js/` and do: * Install JavaScript package dependencies: `yarn install`. - * Run the developement server in watch mode: `yarn run dev`. This will open a - browser on [`localhost:8080`](http://localhost:8080) that gets + * Run the development server in watch mode: `yarn run dev`. This will open a + browser at [`localhost:8080`](http://localhost:8080) that gets automatically reloaded on change. ## Docker diff --git a/support/guides/development/styleguide.md b/support/guides/development/styleguide.md index df4abf1b..5670dcad 100644 --- a/support/guides/development/styleguide.md +++ b/support/guides/development/styleguide.md @@ -1,21 +1,21 @@ # Styleguide -# Elixir +## Elixir We format our code with the Elixir Formatter and check for issues with [Credo](https://github.com/rrrene/credo) (a few rules are not blocking). -Please run those two commands before pushing code: +Please run these two commands before pushing code: * `mix format` * `mix credo` These two commands must not return an error code, since they are required to pass inside CI. -# Front +## Front-end We use `tslint` with the `tslint-config-airbnb` preset. Errors should be reported when running in dev mode `yarn run dev` or when building a production bundle `yarn run build`. -Please run the following command before pushing code `yanr run lint`. +Please run the following command before pushing code `yarn run lint`. This command must not return an error code, since it's required to pass inside CI. diff --git a/support/guides/development/tests.md b/support/guides/development/tests.md index ab34f744..ab180ccf 100644 --- a/support/guides/development/tests.md +++ b/support/guides/development/tests.md @@ -9,7 +9,7 @@ To launch all the tests: mix test ``` -If you want the coverage: +If you want test coverage: ```bash mix coveralls.html diff --git a/support/guides/install/dependencies.md b/support/guides/install/dependencies.md index 2aaa047b..45cd95c0 100644 --- a/support/guides/install/dependencies.md +++ b/support/guides/install/dependencies.md @@ -9,28 +9,28 @@ 1. On a fresh Debian/Ubuntu, as root user, install basic utility programs needed for the installation ``` -sudo apt-get install curl sudo unzip vim +sudo apt install curl sudo unzip vim ``` 2. It would be wise to disable root access and to continue this tutorial with a user with sudoers group access - - 3. Install certbot (choose instructions for nginx and your distribution) : + 3. Install certbot (choose instructions for nginx and your distribution): [https://certbot.eff.org/all-instructions](https://certbot.eff.org/all-instructions) 4. Install NodeJS 10.x (current LTS): [https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions](https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions) - 5. Install yarn, and be sure to have [a recent version](https://github.com/yarnpkg/yarn/releases/latest): [yarnpkg.com/en/docs/install#linux-tab](https://yarnpkg.com/en/docs/install#linux-tab) - 5. Install Erlang and Elixir: + 5. Install yarn, and be sure to have [a recent version](https://github.com/yarnpkg/yarn/releases/latest): + [https://yarnpkg.com/en/docs/install#linux-tab](https://yarnpkg.com/en/docs/install#linux-tab) + 6. Install Erlang and Elixir: [https://elixir-lang.org/install.html#unix-and-unix-like](https://elixir-lang.org/install.html#unix-and-unix-like) - 6. Install PostGIS: + 7. Install PostGIS: [https://postgis.net/install/](https://postgis.net/install/) - 6. Run: + 8. Run: ``` sudo apt update sudo apt install nginx postgresql postgresql-contrib openssl make git esl-erlang elixir postgis ``` -Now that dependencies are installed, before running MobiliZon you should start PostgreSQL: +Now that dependencies are installed, before running Mobilizon you should start PostgreSQL: ``` sudo systemctl start postgresql ``` @@ -43,7 +43,7 @@ sudo systemctl start postgresql sudo pacman -S nodejs postgresql openssl git wget unzip base-devel yarn nginx elixir postgis ``` -Now that dependencies are installed, before running MobiliZon you should start PostgreSQL and Redis: +Now that dependencies are installed, before running Mobilizon you should start PostgreSQL and Redis: ``` sudo systemctl start postgresql ``` diff --git a/support/guides/install/install.md b/support/guides/install/install.md index 4097f2cb..baccbba8 100644 --- a/support/guides/install/install.md +++ b/support/guides/install/install.md @@ -13,7 +13,7 @@ sudo -u postgres createuser -P mobilizon sudo -u postgres createdb -O mobilizon mobilizon_prod ``` -Then enable extensions PeerTube needs: +Then enable extensions Mobilizon needs: ```bash sudo -u postgres psql -c "CREATE EXTENSION postgis;" mobilizon_prod @@ -22,7 +22,7 @@ sudo -u postgres psql -c "CREATE EXTENSION unaccent;" mobilizon_prod ``` -## MobiliZon user +## Mobilizon user Create a `mobilizon` user with `/home/mobilizon` home: ```bash @@ -46,7 +46,7 @@ git clone https://framagit.org/framasoft/mobilizon live && cd live ### Backend -Install Elixir dependencies +Install Elixir dependencies ```bash mix deps.get @@ -58,42 +58,43 @@ Configure your instance with mix mobilizon.instance gen ``` -This will ask you questions about your instance and generate an `.env.prod` file. +This will ask you questions about your instance and generate a `.env.prod` file. ### Migration - + Run database migrations: `mix ecto.migrate`. You will have to do this again after most updates. > If some migrations fail, it probably means you're not using a recent enough version of PostgreSQL, -or that you didn't installed [the required extensions](#database). - +or that you haven't installed [the required extensions](#database). + ### Front-end Go into the `js/` directory ```bash -cd js/ +cd js ``` + and install the Javascript dependencies - + ```bash yarn install ``` -Finally, build the front-end with +Finally, build the front-end with ```bash yarn run build ``` - + ### Testing Go back to the previous directory - + ```bash -cd ../ +cd .. ``` -Now try to run the server +Now try to run the server ```bash mix phx.server @@ -106,7 +107,7 @@ It runs on port 4000. ### Systemd -Copy the `support/systemd/mobilizon.service` to `/etc/systemd/system`. +Copy the `support/systemd/mobilizon.service` to `/etc/systemd/system`. ```bash sudo cp support/systemd/mobilizon.service /etc/systemd/system/ @@ -117,15 +118,15 @@ Reload Systemd to detect your new file ```bash sudo systemctl daemon-reload ``` + And enable the service ```bash systemctl enable --now mobilizon.service ``` -It will run MobiliZon and enable startup on boot. You can follow the logs with +It will run Mobilizon and enable startup on boot. You can follow the logs with ```bash sudo journalctl -fu mobilizon.service ``` - diff --git a/support/guides/introduction.md b/support/guides/introduction.md index 01d19751..576a5f44 100644 --- a/support/guides/introduction.md +++ b/support/guides/introduction.md @@ -6,7 +6,7 @@
-MobiliZon is your federated organization and mobilization platform. Gather people with a convivial, ethical, and emancipating tool. +Mobilizon is your federated organization and mobilization platform. Gather people with a convivial, ethical, and emancipating tool.Developed with โฅ by Framasoft @@ -22,7 +22,7 @@ MobiliZon is your federated organization and mobilization platform. Gather peopl Mobilizon is a tool designed to create platforms for managing communities and events. Its purpose is to help as many people as possible to free themselves from Facebook groups and events, from Meetup, etc. -The MobiliZon software is under a Free licence, so anyone can host a MobiliZon server, called an instance. These instances may federate with each other, so any person with an account on *ExampleMeet* will be able to register to an event created on *SpecimenEvent*. +The Mobilizon software is under a Free licence, so anyone can host a Mobilizon server, called an instance. These instances may federate with each other, so any person with an account on *ExampleMeet* will be able to register to an event created on *SpecimenEvent*. ## โจ Features @@ -43,7 +43,7 @@ There's no lock-in, you can interact with the event without registration. ## Contributing -We appreciate any contribution to MobiliZon. Check our [Contributing](contributing.html) page for more information. +We appreciate any contribution to Mobilizon. Check our [Contributing](contributing.html) page for more information. ## Links @@ -54,7 +54,7 @@ We appreciate any contribution to MobiliZon. Check our [Contributing](contributi ### Discuss * ๐ฌ Matrix: `#Mobilizon:matrix.org` [Riot](https://riot.im/app/#/room/#Mobilizon:matrix.org) - * #๏ธโฃ IRC `#mobilizon` on Freenode + * #๏ธโฃ IRC: `#mobilizon` on Freenode * ๐ฃ๏ธ Forum: [https://framacolibri.org/c/mobilizon](https://framacolibri.org/c/mobilizon) ### Follow