Merge branch 'issue/#2103-alt' of https://github.com/Hypolite/friendica into issue...
[friendica.git/.git] / doc / Developers-Intro.md
1 Where to get started to help improve Friendica?
2 ===============================================
3
4 * [Home](help)
5
6 Do you want to help us improve Friendica?
7 Here we have compiled some hints on how to get started and some tasks to help you choose.
8 A project like Friendica is the sum of many different contributions.
9 **Very different skills are required to make good software.
10 Some of them involve coding, others do not.**
11 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.
12 Whether you feel like an expert or like a newbie - join us with your ideas!
13
14 Contact us
15 ---
16
17 The discussion of Friendica development takes place in the following Friendica forums:
18
19 * The main [forum for Friendica development](https://helpers.pyxis.uberspace.de/profile/developers)
20 * The [forum for Friendica theme development](https://friendica.eu/profile/ftdevs)
21
22 Help other users
23 ---
24
25 Remember the questions you had when you first tried Friendica?
26 A good place to start can be to help new people find their way around Friendica in the [general support forum](https://helpers.pyxis.uberspace.de/profile/helpers).
27 Welcome them, answer their questions, point them to documentation or ping other helpers directly if you can't help but think you know who can.
28
29 Translation
30 ---
31
32 The documentation contains help on how to translate Friendica [at Transifex](/help/translations) where the UI is translated.
33 If you don't want to translate the UI, or it is already done to your satisfaction, you might want to work on the translation of the /help files?
34
35 Design
36 ---
37
38 Are you good at designing things?
39 If you have seen Friendica you probably have ideas to improve it, haven't you?
40
41 * If you would like to work with us on enhancing the user interface, please join the [UX Watchdogs forum](https://fc.oscp.info/profile/ux-watchdogs)
42 * Make plans for a better Friendica interface design and share them with us.
43 * Tell us if you are able to realize your ideas or what kind of help you need.
44 We can't promise we have the right skills in the group but we'll try.
45 * Choose a thing to start with, e.g. work on the icon set of your favorite theme
46
47 Programming
48 ---
49
50 ###Coding standards
51
52 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/).
53 Don't worry, you don't have to know by heart the PSR-2 coding standards to start contributing to Friendica.
54 Before comitting your work, you can use the PHP Coding Standard Fixer located in the `util` folder this way:
55
56         $> php util/php-cs-fixer.phar fix <file or folder> --level=psr2
57
58 Here's a few primers if you are new to the PSR-2 coding standards:
59  * Indentation is 4 spaces, period.
60  * 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).
61  * Operators are wrapped by spaces, e.g. `$var === true`, `$var = 1 + 2` and `'string' . $concat . 'enation'`
62  * Braces are mandatory in conditions
63  * No closing PHP tag
64  * No trailing spaces
65
66 ###Code documentation
67
68 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.
69 The configuration file for Doxygen is located in the `util` directory of the project sources.
70 Run
71
72     $> doxygen util/Doxyfile
73
74 to generate the files which will be located in the `doc/html` subdirectory in the Friendica directory.
75 You can browse these files with any browser.
76
77 If you find missing documentation, don't hesitate to contact us and write it down to enhance the code documentation.
78
79 ###Issues
80
81 Have a look at our [issue tracker](https://github.com/friendica/friendica) on github!
82
83  * Try to reproduce a bug that needs more inquiries and write down what you find out.
84  * If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed.
85  * Fix a bug if you can. Please make the pull request against the *develop* branch of the repository.
86  * There is a *Junior Job* label for issues we think might be a good point to start with.
87    But you don't have to limit yourself to those issues.
88
89 ###Web interface
90
91 The thing many people want most is a better interface, preferably a responsive Friendica theme.
92 This is a piece of work!
93 If you want to get involved here:
94
95 * Look at the first steps that were made (e.g. the clean theme).
96 Ask us to find out whom to talk to about their experiences.
97 * Talk to design people if you know any.
98 * Let us know about your plans [in the dev forum](https://helpers.pyxis.uberspace.de/profile/developers) and the [theme developer forum](https://friendica.eu/profile/ftdevs).
99 Do not worry about cross-posting.
100
101 ###Client software
102 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.
103 Furthermore there are several client projects, especially for use with Friendica.
104 If you are interested in improving those clients, please contact the developers of the clients directly.
105
106 * Android / CynogenMod: **Friendica for Android** [src](https://github.com/max-weller/friendica-for-android), [homepage](http://friendica.android.max-weller.de/) - abandoned
107 * iOS: *currently no client*
108 * SailfishOS: **Friendiy** [src](https://kirgroup.com/projects/fabrixxm/harbour-friendly) - developed by [Fabio](https://kirgroup.com/profile/fabrixxm/?tab=profile)
109 * Windows: **Friendica Mobile** for Windows versions [before 8.1](http://windowsphone.com/s?appid=e3257730-c9cf-4935-9620-5261e3505c67) and [Windows 10](https://www.microsoft.com/store/apps/9nblggh0fhmn) - developed by [Gerhard Seeber](http://mozartweg.dyndns.org/friendica/profile/gerhard/?tab=profile)