Open Source

Whenever we can, we use mature Free Software and Open Source projects in our development work, both to avoid work duplication and to contribute back to the community. In most cases, we are simply grateful beneficiaries of other people’s efforts (NUnit, git), but in some cases we make changes to the code in order to accommodate our specific needs, and share those changes with the originating projects whenever possible, or at least with the development community when our changes do not fit the originating projects’ direction. On this page we catalogue our contributions to such projects.


From Mvp.Xml web site:

Mvp.Xml project is developed by Microsoft MVPs in XML technologies and XML Web Services worldwide. It is aimed at supplementing .NET framework XML processing functionality available through the System.Xml namespace and related namespaces such as System.Web.Services.

Mvp.Xml project currently provides .NET implementations of the EXSLT, XML Base, XInclude, XPointer as well as a unique set of utility classes and tools making XML programming in .NET platform easier, more productive and effective.

Here is the Mvp.Xml main web site, and here is the github repo with our version.

Our modifications include:

  • Extension of ExsltEvaluate method to allow prefixed namespaces to be provided.
  • Upgrade to .NET 4.0 and Visual Studio 2010.
  • Removal of dependency on System.Web.dll in order to make it build with .NET Framework 4.0 Client Profile.
  • Migration to git with all subversion history in place.


From NLog web site:

NLog is a free logging platform for .NET, Silverlight and Windows Phone with rich log routing and management capabilities. It makes it easy to produce and manage high-quality logs for your application regardless of its size or complexity.

Here is the NLog main web site, and here is the github repo with our version.

Our modifications mainly include extended batch logging mode for event log target with optional custom header and footer, for cases when we wish to group several log entries together in order to create a single message containing all of them. We use this to create a single event log entry containing several NLog entries in order to avoid overflowing the event log with similar messages. The batched messages can be grouped by their severity.