[Mono-list] Some questions about shared assemlies, strong names...

Paolo Molaro lupus@ximian.com
Mon, 5 May 2003 12:38:16 +0200

On 05/04/03 Fergus Henderson wrote:
> Yes, I misunderstood what you meant by the 99%.
> Now that you've explained, I'm in much closer agreement.


> > So, we're back at the name clashes: how big is the problem?
> > I maintain that it's relevant in a tiny 1 percent of the cases, from
> > the number of name clashes that I saw happening, for example, with the
> > programs packaged for Debian. The clashes are rare, hence my 1% figure
> > (that refers to the 100% of use cases for shared assemblies, not strong
> > names) though I agree they are still an issue.
> Having hit a name clash already (for "gc.dll") when trying to port
> Mercury to run on Mono, I am probably more sensitive to this issue
> than most ;-).  I still haven't solved that, BTW.

If I remember correctly, your issue was a loader problem of windows:
mono.exe is dynamically linked to gc.dll, but if the loader finds the
mercury gc.dll in the path (maybe it was in the current directory?)
it tryed to load that, but mono.exe couldn't execute because the mercury
gc.dll doesn't contain the garbage collector needed by mono.
Since the gc.dll in mercury should be just an helper dll, I suggest
renaming it to mercury-gc.dll or something like that: I think this is a
good idea regardless of the name clash issues.

> With the projects packaged for Debian, it's relatively easy for each new
> project that comes along to avoid name clashes with existing projects,
> since there is a central repository of Debian packages at debian.org.

No, we deal also with the clashes of the program and library names
contained in the packages, the name of the package itself is mostly a
no-brainer, as you say.

> Name clashes seem to me to be a reasonably common occurrence.
> For example, there are at least half a dozen different computer-related
> things called "mercury".  Google finds at least one other "mercury.dll"
> in addition to the one for the University of Melbourne Mercury project.
> The Mercury compiler was originally named "mc", but this was later changed
> to "mmc", for Melbourne Mercury Compiler, to avoid clashing with the
> "Midnight Commander".  Unfortunately Microsoft then released the
> "Microsoft Management Console"...

Well, program names with two letters should be always avoided, with
three letters should be strongly discouraged: anyway, the problem is
that everyone thinks thier program is important enough to use two-letter

> Even the name "mono" is not unique; if you google for "mono.exe"
> you will find several variants, with the name "mono" often being used
> as an abbreviation for "monophonic" (as in mono vs stereo)
> or "monochromatic" (as in mono vs colour).

With the explosion of sourceforge programs and other thousands of
pet-projects that grab a name but hardly put out any (working) code, it
is an issue, yes:-)

> So I do think name clashes are an issue worth solving.

Yep, I still maintain that it's very important right now, but that we
need a solution for it. I also think that strong names are only one way:
it may be possible that educating programmers to use sensible names is
less effort than educating them to use strong names:-)


lupus@debian.org                                     debian/rules
lupus@ximian.com                             Monkeys do it better