# Developer Information

This document contains various information for developers or anyone interested in contributing to NetSurf.

- Source control
- Compiling
- Source documentation
- Communication
- Translations

Last updated 11 November 2007

## Source control

The source is kept in a Subversion repository. To check the source out use the command:

`$ svn checkout svn://svn.netsurf-browser.org/trunk/netsurf`

You can also browse the source via the web interface.

Recent changes can be seen on the development page. An an RSS feed of recent changes is also provided by CIA. All checkins are reported on the Commits mailing list.

Contact James to get write access to the SVN repository.

## Compiling

The recommended compiler is GCC. A guide to building NetSurf on RISC OS is available, as are instructions for building the GTK version. NetSurf can also be cross-compiled for RISC OS using GCCSDK.

The autobuilder compiles NetSurf every 15 minutes if changes have been checked into SVN.

A debug version of NetSurf can be built. This is command-line only and does not include any GUI code. It runs natively on Linux so can be debugged and checked using gdb, efence, valgrind, etc.

### Dependencies

In addition to the compiler, NetSurf requires a number of additional tools to be available. These are enumerated below. Additionally, the libraries which NetSurf uses are also listed

#### Tools

- Lemon parser generator (http://www.hwaci.com/sw/lemon/)
- re2c lexer (http://re2c.org/)

#### Libraries

- cAres & cURL (http://curl.haxx.se/libcurl/)
- IJG JPEG library (http://www.ijg.org/)
- MNG decoding library (http://www.libmng.com/)
- OpenSSL (http://www.openssl.org/)
- libXML 2 (http://www.xmlsoft.org/)
- Zlib (http://www.zlib.org)

##### RISC OS specific libraries

- OSLib 6.80 or later (http://ro-oslib.sf.net)
- Pencil (http://source.netsurf-browser.org/trunk/pencil/)
- RUfl (http://zamez.org/rufl)

## Source documentation

See the Docs directory for source code documentation.

## Communication

The main method of communication between the developers is the `#netsurf` IRC channel.

The developers' mailing list is also used for less transient communication.

## Translations

Translations of NetSurf to other languages are welcome. No programming knowledge is required, just the ability to use a template editor and a text editor. Please see the translations page for more information.