# Contribute to Fipamo ## Overview The Fipamo project is a project of h.i. which has the stated [intention](https://h-i.works/about.html) of creating human-centric, consent-based tools for dynamic communities. While Fipamo is a tech project, the goals it adheres to are not and serve to create a healthy environment that will guide development. Those who want to contribute to the project must adhere to the ideal of fostering an inclusive and safe environment. ## Code of Conduct The culture of h.i. will guide all development and decision-making for the project. The goal of this idea is to create a dynamic environment where contributors can give their opinions and thoughts will be considered and discussed healthily and productively and features that are added to the project will follow this ethos. The following details will be points of priority that will help to maintain this culture. - **Hate-free environment**. Sexism, racism, queerphobia, Islamaphobia, antisemitism, etc will not be tolerated. There will be no warning for contributors who exhibit this behavior and they will be permanently banned from the project. - **All project features will be consent-based**, meaning opt-in by default. A feature that is opt-out by default will not be approved. - **No external tracking**. Fipamo is for managing one's personal information, so tracking information for their content is fine, but this will not include tracking other people's information outside of the project. - **Constructive criticism**. Contributors will not always agree on how to move forward, so disagreements are expected. These conflicts will be resolved with respectful discussion and engagement transparently so the community will be a part of the process. ## Who can contribute. As Fipamo is a tech project with the stated goal of creating an independent self-hosted content management platform, people with a background in programming are appreciated. However, as the goal is also to create easy-to-use software that is humanistic in its approach, more than technical people will be needed to achieve this goal. Contributors can include: - Community Organizers - Researchers - Differently abled users - Graphic Designers - Testers with little to no technical expertise - Copywriters from multiple languages - Digital Influencers Fipamo is meant to be useful to people from a wide range of backgrounds and experiences, so it will require that range of perspectives. If you have an idea, don't be shy. Insight can come from anywhere. ## How to contribute The first step in being able to contribute to the project is having an account with the h.i. community that houses all project-related discussions. To request an account, sign up at [awosanma.h-i.works](https://awosanma.h-i.works/) and then send a note to either [Are0h](https://h-i.social/@are0h) or the [Fipamo](https://h-i.social/@Fipamo) project account with a brief intro about you and what you'd like to contribute. Once you are approved, you will be added to the appropriate room. ### Non-technical contributions Contributors who do not want to contribute code to the project can share their insights and questions in the Fipamo community room made for all contributors to the project. If an idea requires a specific focus, additional rooms can be created to accommodate these needs. Feature requests, comments on existing features, bugs, etc, will originate in this room. Bugs and new features will be added to the Issues list located at the Fipamo code repository. Non-technical members are welcome to request an account at the repo to file Issues directly themselves. ### Technical contributions Technical contributors are required to have an account at the Fipamo [repository](https://koodu.h-i.works/projects/fipamo). The repo is invite-only, so to request an account, speak to any moderator in a Fipamo community room. #### Dependencies Fipamo is a project based on [Laravel](https://laravel.com), so the only dependencies needed for the environment are PHP and Composer to install the necessary libraries. [Herd](https://herd.laravel.com) is recommended to make this setup easy, but as long as these two requirements are available on your system, you should be good to go. For details on how to set up a Fipamo instance, check the wiki. For details on how to make code contributions to the project, read on. #### Forking a project The first step to contributing to an h.i. project is making a copy of it by forking it, which will create a new working instance of the current code without affecting the main codebase. This is accomplished by going to the project's main page and hitting the 'fork' button in the upper right corner of the page. Name your fork whatever you like and now you have a copy of the project that you can tinker with. Good job! #### Cloning your fork and making a branch for edits Now that your fork is ready, let's grab a copy of it so you can start making some cool changes. Open up your terminal and clone a copy of your fork to your machine. The URL of your fork can be found on your fork page. `git clone https://koodu.h-i.works/YOURNAME/YOURFORKNAME.git`. Assuming everything went well, you should now have a copy of your fork on your machine. Now you're ready to make changes. To avoid conflicts with other people who will be contributing to your project as well, create a specific branch for the changes you want to make. The name of this branch should relate to the nature of the change you are making, for example, if you are updating the README, a good name for that branch could be `tweaking-the-readme`. It doesn't have to be fancy but what is being changed should be apparent at a glance. Once you've decided on the name create the branch and then check it out to work on it. ``` git branch YOUR-BRANCH-NAME git checkout YOUR-BRANCH-NAME ``` #### Making changes and adding them to the main branch Now that you are in your branch for the changes you want to make, pop open your favorite text editor and hack away. As your changes are in your fork with its branch, you don't have to worry about interfering with another contributor's work. Once you've made the changes you want to see, the next step is to have your changes evaluated to see if it is ready to add to the main project. To do this, create a Pull Request to signal you are ready for your changes to be reviewed. This can be accomplished by going to your fork repository page and hitting the 'Pull Request' tab. The main codebase is the `projects: develop` option and it will be pulling from the branch you created for the changes you made. If your changes need some work, they will be listed in the pull request and you can make those edits at your convenience. Once the pull request is ready and validated, it will then be merged into the main codebase.