# The Music Player Daemon - Developer's Manual

## Introduction

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.

This document is work in progress. Most of it may be incomplete yet. Please help!

## Code Style

- indent with tabs (width 8)

- don't write CPP when you can write C: use inline functions and enums instead of macros

- the code should be C99 compliant, and must compile with GCC; clang support is highly desirable

- C++ is ok (for integrating C++ only libraries), but it should be avoided

- Some example code:

      static inline int
      foo(const char *abc, int xyz)
      {
              if (abc == NULL) {
                      g_warning("Foo happened!\n");
                      return -1;
              }

              return xyz;
      }

## Hacking The Source

Always write your code against the latest git:

    git clone git://git.musicpd.org/master/mpd.git

Configure with the options `--enable-debug --enable-werror`. Enable as many plugins as possible, to be sure that you don't break any disabled code.

Don't mix several changes in one single patch. Create a separate patch for every change. Tools like stgit help you with that.

## Submitting Patches

Send your patches to the mailing list: musicpd-dev-team@lists.sourceforge.net