<?xml version='1.0' encoding="utf-8"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "docbook/dtd/xml/4.2/docbookx.dtd"> <book> <title>The Music Player Daemon - Developer's Manual</title> <chapter> <title>Introduction</title> <para> This is a guide for those who wish to hack on the MPD source code. MPD is an open project, and we are always happy about contributions. So far, more than 50 people have contributed patches. </para> <para> This document is work in progress. Most of it may be incomplete yet. Please help! </para> </chapter> <chapter> <title>Code Style</title> <itemizedlist> <listitem> <para> indent with tabs (width 8) </para> </listitem> <listitem> <para> don't write CPP when you can write C: use inline functions and enums instead of macros </para> </listitem> <listitem> <para> the code should be C99 compliant, and must compile with <application>GCC</application>; <application>clang</application> support is highly desirable </para> </listitem> <listitem> <para> C++ is ok (for integrating C++ only libraries), but it should be avoided </para> </listitem> <listitem> <para> Some example code: </para> <programlisting lang="C">static inline int foo(const char *abc, int xyz) { if (abc == NULL) { g_warning("Foo happened!\n"); return -1; } return xyz; } </programlisting> </listitem> </itemizedlist> </chapter> <chapter> <title>Hacking The Source</title> <para> Always write your code against the latest git: </para> <programlisting>git clone git://git.musicpd.org/master/mpd.git</programlisting> <para> Configure with the options <option>--enable-debug --enable-werror</option>. Enable as many plugins as possible, to be sure that you don't break any disabled code. </para> <para> Don't mix several changes in one single patch. Create a separate patch for every change. Tools like <application>stgit</application> help you with that. </para> </chapter> <chapter> <title>Submitting Patches</title> <para> Send your patches to the mailing list: musicpd-dev-team@lists.sourceforge.net </para> </chapter> </book>