Creating an Opensource E-Learning Solution: Structuring the base of the Project's codebase
Tags: opensource, symfony, webdev, devjournal
Published: 2024-06-25 10:41:14

Hello Everyone, in this article, we will see how to structure the project codebase, we'll take a look to the licensing, the contributing , the documentation and the code of conduct.

## Where to start ?
As for any project or any decision in your life, you need to be informed and have the information crucial for your progress.

So I started searching on guides and tutorials, I found must-read and complete guides here : [Opensource Guide](https://opensource.guide/starting-a-project/) , you really should read it !

Basically, to start a opensource project, you need some basics :

- **Define your Opensource License:** to protect your work and yourself
- **Explain your project:** What is it, why is it important, how it will be, how to use it etc…
- **Contribution Process:** Clarify how the community can contribute, providing a process and a guide to do it properly
- **Code of conduct:** Explain what are the rules of behaviors of each one related to the project

## OpenSource License:
Choosing your license is important to protect your project and yourself, as it defines how your project codebase can be used, modified, distributed with all the conditions and limitations, the license is primordial to start on a good base, and we can enumerate two categories:

**Permissive Licenses:** The users are allowed to freely use, modify, integrate, and distribute the software without requiring changes to be open sourced, like :
- MIT License
- Apache License 2.0
- BSD 3-Clause License

**Copyleft Licenses:** Copyleft licenses require modified works that incorporate open source code also be open sourced under the same terms, like :

- GNU General Public License (GPL)
- GNU Affero General Public License (AGPL)
- GNU Lesser General Public License (LGPL)

In our case, we'll go on a more flexible license, and we will use MIT LICENSE

## Explaining your Project:
In this part, we need to explain everything about our Project, we can start by creating a README file in the root of our project, and answer to important questions like :

- What is the Project
- What are the problems it's solving and its goals
- Why you should use it, how it is useful
- How to start using it
- Where to check more details/ documentation

For our project, we answered to the first ones, as the project is still in developement and the file will be modified as we progress

## Contribution Process:
Here, you explain how the contribution is done in your project, and answer to the most important questions like :

- What are the types of contributions wanted
- How to get in touch with the maintainers
- The roadmap and the vision of your projects oriented towards the contributions
- How to file a bug report
- How to suggest a new feature

This can be done by creating a CONTRIBUTING File in your root project, in our case it will be really simple at first and will evolve over time

## Code of conduct:
This establish the ground rules of behavior in you project and to everyone evolved in it, it should define the person responsible for taking the complains in consideration as your code of conduct need to be enforced and applied, it also defines how participants should and should not behave and who it should be applied and how

**Our Project**
You can check for the README,CONTRIBUTING and CODE_OF_CONDUCT files direcly in our project Github here :
https://github.com/ramzi-issiakhem/learnfony


If you've read this far, I'm sure you're interested in the project. Join our Discord server stay in touch! 😁
https://discord.gg/eBqTKrYPPm