====== Instructions for Developers and Contributors ====== ===== Contributing to Mira ===== ==== Viewing Mira's Source Code ==== You can view the [[http://bazaar.launchpad.net/~mira-dev/mira/trunk/files|source code]] in Mira's Bazaar repository (hosted by Launchpad) using our web-based Bazaar browsing system, powered by loggerhead. ==== Setting Up Your Programming Environment ==== If you wish to build Mira from its source code and perhaps work on it, you will need to set up your programming environment accordingly. Please see our instructions on which software and libraries to install for either [[ENVIRONMENT_SETUP#linux|Linux]], [[ENVIRONMENT_SETUP#mac-os-x|Mac OS X]] or [[ENVIRONMENT_SETUP#windows|Windows]]. ==== Getting Mira ==== To download the latest version of Mira you will need to use a program called Bazaar (bzr). If this program is not already installed and the instructions below fail for you, please see our guide on [[development:instructions:installbzr|installing Bazaar]]. If you are using Linux or a UNIX-based Operating System, run the following commands from a terminal window: mkdir ~/mira cd ~/mira bzr branch lp:mira/trunk If you don't want to check out the whole revision history (and make the checkout //much// faster) you can use the following bzr command instead: bzr co --lightweight lp:mira/trunk ==== Building Mira ==== The build process can get quite messy because it creates a lot of files, so we recommend creating separate build directories outside the Mira branch, such as the following: mkdir ~/mira/build-client/ mkdir ~/mira/build-server/ Then copy the respective files to each directory: cp -R ~/mira/trunk/mira-client/* ~/mira/build-client/ cp -R ~/mira/trunk/mira-server/* ~/mira/build-server/ Now, to build and run the latest version of the Mira Client, you should run: cd ~/mira/build-client/ cmake ./ make ./bin/mira-client Or, to build the latest version of the Mira Server: cd ~/mira/build-server/ cmake ./ make mira make sudo cp bin/libmira.so bin/libFiles-utility.so /usr/local/lib/ sudo ldconfig You can now create the Mira Server running directory, change its permissions and then run Mira Server: sudo mkdir /opt/mira sudo chown yourUserName:yourUserGroup /opt/mira ./bin/mira-server ==== Testing Mira ==== Please read our [[development:instructions:testing|testing process instructions]] for information on how Mira's developers conduct tests on the project's code. To check the current list of bugs, please see our [[https://bugs.launchpad.net/mira|bug tracker]]. To **submit a bug report**, please first check that the bug you wish to submit //is not [[https://bugs.launchpad.net/mira/+bugs|already known]]// and, if it is not, then we would appreciate it if you could [[https://bugs.launchpad.net/mira/+filebug|report it]] in as much detail as possible. ==== Hacking on Mira ==== If you wish to contribute code or patches to Mira's **client or server** you must first complete and submit our [[contributor_licence|Individual Contributor Licence Agreement]] form. This does **not** apply to the development of Mira Utilities, the documentation for which can be found [[:utilities|here]]. Once you have completed this form, you will be granted commit access to Mira's repository and be able to check in patches and code. Before you can push your changes to Mira's repository, you will need to configure Bazaar and your Launchpad account appropriately. If you haven't already done so, visit [[https://launchpad.net/|Launchpad]] and create an account. Once you have done that, you will need to create an SSH key pair (see [[https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair|instructions for Linux and Windows]], or [[http://wiki.openlp.org/Configuring_SSH_Keys_on_Linux_and_Mac_OS_X|for Mac OS X]]) to use with Launchpad - this will be used to secure your Bazaar connection to the Launchpad server. Finally, make sure Bazaar knows who you are by running the following commands (make sure to replace the details with your own): bzr whoami 'My Name ' bzr launchpad-login yourLaunchpadUsername You are now ready to commit your changes to Mira's repository. For more information, please read the [[http://doc.bazaar-vcs.org/latest/en/tutorials/using_bazaar_with_launchpad.html|Using Bazaar with Launchpad]] tutorial or the [[development:bazaartechniques|Useful Bazaar Techniques for Developers]] page. ==== Coding Standards ==== Mira's developers follow a selection of coding guidelines in order to maintain consistency throughout the source code. If you wish to contribute to Mira - and would like us to merge your contribution with the project's code as soon as possible - it is thoroughly advisable to follow our coding standards, whose text is available [[CODING_STANDARDS|here]]. ===== Communicating with the Developer Community ===== ==== Internet Relay Chat (IRC) Channel ==== Mira has registered the [[irc://irc.freenode.net/mira|#mira]] channel on the [[http://freenode.net|FreeNode.net]] network. To connect to the network, use an IRC client such as [[http://xchat.org|xChat]] (Linux), [[http://mirc.com|mIRC]] (Windows) or [[http://colloquy.info|Colloquy]] (Mac OS X). If you would like to discuss some code which you have written, or perhaps an aspect of Mira's development or a feature which you would like to see implemented in Mira then please do not hesistate to [[irc://irc.freenode.net/mira|join our IRC channel]]! We have [[:development:communication|scheduled IRC sessions]] to discuss certain development topics. These sessions are all [[:development:communication#archives|archived]] for future reference. ==== Mailing Lists ==== Another discussion medium which some prefer to the forum is Mira's development mailing list, and you'll probably find that most of the active discussions are conducted on the mailing list but the final decisions are announced on the discussion forums. To subscribe to Mira's development mailing list, please visit this website and follow the instructions: [[https://lists.sourceforge.net/lists/listinfo/mira-development|Mira-Development mailing list]] You can find a complete, interactive archive of Mira's development mailing list on Gmane.org: [[http://dir.gmane.org/gmane.comp.groupware.mira.devel|gmane.comp.groupware.mira.devel mailing list archive]] If, on the other hand, you would just like to hear **announcements** when a new version of Mira is announced or a milestone is achieved, please subscribe to [[http://miragroupware.org/notify|Mira's Notification List]] instead. ==== Skype ==== Our developers also use the proprietary Voice over IP and Instant Messaging client [[http://skype.com|Skype]] from time to time to have conference calls to discuss features which all of the developers must be absolutely clear about, or just to have a casual chat whether the topic of focus is Mira or not. We also [[:development:communication#archives|archive our notes]] from the conferences for future reference.