]> git.mxchange.org Git - friendica.git/blobdiff - doc/Developers-Intro.md
Updated MySQL and PHP requirements in documentation
[friendica.git] / doc / Developers-Intro.md
index 2a9d87d764b3ebec30bc72896b88f884c67301b2..137e5aaf544420e17ec9141e9798f41fe8fc2e8e 100644 (file)
@@ -6,8 +6,7 @@ Where to get started to help improve Friendica?
 Do you want to help us improve Friendica?
 Here we have compiled some hints on how to get started and some tasks to help you choose.
 A project like Friendica is the sum of many different contributions.
-**Very different skills are required to make good software.
-Some of them involve coding, others do not.**
+**Very different skills are required to make good software, not all of them involve coding!**
 We are looking for helpers in all areas, whether you write text or code, whether you spread the word to convince people or design new icons.
 Whether you feel like an expert or like a newbie - join us with your ideas!
 
@@ -47,20 +46,54 @@ We can't promise we have the right skills in the group but we'll try.
 Programming
 ---
 
-###Coding standards
+### Composer
+
+Friendica uses [Composer](https://getcomposer.org) to manage dependencies libraries and the class autoloader both for libraries and namespaced Friendica classes.
 
-For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/). Don't worry, you don't have to know by heart the PSR-2 coding standards. Before comitting your work, you can use the PHP Coding Standard Fixer located in the `util` folder this way:
+It's a command-line tool that downloads required libraries into the `vendor` folder and makes any namespaced class in `src` available through the whole application through `boot.php`.
 
-       $> php util/php-cs-fixer.phar fix <file or folder> --level=psr2
+* [Class autoloading](help/autoloader)
+* [Using Composer](help/Composer)
+* [How To Move Classes to `src`](help/Developer-How-To-Move-Classes-to-src)
+
+###Coding standards
 
-Here's a few primers if you are new to the PSR-2 coding standards:
- * Indentation is 4 spaces, period.
- * By default, strings are enclosed in single quotes, but fell free to use double quotes if it makes more sense.
- * Operators are wrapped by spaces, e.g. `$var === true`, `$var = 1 + 2` and `'string' . $concat' . 'enation'`
+For the sake of consistency between contribution and general code readability, Friendica follows the widespread [PSR-2 coding standards](http://www.php-fig.org/psr/psr-2/) to the exception of a few rules.
+Here's a few primers if you are new to Friendica or to the PSR-2 coding standards:
+ * Indentation is tabs, period (not PSR-2).
+ * By default, strings are enclosed in single quotes, but feel free to use double quotes if it makes more sense (SQL queries, adding tabs and line feeds).
+ * Operators are wrapped by spaces, e.g. `$var === true`, `$var = 1 + 2` and `'string' . $concat . 'enation'`
  * Braces are mandatory in conditions
+ * Boolean operators are `&&` and `||` for PHP conditions, `AND` and `OR` for SQL queries
  * No closing PHP tag
  * No trailing spaces
 
+Don't worry, you don't have to know by heart the PSR-2 coding standards to start contributing to Friendica.
+There are a few tools you can use to check or fix your files before you commit.
+
+For documentation we use the standard of *one sentence per line* for the `md` files in the `/doc` and `/doc/$lng` subdirectories.
+
+####Check with [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer)
+
+This tool checks your files against a variety of coding standards, including PSR-2, and ouputs a report of all the standard violations.
+You can simply install it through PEAR: `pear install PHP_CodeSniffer`
+Once it is installed and available in your PATH, here's the command to run before committing your work:
+
+       $> phpcs --standard=PSR2 <file or directory>
+
+The output is a list of all the coding standards violations that you should fix before committing your work.
+Additionally, `phpcs` integrates with a few IDEs (Eclipse, Netbeans, PHPStorm...) so that you don't have to fiddle with the command line.
+
+####Fix with PHP Code Beautifier and Fixer (phpbcf) included in PHP Code Sniffer
+
+If you're getting a massive list of standards violations when running `phpcs`, it can be annoying to fix all the violations by hand.
+Thankfully, PHP Code Sniffer is shipped with an automatic code fixer that can take care of the tedious task for you.
+Here's the command to automatically fix the files you created/modified:
+
+       $> phpcbf --standard=PSR2 <file or directory>
+
+If the command-line tools `diff` and `patch` are unavailabe for you, `phpcbf` can use slightly slower PHP equivalents by using the `--no-patch` argument.
+
 ###Code documentation
 
 If you are interested in having the documentation of the Friendica code outside of the code files, you can use [Doxygen](http://doxygen.org) to generate it.
@@ -97,6 +130,7 @@ Ask us to find out whom to talk to about their experiences.
 Do not worry about cross-posting.
 
 ###Client software
+
 As Friendica is using a [Twitter/GNU Social compatible API](help/api) any of the clients for those platforms should work with Friendica as well.
 Furthermore there are several client projects, especially for use with Friendica.
 If you are interested in improving those clients, please contact the developers of the clients directly.