====== How to get started contributing code ====== **So you are a developer, and you want to contribute code to the pluck cms project? Great! This guide will explain all you need to know about how pluck is developed.** ===== First: communicating with the developers===== Development on pluck is mainly coordinated on the [[http://www.pluck-cms.org/forum/viewforum.php?id=12|pluck development forum]]. If you are interested in helping out with pluck, the forum is a good place to start. You can use the list to ask for help with development issues, discuss new ideas and talk about other development-related issues. ===== Development branches on Launchpad ===== For pluck development, pluck developers collaborate on [[https://launchpad.net|Launchpad]] when developing code. You can find the Launchpad-page for pluck [[https://launchpad.net/pluck-cms/|here]]. ==== Introduction into Version Control Systems ==== Launchpad uses the Version Control System (VCS) **Bazaar**. This system allows all developers to work on code locally on their own system. When the code is ready, they can //commit// (send in) the code. The code is then updated by Bazaar. Other developers update their //checkout// first before they start working on the code, downloading the changes other developers made. Pluck developers use multiple //branches// to organize the code: for every release series (for example, 4.5, 4.6 or 4.7) a branch is created. The branches of already released series are marked //mature//, and the branch of the upcoming series (the //development branch//, or //trunk branch//) is marked //development//. You can find the pluck branches on [[https://code.launchpad.net/pluck-cms|this Launchpad-page]]. ===== Getting started on Launchpad ===== To be able to submit code on Launchpad, you will first need to [[https://launchpad.net/+login|create an account]], and [[https://launchpad.net/people/+me/+editsshkeys|add a SSH-key to your account]]. You also need to have [[http://bazaar-vcs.org/|Bazaar]] installed on your system. ==== Checking out the development branch ==== Checking out the development branch should be very easy now, using the following command: bzr branch lp:pluck-cms ==== Creating your own branch ==== You have to realize that only members of the development team have direct access to the main development branches. However, Launchpad makes it very easy for everyone to submit their code to a project by allowing //user branches//. These are branches stored on your own Launchpad-space, and where only you have direct access to. Now, you can push your own copy of the pluck branch to your Launchpad-space by using this command (replace //john.doe// with your own username): bzr push bzr+ssh://john.doe@bazaar.launchpad.net/~john.doe/pluck-cms/name-of-the-branch You can choose a short name for your branch by changing //name-of-the-branch// (don't use spaces). ==== Committing changes ==== Imagine that you now make some changes in the code, for example fixing a bug or implementing a patch. When you're done, you can commit (send the code to Launchpad) by using this command: bzr commit ==== Notifying other developers ==== Your branch for pluck-cms will be listed on the [[https://code.launchpad.net/pluck-cms|pluck Launchpad-page]]. This makes it very easy for other developers to see your changes. However, it's still a good idea to notify other developers about your patch on the [[http://www.pluck-cms.org/forum/viewforum.php?id=12|development forum]]. ==== Keeping your branch up-to-date ==== It's important to keep your branch up-to-date with the main development branch, to prevent working with/on old code. You can update your branch by using this command: bzr merge You will then need to commit the changes to your branch: bzr commit ===== Conclusion ===== If you have no experience with Version Control Systems, all the information on this page may overwhelm you. Don't let this stop you! When you get stuck somewhere, don't hesitate to ask for support on the [[http://www.pluck-cms.org/forum/viewforum.php?id=12|development forum]]. ===== Further reading ===== * [[http://doc.bazaar-vcs.org/bzr.dev/en/user-guide/index.html|Bazaar User Guide]] * [[http://doc.bazaar-vcs.org/bzr.dev/en/mini-tutorial/index.html|Bazaar in five minutes]]