'''Getting started in developing for MoinMoin'''. ''If you learn something new when developing for MoinMoin, consider adding your newly gained know-how to these pages and thus share it with your fellow developers.'' If you want to help coding you should learn Python: PythonInfo:BeginnersGuide. You should learn at least the basics on the development pages. Install and get used to Mercurial (see MoinDev/MercurialGuide) and play with it. Small patches are always welcome! If you just want to contribute an idea go to FeatureRequests. If you want to report a bug take a look at MoinMoinBugs. == Where to go from here? == You should start with your interests and find out where you think you can contribute. If you are good in CSS than maybe you rather like to help in MoinDev/ThemeDevelopment. Or if you like to do translation go to [[MoinDev/Translation]]. To get started understanding how things work in MoinMoin maybe first try to understand the configs. Look at the file `MoinMoin/multiconfig.py`. You find a lot of default config settings in there. Go to HelpForDevelopers. If you want to understand, how MoinMoin works, you should have a look on [[http://docs.moinmo.in|docs.moinmo.in]] and crawl through the code. Maybe you could also start a standalone wiki and debug it through it in a IDE like eclipse or komodo. You should visit both IRC channels regulary. See MoinMoinChat. == Hints == 1. '''Don't go too fast''' - you will not be able to understand all at once. 1. '''Decide what you want to do''' - Don't try to write from scratch. Start at one corner and try to understand what is going 1. '''Learn from documentation and code''' - Read MoinDev and linked pages and read what is in the code. 1. '''Learn from communicating''' - If you do not understand some things, ask other developers through wiki or MoinMoinChat. Follow the discussions. Learn from the mistakes of others. 1. '''Fix small things first''' - If you find some small bugs that can be corrected by small patches. Try this first and submit them first via the wiki (maybe MoinMoinPatch or on a FeatureRequests or MoinMoinBugs page). You can then get feedback for your work. 1. '''Experiment on your own branches''' - If you have installed and used [[MoinDev/MercurialGuide|Mercurial]] then you get make many different branches your self for experimenting with this and that. 1. '''Create plugins if possible''' (explained below) 1. '''Have fun''' - If you don't enjoy what you do, then you will never stay at it. <<Anchor(createplugins)>> == Create Extensions if possible == MoinMoin has very powerful extension system - use it. If you can add the feature or change the behavior by an extension, write an extension and publish it on the [[CategoryMarket|approriate market]]. Extensions have important advantages: * Your code runs in the current version of moin with no patching, it is easier to upgrade your system later. * Other people run your code NOW, find bugs, suggest important improvements, maybe even fix stuff - it's free software! * When your code is mature and tested in the real world, there is a good chance it will be included in the distribution, or if it can be implemented better merged into the core code. See also MoinMoinExtensions. ----