[Mono-list] ECMA/W3C/ANSI/ISO conformance or MS .NET compatibilty - code or not ot code or how to code?
infodate
infodate@aster.pl
Fri, 9 Jul 2004 14:07:10 +0200
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello!
Recent discussion on [Monolist] XmlTextReader: MS compatibility, or W3C
conformance?
raised rather more general question about portability issues, standards
conformance and MS.NET way of coding.
In general I have observed the following problems:
1. Mono implementation violates ECMA or any other standard
2. .NET implementatioan violates ECMA or any other standard
3. Both violate standards (surprisingly but it is or was true for PECOFF
file format ECMA extended standard - it was violated by both Mono
and .NET - Mono is fixed now)
4. Both conform to standard but every implementation is behaving differently
due to standard ambiguity (P/Invoke is best example)
We face the dominance of .NET platform (currently only I hope) and majority
of CLI apps are written for and tested on .NET. If project is
successful on .NET it is assumed that it should work on Mono, but often due
to above reasons, it is not true (diregarding other reasons
like unimplemented by Mono features).
I have observed this problem with all my projects written for .NET which
looking into feature sets only should work on Mono but they are
crashing gracefully with plenty of exceptions.
By delving into detailed analysis I discovered and reported several Mono
bugs, but in parallel I discovered multiple incosistencies with
standard conformance by Mono and .NET - not blaming anyone. The result is
that portability is a major issue for any .NET/Mono developer
looking for portability of any project.
My proposal to solveproblem temporarily and speed up Mono acceptance is to
introduce .NETCompatibility mode into Mono libraries which
would allow for applications written for .NET to work smoothly on Mono
without major changes. It can be implemented for any method or
feature by appling a ConditionalAttribute = "NETCompatibility" which would
allow for selection of compatible implementation. Obviously this
should be applied only to methods or features which are implemented in
different way by .NET and Mono, and where Mono implementation is
planned to remain as it is due to any reason. There are not many of them -
at least those identified so far - so it should not be major
effort to achive that.
-----BEGIN PGP SIGNATURE-----
Version: PGP 8.0.3
iQA/AwUBQO6KboeEyL6RuXD8EQIyWgCg3JIqHH/rGLxXNXJFO2FfV6Bur7kAnRvL
JPvzW+UWcQz4X79NQGVA9KrB
=P/jp
-----END PGP SIGNATURE-----