Brussels / 2 & 3 February 2013


Mono Development for Wine

Wine now has the ability to use a Windows build of Mono to run .NET Applications. This talk will give an introduction to Mono development, with a focus on improving Wine's compatibility with .NET applications designed for Windows.

Starting with version 1.5.6, Wine includes a Mono package called Wine Mono, which it uses as a free replacement for the Microsoft .NET runtime. This solution can theoretically run .NET applications designed for Windows without modification, but in practice it does not work for the majority of real .NET applications. I do not believe that enough people are working on this solution to make a noticeable difference to Wine's compatibility in the next few years. I believe this is because the Microsoft .NET runtime can be installed in Wine and has better compatibility, and because Wine developers do not know how to work on Mono. Although .NET enables better compatibility in the short term, it leaves us dependent on Microsoft and is not useful for developers who wish to port their software from Windows but have a dependency on .NET and on libraries that cannot be ported to a non-Windows system.

This talk will give an introduction to Wine Mono development. The talk will not assume prior knowledge of development for Wine, Windows, .NET, or Mono, but it will assume some general knowledge of object-oriented programming and some experience using Wine, or at least a basic understanding of what Wine does. The following topics will be discussed: * How to build Wine Mono from source. * How to modify the Wine Mono source code and ensure that Wine uses those modifications. * How to use Mono's tracing feature to debug .NET applications running in Wine. * How to submit changes to the appropriate upstream project (usually Mono or Wine Mono). * How to add test cases to Mono and run them in Wine or Windows.


Vincent Povirk