====== How to write a new module ====== As there is no code at the moment, there is still no information available how to actually **write** a module. But at least it is avaliable how to write documentation/drafts for a module, as you can see below. ===== Write documentation ===== Add a new page for the module here to wiki. Modules each have their own namespace, because each module can be very different to others, so it's better to keep them separated. So e.g. the base description of the ''Core'' is located at [[en:dev:modules:core|en:dev:modules:core]]. All pages that belong to the core module are in the ''en:dev:modules:core:'' namespace. * Every module should provide information about dependencies to other modules, a detailed (technical) description what is the **purpose** of the module, which **responsibilities** it has and how it is **structured**. * Every module has a ''draft'' page, where considerations and software design happens in the first place. For e.g. the core module this is [[en:dev:modules:core:draft|en:dev:modules:core:draft]]. * A ''spec'' link should point to a page where all the technical information is assembled, everything you need to understand the module. * The page should also contain a link to the API of the module, which should be available automatically after the code is properly documented using sphinx/epydoc. FIXME Maybe Spec/API should be together, using Sphinx... If you set up a new module page (by creating the new page ''en:dev:modules:mymodule''), it is created using a template and prefilled with the above links as far as possible. The ''stub'' tag is automatically applied to the new page to indicate that it is far from complete. If you have completed the page, please remove the ''stub'' tag from the page.