====== 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 [[devel:ideas|idea pages]]. You could also consider [[devel:adoption|adopting a plugin or template]]. Begin by reading the [[#Getting Started]] chapter. ===== Getting Started ===== - [[devel:Git]] -- Obtaining the code and working with Git((the VCS used for DokuWiki development)) - [[devel:github|Working with Github Pull Requests]] - [[devel:coding_style|Coding Style]] - [[devel:Composer]] - Editor Setup - [[devel:VIM]] - [[devel:IntelliJ Idea]] (or [[https://www.jetbrains.com/phpstorm/|PhpStorm]]) {{http://www.jetbrains.com/img/logos/logo_intellij_idea.png?80&nolink&recache}} - [[devel:Security]] - Testing - [[devel:unittesting|Unit Testing]] - [[devel:browserstack|BrowserStack]] browser testing {{browserstack-logo.png?100&nolink}} - [[devel:Patches]] - [[devel:Debugging]] ===== The Development Manual ===== - [[devel:Overview]], walk through of how a page request is served - [[devel:dirlayout|Directory Layout]] - [[devel:Environment]] -- global variables and defines * Accessing [[devel:request_vars|Request Variables]] * [[devel:Session handling]] * [[devel:Preload]] - [[devel:Autoloader]] - [[devel:Callgraph]] - [[devel:Logging]] - [[devel:Locking]] - [[devel:Action Modes]] - [[devel:Authentication]] - [[devel:caching|Caching facilities]] - [[devel:Parser]] - [[devel:Metadata]] - [[devel:fulltextindex|Fulltext Index]] - [[devel:Plugins]] - [[devel:Plugin File Structure]] - [[devel:Common Plugin Functions]] - [[devel:Action Plugins]] * [[devel:events|Event System]] * [[devel:events_list|Events Overview]] * [[devel:event_handlers|Event Handlers]] * Examples of [[devel:event handlers code]] - [[devel:Syntax Plugins]] - [[devel:Helper Plugins]] - [[devel:Renderer Plugins]] - [[devel:Admin Plugins]] - [[devel:Remote Plugins]] - [[devel:Auth Plugins]] - [[devel:CLI Plugins]] - [[devel:unittesting#plugin_and_template_tests|Plugin and Template Unittests]] - [[devel:toolbar|The Toolbar]] - [[devel:Plugin Programming Tips]] - [[devel:Templates]] - [[template:Starter]] template -- Basic building block for new templates - [[devel:Menus]] - [[devel:style.ini|style.ini]] -- CSS: loading styles and setting variables - [[devel:Configuration]] - [[devel:Localization]] - [[devel:CSS]] - [[devel:LESS]] preprocessor - [[devel:JavaScript]] (jQuery, jQueryUI) - [[devel:jqueryfaq|jQuery FAQ for Plugin Developers]] - [[devel:SVG]] - Internal Libraries - [[devel:utf-8|UTF-8 String handling]] - [[devel:request_vars|Request (GET/POST) variable handling]] - [[devel:mail|E-Mail Sending]] - [[devel:httpclient|HTTP Client Library]] - [[devel:simplepie|RSS Parser]] - [[devel:form|Forms]] - Composer Libraries - [[devel:geshi|GeSHi Syntax Highlighting]] - [[devel:phparchive|Zip and Tgz Compression/Decompression]] - [[devel:Remote API]] - [[devel:XMLRPC|XML-RPC]] - [[devel:JSONRPC|JSON-RPC]] - Further Resources - [[https://codesearch.dokuwiki.org/xref/dokuwiki/|Development API Reference]]((built daily)) - [[devel:snapshots|Daily Snapshots]] - [[devel:releases|Developers' Release notes]] - [[https://github.com/dokuwiki/dokuwiki|Git Webinterface]] for browsing the source and patches - [[https://www.openhub.net/p/dokuwiki/contributors|Hall of Fame]] -- all DokuWiki contributors ===== Development Team Guides ===== - [[devel:coredevs|How to become a Core Developer]] - [[devel:release_process|Release process and information on building a release]] ===== Ideas and brainstorms ===== * Planning an external [[devel:Security Audit]] of DokuWiki * [[devel:Ideas|Ideas with some concepting]] that could be picked up and implemented by (new) DokuWiki developers. * Plans for more radical [[devel:Template changes]] * DokuWiki [[devel:Refactoring]] * [[devel:Farm]] - ideas for [[tips:farm|tips:farm]] * Some remarks on [[devel:Memory footprint reduction]] * Brainstorm about [[devel:scalability]], [[devel:scalability_proposal]] * Brainstorm [[devel:Tagline]] for dokuwiki.org