====== Contributing code ====== Want to develop for Evergreen or OpenSRF? Great! To get started, please take a look at * [[:contributing|the overview of how to contribute to Evergreen, covering tips, techniques, and procedures for getting your code and documentation accepted]] * [[dev:code_repositories| version control repositories for code and documentation]] * [[dev:new_developer_wishlist|new developer wishlist]] where a group of us are identifying what documentation needs to be developed to support new developers(some of the drafts of documentation being developed are here too) * [[dev:contributing_code_FAQ | Contributing Code FAQs]] For more technical details, read on. ===== Languages ===== Evergreen is an OpenSRF application, so in principle you can write an OpenSRF binding for any language you want (although we will be both seriously impressed and laugh at you if you create a BASIC binding). However, in practice, Evergreen makes use of just a few languages, and for the sake of maintaining your code and understanding it, please consider sticking with one of the following. ^ Language ^ Use ^ | Perl | business logic; the vast majority of OpenSRF methods used by Evergreen are written in Perl. Note that this is Perl 5, not Perl 6. | | JavaScript | front end; important for both the staff client and the public catalog | | PL/pgSQL and PL/Perl | search code and some business logic | | HTML and CSS | public catalog and staff client | Languages that are used for specific purposes include ^ Language ^ Use ^ | C | core OpenSRF code; can be considered for middle-layer OpenSRF services if speed is important enough | | XUL | staff client layout | Languages that are supported (partially or wholly) by OpenSRF but are not really in use by Evergreen include Java and Python. ===== Frameworks ===== Evergreen makes use of the following frameworks: ^ Name ^ Language ^ Use ^ Notes ^ | Dojo | JavaScript | staff and public interfaces | Currently we use Dojo 1.3; help to upgrade us to 1.6 1.7 (or whatever is current when you read this) would be [[zzz_archive:dev:summer_of_coding:2015:ideas|greatly appreciated]] |