[Pkg-mono-devel] Mono packaging on Debian.

Miguel de Icaza miguel@novell.com
Sun, 13 Feb 2005 00:31:36 -0500


Hello, 

    I am mailing you because you seem to be involved in the Mono
packaging for Debian.   I apologize if I have reached you by mistake.

    The other day I was on the #ubuntu channel with a few folks trying
to debug a few problems, and a few things were brought to my attention. 

    I have read the document here:

	http://wiki.debian.net/?MonoConventions

    I do not know how much of this document has been implemented, so my
comments might be incorrect.  Please correct me if I am wrong.

    And wanted to discuss a few things:

* Working together

        There are some important elements from that web page that we
        have integrated into Mono itself rendering some of your local
        changes un-necessary.
        
        I would like to get some feedback directly from you on the kinds
        of things that you are doing, so we can incorporate those into
        Mono proper reducing the per-distribution specific patches.
        
* First

	There is a phenomenon: Mono 1.1.4 is now more stable, more
	reliable and better tested than Mono 1.0.xx ever was.

	Starting with this release (packages will be officially made
	available on Monday) we will recommend users to move to 
	Mono 1.1.4 and abandon the 1.0.xx series, as we consider the
	1.0.xx very buggy in contrast and has several limitations.

* Executables

	We have moved all of the Mono executables from $prefix/bin and
	placed them in $prefix/lib/mono/VERSION, so there are no longer
	.exe files lying in $prefix/bin.

	This should address various of the needs that you have, in
	particular this means that we always have scripts in
	$prefix/bin so there is no need to create new ones.

* FHS

	There are some problems with your assumptions and the way you
	have laid out packages.  The ideal situation is for you guys
	to not make any changes to the locations that Mono is using.

* /usr/share/dotnet

	This is a bad name for a number of reasons.

	First of all `dotnet' is a registered trademark.

	Second, we have worked really hard to make sure that we have two
	stacks: the Mono stack and the .NET stack, and you guys sticking
	a `dotnet' in the name will not help with perception from
	people.

	Third, this is the most important one: although *today* *most*
	of the DLL libraries that we ship are cross-platform, there is
	no guarantee that this will continue.

	Not only it is not a guarantee for Mono, but it is not a
	guarantee for third-party assemblies, these in particular are
	even more prone to include per-OS/per-architecture bytecode
	(Xsharp is one example, but the pattern is now used by various
	projects).

	This means that the code should not be in $prefix/share for
	any reason.  The dlls should not be considered shareable across
	platforms.

	Fourth, it breaks Ahead-of-Time compilation: AOT requires a
	shared object living next to the assembly with native code
	(another reason that `share' wont work).  By putting the 
	stuff in 'share' you are making the code effectively
	non-shareable.

* The use of /usr/bin/cli

	The command line options for `mono' and `mint' are different
	(and even Rotor's clix uses different options), if you are going
	to use a /usr/bin/cli, this should not be a symlink, this should
	be a new shell program that knows how to properly pass command
	line options to all possible environments.

	`Mono' is not like `java' in that the runtime arguments are
	fairly standard.  In Mono there is no effort to do this, and we
	recommend that you do not try to isolate it.

Miguel.