====== DokuWiki Development ====== You are welcome to contribute to DokuWiki and join the development. What you want to contribute is of course up to you -- you should scratch your own itches first. If you need some ideas of what is missing you should have a look at the [[bugs|bugtracker]] or on the [[https://www.dokuwiki.org/devel:ideas|idea pages]]. You could also consider [[https://www.dokuwiki.org/devel:adoption|adopting a plugin or template]]. Begin with reading the [[#Getting Started]] chapter. Working together is more fun. The DokuWiki community needs a lot of different skills and is organized in [[teams]]. Please feel free to join one or just hang around the [[mailinglist]] and [[irc|irc channel]] for development talk. There are also [[https://www.dokuwiki.org/devel:irc_meetups|regular IRC meetups]], [[https://www.dokuwiki.org/devel:bughunting|bughunting weekends]] where eh, bugs are fixed, and sometimes developers meet IRL at DokuWiki [[https://www.dokuwiki.org/devel:hackfest]]. DokuWiki was a mentoring organization for 2011's [[https://www.dokuwiki.org/devel:gsoc|Google Summer of Code]]. When you are interested in getting involved with DokuWiki development via this kind of initiatives be sure you come in contact with us. ===== Getting Started ===== - [[https://www.dokuwiki.org/devel:Git]] -- Obtaining the code and working with Git((the VCS used for DokuWiki development)) - [[https://www.dokuwiki.org/devel:github|Working with Github Pull Requests]] - [[https://www.dokuwiki.org/devel:coding_style|Coding Style]] - Editor Setup - [[https://www.dokuwiki.org/devel:VIM]] - [[https://www.dokuwiki.org/devel:IntelliJ Idea]] (or PHPStorm) - [[https://www.dokuwiki.org/devel:Security]] - [[https://www.dokuwiki.org/devel:unittesting|Unit Testing]] - [[https://www.dokuwiki.org/devel:Patches]] - [[https://www.dokuwiki.org/devel:Debugging]] ===== The Development Manual ===== - [[https://www.dokuwiki.org/devel:Overview]], walk through of how a page request is served - [[https://www.dokuwiki.org/devel:dirlayout|Directory Layout]] - [[https://www.dokuwiki.org/devel:Environment]] -- global variables and defines * Accessing [[https://www.dokuwiki.org/devel:request_vars|Request Variables]] * [[https://www.dokuwiki.org/devel:Preload]] - [[https://www.dokuwiki.org/devel:Callgraph]] - [[https://www.dokuwiki.org/devel:Locking]] - [[https://www.dokuwiki.org/devel:Action Modes]] - [[https://www.dokuwiki.org/devel:caching|Caching facilities]] - [[https://www.dokuwiki.org/devel:Parser]] - [[https://www.dokuwiki.org/devel:Metadata]] - [[https://www.dokuwiki.org/devel:fulltextindex|Fulltext Index]] - [[https://www.dokuwiki.org/devel:Plugins]] - [[https://www.dokuwiki.org/devel:Plugin File Structure]] - [[https://www.dokuwiki.org/devel:Common Plugin Functions]] - [[https://www.dokuwiki.org/devel:Action Plugins]] * [[https://www.dokuwiki.org/devel:events|Event System]] * [[https://www.dokuwiki.org/devel:events_list|Events Overview]] * [[https://www.dokuwiki.org/devel:event_handlers|Event Handlers]] * Examples of [[https://www.dokuwiki.org/devel:event handlers code]] - [[https://www.dokuwiki.org/devel:Syntax Plugins]] - [[https://www.dokuwiki.org/devel:Helper Plugins]] - [[https://www.dokuwiki.org/devel:Renderer Plugins]] - [[https://www.dokuwiki.org/devel:Admin Plugins]] - [[https://www.dokuwiki.org/devel:Remote Plugins]] - [[https://www.dokuwiki.org/devel:Auth Plugins]] - [[https://www.dokuwiki.org/devel:unittesting#plugin_and_template_tests|Plugin and Template Unittests]] - [[https://www.dokuwiki.org/devel:toolbar|The Toolbar]] - [[https://www.dokuwiki.org/devel:Plugin Programming Tips]] - [[https://www.dokuwiki.org/devel:Templates]] - [[template:Starter]] template -- Basic building block for new templates - [[https://www.dokuwiki.org/devel:style.ini|style.ini]] -- CSS: loading styles and setting variables - [[https://www.dokuwiki.org/devel:Configuration]] - [[https://www.dokuwiki.org/devel:Localization]] - [[https://www.dokuwiki.org/devel:CSS]] - [[https://www.dokuwiki.org/devel:LESS]] preprocessor - [[https://www.dokuwiki.org/devel:JavaScript]] (jQuery, jQueryUI) - [[https://www.dokuwiki.org/devel:jqueryfaq|jQuery FAQ for Plugin Developers]] - [[https://www.dokuwiki.org/devel:Authentication backends]] - Internal Libraries - [[https://www.dokuwiki.org/devel:utf-8|UTF-8 String handling]] - [[https://www.dokuwiki.org/devel:request_vars|Request (GET/POST) variable handling]] - [[https://www.dokuwiki.org/devel:mail|E-Mail Sending]] - [[https://www.dokuwiki.org/devel:compression|Zip and Tgz compression/Decompression]] - [[https://www.dokuwiki.org/devel:httpclient|HTTP Client Library]] - [[https://www.dokuwiki.org/devel:simplepie|RSS Parser]] - [[https://www.dokuwiki.org/devel:json|JSON Parser/Writer]] - [[https://www.dokuwiki.org/devel:geshi|GeSHi Syntax Highlighting]] - [[https://www.dokuwiki.org/devel:custom webservices|Web Services]] - [[https://www.dokuwiki.org/devel:XMLRPC|XML-RPC]] - Further Resources - [[http://xref.dokuwiki.org/reference/dokuwiki/|Development API Reference]]((built daily)) - [[https://www.dokuwiki.org/devel:snapshots|Daily Snapshots]] - [[https://www.dokuwiki.org/devel:releases|Developers' Release notes]] - [[http://github.com/splitbrain/dokuwiki|Git Webinterface]] for browsing the source and patches - [[https://www.ohloh.net/p/dokuwiki/contributors|Hall of Fame]] -- all DokuWiki contributors ===== Development Team Guides ===== - [[https://www.dokuwiki.org/devel:release_process|Release process and information on building a release]] ===== Ideas and brainstorms ===== * Planning an external [[https://www.dokuwiki.org/devel:Security Audit]] of DokuWiki * [[https://www.dokuwiki.org/devel:Ideas|Ideas with some concepting]] that could be picked up and implemented by (new) DokuWiki developers. * Plans for more radical [[https://www.dokuwiki.org/devel:Template changes]] * DokuWiki [[https://www.dokuwiki.org/devel:Refactoring]] * [[https://www.dokuwiki.org/devel:Farm]] -- ideas for [[tips:farm|tips:farm]] * Some remarks on [[https://www.dokuwiki.org/devel:Memory footprint reduction]] * Brainstorm about [[https://www.dokuwiki.org/devel:scalability]], [[https://www.dokuwiki.org/devel:scalability_proposal]] * Brainstorm [[https://www.dokuwiki.org/devel:Tagline]] for dokuwiki.org