[Mono-dev] .NET compatibility policy.
Miguel de Icaza
miguel at novell.com
Tue Jul 1 16:39:25 EDT 2008
The following is extracted from an internal email discussion.
As a policy, for .NET APIs, unless there is a *strong* reason not to
be compatible, we should be compatible with the .NET APIs. And this
means, that we need as a group to reach consensus on this, and not have
one-off ad-hoc decisions.
Some strong reasons to deviate from compatibility might include, but
are not limited:
* The mapping to Unix would be too difficult.
* The API makes no sense in a cross-platform way.
* A patent that we have to circumvent.
Compatibility not only brings more applications to Linux and helps
enhance the software ecosystem in Linux, it brings developers, it causes
less surprises, it causes less problems for developers, it reduces our
documentation, "FAQ" or "gotcha" problems. We need to have a really
good reason to not be compatible in some area.
We are completely free to innovate, create new solutions or go
beyond what Microsoft has done and be better in our own stack,
in the open source stack. Mono.ZeroConf, Mono.Addins, Mono.Cecil,
Mono.WebBrowser are good examples of these things.
Additionally, if we believe that there is a strong reason to offer
an alternative road but that shares much of the code, we could share the
code, but have a new assembly name and share the code through a mix of
picking the right files for the build, partial classes or conditional
compilation (similar to what is being done with DBLinq to support both
System.Data.Linq and DBLinq's own database abstraction layer).
More information about the Mono-devel-list