So, you are a developer tasked to do customization to a specific Planet4 site.

Here is a starting point of the things you should be aware.

Read the general tech introduction, FAQ and info about plugins

Many of your current or future questions are covered there.

Communication with the other developers

The planet4 team is using a RocketChat self hosted server for all day to day communication. We welcome you to join us and participate in the discussions, or ask your questions regarding development, release process and infrastructure.

To join you will need the following:

1) Have a google account (for easiness of administration, we are limiting the login to “login via google” only. To GP Staff: your email is already a google account)

2) Go to chat.greenpeace.org , try to login via google. Know that it will tell you that you are not authorized. It is expected. It will still create your account and have it ready for us to activate.

3) Contact the Planet4 team via email or skype telling us what email address you used, and asking us to activate you

4) Wait until we confirm that we activated your account

5) Go to chat.greenpeace.org and login again. Now you should be able to get in

6) Find the channel #p4  and say “hi”. Introduce yourself. Ask us and we will create a channel for your NRO/site where you can discuss specific issues.

7) Check the following channels for starters

#p4-dev     

General development discussion. Good starting point from where people can point you to more specific channels (if it applies). Quite busy.

#p4-dev-local-environment  

Questions about the local development environment. As I am writing bellow, we only support one development environment. If you decide to work with your own apache/php/myadmin installation, you have to solve your problems on your own. Even that support has its limits though, as you can read bellow.

#p4-ci-failures

Automatic reports of ci failures. If you are trying to deploy something and you don’t see the results, check here if something related your site is reported in the correct timeframe.

#p4-wp-vulnerable-plugins

Automatic feed of newly released security issues of wordpress plugins. Useful if you put 3rd party plugins to your site

#p4-testing

Discussions about automatic testing techniques.

#p4-infra

Discussions about issues/decisions regarding the infrastructure where planet4 is running on

Common logic rules apply:

– We answer based on availability,

– If documentation exists the answer may just be a link towards the documentation,

– We expect you to have read this documentation before asking something,

– For Dev related questions, we expect you to have done a bare minimum search in the internets before asking something. So, if the answer to your question is in the first 5 results of a related search engine query, we reserve the right to ignore your question. Or delay answering the next time you ask something. No, we are not mean, but we value our time as you value yours.

Local development

We support one environment for local Planet 4 development: A docker-compose setup, which when installed provides you with a full working Planet4 website locally on your computer. It works on Linux and OsX, but unfortunately not thoroughly tested on Windows.

The instructions have been followed and worked for many people until now, as this is also the environment that all P4 engineers are using. But if you hit a bug or find parts of the documentation missing or inaccurate, please either open a ticket or open a Pull Request to the relevant repository.

There is though a limit to what we support, as it’s hard to debug issues that may occur due to conflicts with existing packages and configuration on your local machine. In any case, you are free to join the #p4-dev-local-environment channel, as mentioned above, to get in touch with the rest of the p4 dev community that uses this environment.

Access to your repositories

You (or the Webmaster of your site if  you are not a Greenpeace employee) should contact the Planet 4 team with the following information:

– Office/site for which you require dev access

– The github usernames of the developers who should get read/write access

Deploying code in your own site

– Your code must live inside a github repository, in the form of a plugin, or in your child-theme.

If you need to develop a new plugin, discuss with us about its name, and we will create the relevant repository in the organisations github account. You can also look at the GPNL custom plugin , or the Planet4 Engaging Networks plugin for inspiration (or just to copy and modify it, which will save you a lot of work).

– Your plugin must become available in Packagist. You can do that following the instructions or (as this is an one time job) you can ask us to add it for you so that you don’t have to create an account in one more place. For your plugin to be added there, it will need to have a valid composer.json file. Check the other plugins from the above links for examples of those composer.json files

– You can add a plugin to your site, following these instructions.

Writing automated tests for your own site

You can write tests that will automatically run for your customisations. You can read more about them in the documentation.

You can also add Visual Regression testing as you can read in the documentation

VERY IMPORTANT WARNING

This goes both to developers and site administrators:

Any customization you do to your website is fully and only your responsibility. The core planet4 application cannot and will not attempt to remain compatible with customization (in the same sense that WordPress itself does not try to continue working with all the existing 3rd party plugins, but it is the ultimate responsibility of the plugins developers to test that their code works with the latest WordPress versions). Before you do a customization, consider very well who is going to maintain this for as long as your office/team has this website. Because there are going to be conflicts, and someone will have to fix them. Developers: Please communicate with your site administrators about this.

Styleguide

We do have an (automatically generated from our code) css/front end styleguide which can help you identify objects, classes and elements that you can/should use to your child theme editing.