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 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 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.
Of course, you can and should express yourself directly in English if you're confident doing so!
### Other useful information
* It's early days for Mobilizon, so we're focused on laying down the foundations for the project. This means that you won't find much usable code yet.
* We're working as openly and transparently as possible with this project. As a contributor or member of the Mobilizon community, almost everything you come across will link to some other things that you should have access to. If you don't have access, and you think you should, just ask!
### Contributopia
This project is part of [Framasoft](https://framasoft.org)'s [Contributopia Campaign](https://contributopia.org), creating and offering tools designed with a different set of values.
![Framameet illustration on Contributopia Website](https://contributopia.org/img/services-framameet.jpg)
### Submitting Feature Requests, Enhancement Suggestions or Bug Reports
This section guides you through submitting a ✨ feature request, 💄 enhancement suggestions, and 🐛 bug reports for Mobilizon - anything from errors and crashes, to minor improvements, to completely new features.
When you post an issue, please include as many details as possible. **Fill in the issue template** (available below) to help us resolve issues faster.
### Before making a submission
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.
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.
If you find yourself wishing for a feature that doesn't exist in Mobilizon, you are probably not alone. There are probably others out there with similar needs.
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 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.**
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 [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.
Provide more context by answering these questions:
* **Did the problem start happening recently** (e.g. after updating to a new version) or was this always a problem?
* If the problem started happening recently, **can you reproduce the problem in an older version?** What's the most recent version in which the problem doesn't happen?
* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens.
* If the problem is related to an event, comment or actor (eg. user or group), **does the problem happen for all of them or only some?** Does the problem happen only when working with local (originating from your Mobilizon instance) or remote ones, with anything specific about the object? Is there anything else special about the actors or events in question?
Include details about your configuration and environment:
* **Which version of each component are you using?**
* **What's the name and version of the OS you're using**?
* **Are you running in a virtual machine?** If so, which VM software are you using and which operating systems and versions are used for the host and the guest?
---
### Contributing
A common misconception about contributing to free and open source projects is that you need to contribute code. In fact, it’s often the other parts of a project that are most overlooked. You’ll do the project a huge favour by offering to pitch in with these types of contributions!
Even if you like to write code, other types of contributions are a great way to get involved with a project and meet other community members. Building those relationships may open up unexpected opportunities.
Unsure where to begin contributing? You can start by looking through issues tagged with:
* [`first-timers-only`](https://framagit.org/framasoft/mobilizon/issues?scope=all&utf8=✓&state=opened&label_name[]=🌱 first-timers-only) [https://www.firsttimersonly.com](https://www.firsttimersonly.com)- issues which should only require a few lines of code, and a test or two.
* [`help-wanted`](https://framagit.org/framasoft/mobilizon/issues?label_name[]=🙏 help-wanted) - issues which should be a bit more involved than `first-timers-only` issues.
* 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.
* Make your changes on a separate branch which includes an issue number e.g. `1234-some-new-feature` where 1234 is the issue number where the feature is documented. Make sure the branch is based on `master`.
* 💬 `discussion` : Discussion to clarify this issue is ongoing.
* 🔜 `todo` : This has been discussed and now needs work.
* 🔁 `needs-more-info` : More information needs to be collected about these problems or feature requests (e.g. steps to reproduce).
* 💡 `idea` : Needs to be discussed further. Could be a feature request which might be good to first implement as a community extension.
* 🚧 `in-progress` : Someone is working on this...
* 🙏 `help-wanted` : The Mobilizon core team would appreciate help from the community in resolving these issues.
* 🌱 `first-timers-only` : Less complex issues which would be good first issues to work on for users who want to contribute.
* 🔢 `needs-reproduction` : Likely bugs, but haven't been reliably reproduced.
* 🔴 `blocked` : Blocked on other issues.
* 2️⃣ `duplicate` : Duplicate of another issue, i.e. has been reported before.
* 🙅 `wontfix` : The Mobilizon core team has decided not to fix these issues (or add these features) for now, because they're working as intended, or some other reason.
* 🚮 `invalid` : Issues which are not valid (e.g. spam or submitted by error).
#### Merge Request Status
* 🚧 `in-progress` : Still being worked on, more changes will follow.
* 🚏 `needs-review` : Needs code review and approval from maintainers.
* 🔍 `under-review` : Being reviewed by maintainers.
* 🔧 `changes-required` : Needs to be updated based on review comments and then reviewed again.
* 👀 `needs-testing` : Needs manual testing.
---
## Credits
The following documents have greatly helped us put this together. A big thank you to their authors and contributors!
* [MoodleNet's own Contributing document](https://gitlab.com/moodlenet/project/meta/issues/16)