[Mono-dev] Discussion about assembly attributes

Pál Kornél kornelpal at hotmail.com
Thu Aug 18 14:32:48 EDT 2005


First of all I ask everybody to comment this even if you agree with me not
just when you have different opinion to have a real discussion.

Currently the assembly attributes of class library assemblies, compilers and
tools are very various.

Attributes like AssemblyVersion, SatelliteContractVersion,
ComCompatibleVersion, CLSCompliant, AssemblyKeyFile are obvious to use the
same as MS.NET. These attributes are usually correct and MS.NET values has
to be used for compatiblity reasons.

But there are attributes like AssemblyCompany, AssemblyProduct,
AssemblyCopyright that usually should not copy MS.NET values as we don't
want to copyright them as Microsoft Corporation. These attributes contain
sometimes Mono related values but sometimes are missing or commented out. I
think these should contain Mono related values in the whole mcs tree.

And there are attributes like AssemblyInformationalVersion and
AssemblyFileVersion that are for informational purposes only and are not
used in assembly loding routines of the runtime. These attributes are
usually missing or contain some forged version number that is not consistent
with anything. Rarely these attributes containv values from MS.NET.

I think AssemblyInformationalVersion and AssemblyFileVersion should be
filled with version number of Mono as these attributes are informational.
You can say that they have to match MS.NET for compatiblity reason because
there may be some stupid users who are using these version to match assembly

But I think it's no use to treat this as a compatiblity requirement as these
versions can only be used to identify service pack and hotfix versions to do
workarounds respectively. Doing so is a nasty unrecommended thing that
should not be supported. Furthermore MS.NET has different bugs thus requires
different hotfixes so MS.NET based version cannot be used to identify the
feature set of the assembly.

And I think using Mono version numbers in these attributes is not worse than
using Mono copyright texts instead of Microsoft copyright texts as
AssemblyCopyright can be used to match assemblies just like
AssemblyInformationalVersion altough it is not recommended.

You can say that revealing Mono version numbers for users is a bad thing
because the can do nasty version number based workarounds. Yes they can do,
but it's their responsibility not to do so or accept the consequences.

So I think is good to expose Mono version numbers because it helps to
identify the installed version and if we are affraid of version number based
workarounds we should not use any version numbers, we should just release
assemblies without any specific characteristics like version number, date,
size, hash, ...

Please comment my conceptions and opinion.


More information about the Mono-devel-list mailing list