Advances in Project Management
As I have mentioned before, for me, Math.NET is not only an interesting math project, but also a kind of play ground to try out new concepts and strategies. In fact I actually learned real object oriented programming in C# with Math.NET (and another project: NeuroBox), just when the first betas of the first .Net Framework version arrived. (Don't worry, there's no code left in Math.NET from that early time period, I've completely rewritten the symbolics part (now called "classic") about three times since.)
This time I'm trying out more systematic development management and processes. Some months ago I reorganized the project with the following steps:
- New issue tracking/roadmap/changelog system using Gemini. I do nothing on the code base that is not tracked there.
- New Subversion repository structure, seperated in src (source code, subdivided in app for the actual sub-projects and test for all the unit tests), lib (all external libraries linked by any project) and tools (all the tools needed for the project, like NUnit). This way, the project is completely self-contained, you don't have to install any third-party tools on your side in order to build or test the project.
- NAnt build processes for all sub-projects and a common one for the whole Math.NET project. Maybe to be replaced with similar MSBuild processes later on.
- Continuous Integration using CruiseControl.NET. Every subversion commit triggers the NAnt build process and executes all the unit tests automatically on the build server.
Subversion Repository:
svn://svn.opensourcedotnet.info/mathnet/trunkIssue Tracker: http://tracker.opensourcedotnet.infoBuild Server: only accessible by team members
To build and test the project just open the trunk in the shell and type "build" or "build all" (there's a build.bat batch file executing NAnt in the tools-folder). For a clean build (without tests) call "build rebuild", to update the code base from the repository call "build update". If you just want to work on iridium or yttrium, use the same commands but with "iridium" or "yttrium" instead of "build".