Developers
Math.Net is built by an enthousiastic group of developers in their spare time. Although we'd love to devote more time to Math.Net, our schedules are pretty hectic and we have limited time to work on all the cool features we dream of including in Math.NET Numerics. Hence we can use all the help we can get for new contributions to Math.NET.
Getting Started
The first place to start is to get to know Math.Net. Read the user guide (see the menu on the right) and if you find something unclear or missing, send us suggestions on how we can improve it. Then use Math.Net: create some samples and send them our way. We like to see examples of people using our library, we'll blog about it or include them in the code samples section to help other people understand the library.
Contributing Code
There are various ways in which you can contribute code: either to the core of the library or to the unit tests. Note that we will only accept code to Math.Net if it is accompanied by a good selection of unit tests. Only this way we can ensure a high quality library!
For inspiration on where we need help, you can have a look at our issue tracker or our todo list.
First you'll need to get access to the code. We use Git as our source control system and host the master repository at GitHub. For convenience we also host read-only mirrors for subversion and mercurial, please refer to the Sourcecode section for details.
We suggest that you create a personal free account at GitHub and use that to fork our repository. Whenever you have a code contribution, make a pull request to one of the main developers. They will review the contribution and incorporate the code into mainline
No Entry Barrier
Note that there is no entry barrier to contributing code to Math.NET Numerics: You don't need to ask us whether you can contribute or not since there is no need to actively join anything and we don't need to give you any write access rights. Everyone can create a fork and send us a pull request, no matter whether you're a beginner or an expert in the filed. In fact even the core team members commit to their own forks, although they have additional rights to push and apply changes to mainline.
But of course we do review all pull requests (github provides an excellent platform for reviewing and discussing pull requests in detail) and reserve the right to modify it as we see fit, or even to reject it with hints on how to fix it, so you can resubmit it later with hopefully more success.
Technologies
We use Visual Studio 2010 as our development environment: there is a free version available from Microsoft. Most of Math.NET Numerics is written in C# with a little bit of F#.
Our unit tests are using the NUnit platform for .NET. You can download a copy here (although it is also included in the Git repository). We recommend to use the test runner build into ReSharper by JetBrains, but TestDriven.Net should work as well.
To get a local copy of Math.Net you will need a Git client.
- Install Git:
For windows development we recommend msysgit. The installers will ask a few questions, we recommend to use the default settings everywhere: "Use Git Bash only", then "Checkout Windows-style, commit Unix-style line endings", and if it asks for the SSH tooling choose "OpenSSH". - Clone the public git repository and enter the following command in a suitable folder
git clone git://github.com/mathnet/mathnet-numerics.git
Now you have a complete local copy of the project source code, including history. Whenever you want to update your copy to the newest updates, simply call
git pull
A good resource for Git related issues is the Git Community Book or the tutorials and open books at git-scm.com. See also the Sourcecode page.



