# Contributing


**Abstract**

The Devilbox is currently being developed in my spare time and mostly reflects the features that I
am using for all the web projcets I have to handle. In order to better present it to the majority
of other software developers I do require support to cope with all the feature requests.


So first of all, If the Devilbox makes your life easier, **star it on GitHub**!

**Table of Contents**

1. [How to contribute](#how-to-contribute)
    1. [Documentation](#documentation)
    2. [Docker Container](#docker-container)
    3. [New Features](#new-features)
    4. [Intranet](#intranet)
    5. [Tests](#tests)
2. [Joining the Devilbox GitHub Organization](#joining-the-devilbox-github-organization)
3. [Important](#important)


## 1. How to contribute

There are various areas that need support. If you are willing to help, pick a topic below and start
contributing. If you are unclear about anything, let me know and I will clarify.

See the general [ROADMAP](https://github.com/cytopia/devilbox/issues/23) for what is planned.

### Documentation

**Required knowledge:** [Sphinx](http://www.sphinx-doc.org/en/stable/)

* General improvement of the documentation (typos, grammar, etc)
* Better documentation for setting up Xdebug
* More how to's on how to setup a specific framework or CMS
* General how to's and blog posts

### Docker Container

**Required knowledge:** Docker, [Ansible](https://www.ansible.com/), Apache, Nginx, MySQL, PHP-FPM

* Consolidate MySQL, PerconaDB and MariaDB into one repository for easier change management
* Consolidate Nginx and Apache into one repository for easier change management
* Performance improvements on Apache/Nginx and PHP-FPM
* Add new container to the stack

### New Features

**Required knowledge:** Various

Have a look at the GitHub issues and see if you can implement any features requested

### Intranet

**Required knowledge:** PHP, HTML, CSS and Javascript

* [ ] Fix email view: https://github.com/cytopia/devilbox/issues/337
* [ ] Better and more modern layout
* [ ] Try to remove as much vendor dependencies as possible

### Tests

**Required knowledge:** [Travis-CI](https://docs.travis-ci.com/)

* Shorten CI test time for faster releases
* Rewrite current tests, write new tests


## Joining the Devilbox GitHub Organization

If you want to contribute on a regular base and take care about major feature development you can
be invited to the GitHub organization.

This however requires some prerequisites:

1. Willing to dedicate a regular amount of time to invest in this project
2. Already spent a decent amount of time in improving the Devilbox
3. A good understanding about the Devilbox
4. A good understanding about the PHP-FPM container (and how it is built with Ansible)
