Banshee is written mostly in C# using Gtk#. It is licensed under the MIT/X11 free/open source software license. When you contribute to Banshee, you keep your copyright, but all contributions are licensed under the MIT/X11 license.
Setting up Your Development Environment
To write code for Banshee, it's best if you have a copy of the latest code checked out from subversion. You'll need to install the build dependencies. On openSUSE you can do that with sudo zypper si -d banshee-1 and on Ubuntu with sudo apt-get build-dep banshee-1.
Building Banshee
Building is straight forward and familiar if you've ever built software on Linux before. We use the standard autotools suite for our build environment. Once you have satisfied all the build dependencies, you're ready to build:
$ cd banshee $ ./autogen.sh $ make $ make run
Using MonoDevelop
After following the previous steps and getting Banshee to build from the command line, we recommend you use MonoDevelop to find your way around Banshee's source tree. Even if you use another editor as your primary, having MonoDevelop open is very handy for finding where a class is declared and tracing a piece of code to its root. Particularly useful are:
- Search -> Go to [type or file]
- Right click on a variable or type and go to it's declaration, or find references
- Autocomplete - Get the properties and methods for an object by typing "object_name." then ctrl-[space bar]
Style Guidelines
Maintaining Banshee's code is easier when it all conforms to a single style guide. Please follow our guide (see HACKING in our toplevel checkout directory) for all patches.
ChangeLog Entry
Adding a ChangeLog entry helps us understand your patch and will remove a barrier to us committing it. Copy an existing ChangeLog entry, and then modify it for your patch.
Producing a Patch
Once you have changed some files, you can produce a patch by running svn diff > descriptive_name.patch from the toplevel directory (the one containing src/).
If you have added one or more new files in your patch, things are slightly more complicated. If you have a GNOME svn account, you can svn add the files before running the svn diff. Otherwise, you'll need to append the new files to the patch. For each new file, you'll need to run:
diff -u /dev/null relative/path/to/new/file >> descriptive_name.patch
Submitting Your Patch
If you have a patch that you would like committed to Banshee, the first step in the commit process is opening a bug in Banshee's bugzilla. You must describe the patch, including any implications it has (good or bad).
Attach the patch to the bug report. Ensure you select the proper version (which in almost all cases should probably be SVN Trunk) and the severity. If the patch adds a new feature, the severity is enhancement.
Once you have filed the bug, please alert the mailing list. However, do not send patches directly to the list. Also, please do not discuss the patch in detail on the mailing list. All patch discussion should take place through comments on the bug entry for the patch.
Everyone is encouraged to test and review others' patches and to give their feedback on the bug entry. After being sufficiently reviewed (including by at least one maintainer), the maintainer will commit the patch or ask you to commit it yourself.


