It would be a great privilege and experience to contribute to OrangeHRM as a developer. Below is a guide for you to get started.
Skills Required to Develop in OrangeHRM
Below is a list of that would be needed to work as an OrangeHRM developer. You don't need to have an in-depth knowledge in each. However it has been mentioned where a sound knowledge is needed.
- PHP - The whole backend of OrangeHRM has been written in PHP. Therefore having a sound knowledge in PHP is essential. Follow PHP Coding Conventions for the expected standard.
- MySQL - OrangeHRM stores data in a MySQL database. In addition to basic SQL skills, knowing frequently used MySQL specific functionalities can be useful.
- HTML - Knowing standard HTML is needed for dealing with UIs in OrangeHRM. Follow HTML Coding Conventions for the expected standard.
- CSS - UIs in OrangeHRM should follow XHTML standards and therefore styling should be done using CSS.
- Ajax - Some parts of OrangeHRM have been made more interactive using Ajax. OrangeHRM uses XAJAX library for making AJAX calls easy.
Software Engineering Knowledge
- OOP Concepts - OrangeHRM adheres to Object Oriented Programming and therefore knowing basic OOP concepts is required.
- Test Driven Development - OrangeHRM keeps code integrity and quality with unit tests written on PHPUnit unit test framework. Knowing basics of Tests Driven Development would be necessary to deal with unit tests in OrangeHRM.
- MVC Architecture - OrangeHRM is based on a custom made MVC architecture. Knowing basics of MVC and trying to understand the MVC in OrangeHRM can greatly familiarize you with OrangeHRM code base.
- Design Patterns - By knowing design patterns, you can improve the code quality in OrangeHRM.
- Database Design - OrangeHRM database contains 80+ data tables. You need to know basics of database design to understand the interaction among these and to make necessary database changes that occur in your development. A large model of the OrangeHRM database is available.
- Refactoring - Although OrangeHRM employs strict coding standards at present, same standards hadn't been employed at the beginning of OrangeHRM. Therefore there is room for improving OrangeHRM code base. Knowing basics of refactoring can help you in this attempt. One main refactoring that would come in the future is Modularizing OrangeHRM with Kohana Framework.
- SVN - OrangeHRM uses Subversion (SVN) as the version control system. Knowing basic SVN commands would be needed to continue development in OrangeHRM.
- PHPUnit - As the Unit Test framework, OrangeHRM uses PHPUnit. Knowing basic functionalities of PHPUnit would be necessary when you work with unit tests in OrangeHRM
- Phing - Phing is the build tool used in OrangeHRM development. This is mainly used in making releases and product wide unit test related tasks.
- ReviewBoard - ReviewBoard is the code review tool used in OrangeHRM. Every new code contribution should undergo a review by a senior developer. If the quality of your code contributions reach to a good level then you can earn SVN commit right.
OS & Utilities Knowledge
- Linux - Most development tools are compatible with Linux and many developers are working on Linux based operating systems. So, you would get a better technical assistance if you work on a Linux based operating system.
- Apache - You would need a basic understanding of Apache to set OrangeHRM in its web folder, to set some configuration settings, to see error logs etc.
How to Contribute Code to OrangeHRM
- Let us know about you - Let us know little bit of your background (email to firstname.lastname@example.org), especially the information listed here. Then we will guide you on next steps.
- Contributor agreement - OrangeHRM has a Contributor License Agreement (CLA) for accepting code from community. First you have to sign it and send us a copy.
- Subscribe to OrangeHRM development mailing list at Source Forge - You can subscribe at. This is where all the develoment related tasks are communicated. When you send patches, remember to send a copy to email@example.com.
- Learn development process - Get familiar with OrangeHRM development process. You would going through it once you start the development.
- Check out development articles - We have got a bunch of development related articles covering many aspects of OrangeHRM as well as the skills mentioned in Skills Required to Develop in OrangeHRM.
Developers do not immediately get commit rights to the SourceForge SVN. Initially the code submissions should be over email to the OrangeHRM development mailing list.
The lead developers will review the code and if it passes the expected levels of quality, commit the code to the SourceForge SVN. If the code is not at the required level or if there are other issues, it will have to go through a few iterations of improvements before the code is committed to SVN. If a developer consistently provides quality code that is integrated to the core product over time, he/she will get commit rights to SourceForge SVN and will become a core member of the community development team.
A contributor can decide features or bug fixes to contribute or request tasks from the backlog of pending tasks that OrangeHRM team maintains. The latter approach is better as it will have a higher probability of the code getting accepted.