<a href="#basics">Basics</a><br>
<a href="#ximian">The Ximian Role in the Mono project</a><br>
<a href="#gnome">Mono and GNOME</a><br>
+<a href="#gui">Building GUI applications with Mono</a><br>
+<a href="#winforms">Mono and WinForms</a><br>
<a href="#msft">Mono and Microsoft</a><br>
<a href="#pnpproject">Mono and the Portable.NET Project</a><br>
<a href="#webservices">Web Services</a><br>
+<a href="#asp">Mono and ASP.NET</a><br>
+<a href="#ado">Mono and ADO.NET</a><br>
<a href="#devel">Development Tools and Issues</a><br>
<a href="#java">Mono and Java</a><br>
<a href="#extending">Extending Mono</a><br>
<a href="#gcc">Mono and GCC</a><br>
<a href="#performance">Performance</a><br>
<a href="#licensing">Licensing</a><br>
+<a href="#patents">Patents</a><br>
<a href="#etc">Miscellaneous Questions</a><br>
+<a href="#problems">Mono Common Problems</a><br>
+A <a
+href="http://www.es.gnome.org/documentacion/articulos/mono-puf/mono-puf/">spanish
+translation</a> is also available
<a name="basics"></a>
** Basics
Q: What is Mono exactly?
A: The Mono Project is an open development initiative sponsored by
- Ximian that is working to develop an open source, Linux-based
+ Ximian that is working to develop an open source, Unix
version of the Microsoft .NET development platform. Its objective
- is to enable Linux developers to build and
+ is to enable Unix developers to build and
deploy cross-platform .NET Applications. The project will
implement various technologies developed by Microsoft that have now
been submitted to the ECMA for standardization.
Windows has compilers that target the virtual machine from <a
-href="http://msdn.microsoft.com/net/thirdparty/default.asp#lang">a
+ href="http://msdn.microsoft.com/net/thirdparty/default.asp#lang">a
number of languages:</a> Managed C++, Java Script, Eiffel,
- Component Pascal, APL, Cobol, Oberon, Perl, Python, Scheme,
+ Component Pascal, APL, Cobol, Perl, Python, Scheme,
Smalltalk, Standard ML, Haskell, Mercury and Oberon.
The CLR and the Common Type System (CTS) enables applications and
A: Yes, we will be implementing the APIs of the .NET Framework SDK
class libraries.
+Q: Will you offer an ECMA-compliant set of class libraries?
+
+A: Eventually we will. Our current focus is on interoperating
+ with the Microsoft SDK, but we will also offer an ECMA compliant
+ set of libraries.
+
Q: What does the name "Mono" mean?
A: Mono is the word for `monkey' in Spanish. We like monkeys.
+Q: Is Mono usable?
+
+A: The JIT engine is usable on Intel x86 machines. An interpreter
+ can be used on other non-Intel x86 machines.
+
+ The class libraries are mature enough to run some real applications
+ (the compiler for instance, and every day more and more applications
+ are natively developed with Mono).
+
Q: When will you ship it?
-A: It is premature to target a shipdate for the code, but we
- anticipate that it will be available some time in the middle of
- 2002.
+A: Different parts of Mono will achieve usability at different stages,
+ once we are comfortable with the compiler, we will release "Mono Core",
+ which contains everything needed to develop applications with the base
+ class libraries. This should be available at some point during 2002.
+
+ Other higher level class libraries (ASP.NET, ADO.NET) will
+ be released when they become stable.
+
+Q: What major components will you include in Mono?
+
+A: Hopefully everything that Microsoft ships on their Framework
+ (ADO.NET, ASP.NET), and
+ we encourage third party developers to create reusable components that
+ work on both Mono and Windows.
Q: How can I contribute?
Project white paper</a>.
the project.
+Q: Miguel said once that Mono was being implemented in COBOL. Is that true?.
+
+A: No. It was a joke.
+
<a name="ximian"></a>
the real world, it will achieve a critical mass of developers to
improve it further.
+Q: Will Ximian offer Mono commercially?
-<a name="gnome"></a> ** Mono and GNOME
+A: When Mono is ready to be shipped Ximian will offer a commercial
+ support and services for Mono.
+
+Q: Does Ximian provide consulting services around Mono?
+
+A: Yes, Ximian does provide consulting services around Mono to
+ make it suitable to your needs. Porting the runtime engine,
+ customizing it, working on specific classes or tuning the code
+ for your particular needs.
+
+Q: Will you wait until Mono is finished?
+
+A: Mono will ship on various stages as they mature. Some people
+ require only a subset of the technologies, those will ship first.
+
+ More advanced features will take more time to develop. A support
+ timeline will be available in June 2002.
+
+<a name="gnome"></a>
+** Mono and GNOME
Q: How is Mono related to GNOME?
Bonobo components more easily, just like .NET on Windows allows you
to export .NET components to COM.
+Q: Does Mono depend on GNOME?
+
+A: No, Mono does not depend on GNOME. We use a few packages produced by
+ the GNOME team like the `glib' library.
+
+Q: But will I be able to build GNOME applications?
+
+A: Yes, we will enable people to write GNOME applications using Mono.
+
+Q: Do you have C# bindings for GNOME?.
+
+A: Yes, we currently bind libgnome, libgnomecanvas, and libgnomeui --
+ although I dare say I have no idea how functional the bindings are
+ outside of what I tested in the sample app. I imagine other libraries
+ under the GNOME framework will be added on an as-needed (and as-requested)
+ basis...although a truly good bonobo binding will have to wait on the CORBA
+ remoting support which has been started recently.
+
+<a name="gui"></a>
+** GUI applications
+
+Q: Will Mono enable GUI applications to be authored?
+
+A: Yes, you will be able to build GUI applications. Indeed, that is our
+ main focus. We will provide both the Windows.Forms API and the Gtk# API.
+
+Q: What is the difference between Gtk# and System.Windows.Forms?
+
+A: Gtk# is a set of bindings for the Gtk+ toolkit for C# (and other
+ CIL-enabled languages). System.Windows.Forms is an API defined
+ by Microsoft to build GUI applications.
+
+Q: Will I be able to run my smart clients on systems powered by Mono?
+
+A: As long as your applications are 100% .NET and do not make use
+ of P/Invoke to call Win32 functions, your smart client applications
+ will run on Mono platforms.
+
+Q: Where can I learn mora about Gtk#?
+
+A: The following <a href="http://gtk-sharp.sourceforge.net>link</a> sends you to the page of the project.
+
+Q: What can I do with Gtk#?.
+
+A: Gtk# is becoming very usable and you can create applications and
+ applets like those you see in a GNOME desktop environment. It's
+ easy to install so it's worth a try.
+
+Q: How can I compile my HelloWorld.cs which uses Gtk#?.
+
+A: Try: mcs --unsafe -o HelloWorld.exe -r glib-sharp -r pango-sharp -r
+ atk-sharp -r gdk-sharp -r gtk-sharp -r gdk-imaging-sharp
+ HelloWorld.cs
+
+Q: Is there any way how to connect DataAdapter to some GTK# controls?
+
+A: There is a sample file called `DbClient' in gtk-sharp/samples that you
+ might to look at. It is a sample program in Gtk# that adds/updates/deletes
+ information on a Postgress database. When we have the new table/tree widgets,
+ I am sure someone would write an adapter for System.Data (in Gtk2 the
+ tree/list widgets are written using a view/model, so you only need to write
+ a model that maps to the database). You can have a look at
+ gtk-sharp/sample/DbClient, where there is a GTK# application that uses
+ System.Data. It does not use DataAdapter, but DataReader though.
+
+Q: Do you have an estimate for when Windows.Forms will be released?
+
+A: We do not know, volunteers are working on this, but there is no set
+ date yet. The current approach is using the Wine Library to implement
+ it.
+
<a name="msft"></a>
** Mono and Microsoft
Ximian endorsing Hailstorm?
A: No. The Mono Project is focused on providing a compatible set of
- tools for the Microsoft.NET development platform. It does not
+ tools for the Microsoft .NET development platform. It does not
address, require, or otherwise endorse the MS Passport-based
Hailstorm single sign-on system that is part of Windows XP and
other services.
learn more about running Windows applications on Intel Unix systems
refer to <a href="http://www.winehq.com">the Wine Project</a>.
+Q: Will I be able to compile a Microsoft VB.NET application and execute
+ the resultant MSIL file under MONO on Linux without converting to C#
+ and recompiling?
+
+A: Once we have a complete VisualBasic runtime, yes.
+
+Q: Can mono run the WebMatrix ?
+
+A: No. That requires winforms (we don't have).
+
+Q: Does mono have something like Passport ? (ie PassportIdentity class,somewhere
+ in System.Web ?) . Will mono have a server side Passport/Similar framework
+ for XSP as well as client classes ?
+
+A: Not yet, but the client side API for authentication is not the problem.
+ We will likely have a lot of other authentication APIs, like the Liberty
+ Aliance APIs. The problem is people on the web provider end that might use
+ this for authentication.
+
<a name="pnpproject"></a>
** Mono and Portable.NET
A: Most of Mono is being written using C#, with only
a few parts written in C (The JIT engine, the runtime, the
- interfaces to the garbage collection system). The Portable.NET
- Project is using C for development.
+ interfaces to the garbage collection system).
+
+ It is easier to describe what is unique about Mono:
+ <ul>
+ <li> A self-hosting C# compiler written in C#, which is clean, easy
+ to maintain.
+
+ <li> A multi-platform runtime engine: both a JIT engine and an
+ interpreter exist. The JIT engine runs currently on x86
+ systems, while the interpreter works on Sparc, StrongARM and
+ PowerPC systems.
+
+ <li> Supports Linux, Windows and Solaris at this point.
+
+ <li> The JIT engine is written using a portable instruction
+ selector which not only generates good code (we are told
+ that we are faster than Rotor, but it is hard to tell) but
+ is also the foundation to retarget the JIT engine to other
+ systems.
+
+ The system employed is described in various compiler
+ books and it is very similar to what is described in the
+ book that covers LCC, the Ansi C retargetable C compiler.
+
+ <li> The JIT engine supports inlining, constant folding and propagation,
+
+ <li> Full support for remoting in the runtime, but the class
+ libraries are still behind.
+
+ <li> The C# compiler, the JIT engine and the class libraries are
+ mature enough that the whole system is self-hosting, ie, that
+ it can be fully developed with itself at this point.
+
+ <li> We are not yet done, and there is a lot of work left to be
+ done
+
+ <li> We have a great community of developers, without which Mono
+ would not be possible.
+
+ <li> We will provide an ahead of time compilation mode in the
+ future.
+ </ul>
<a name="webservices"></a>
** Web Services
-Q: Is Mono just a new way of writing Web Services?
+Q: How is Mono related to Web Services?
-A: No.
+A: Mono is only related to Web Services in that it will implement the
+ same set of classes that have been authored in the .NET Framework
+ to simplify and streamline the process of building Web Services.
+
+ But most importantly, Mono is an Open Source implementation of the
+ .NET Framework.
+
+Q: Can I author Web Services with Mono?
+
+A: You will be able to write Web Services on .NET that run on Mono and
+ viceversa.
Q: If Mono implements the SDK classes, will I be able to write and
execute .NET Web Services with it?
A: Yes, although the serializing tools have not yet been planned, and
you would probably have to implement them yourself.
+Q: Will Mono use ORBit?
+
+A: No. Mono will be using a new implementation of CORBA that isn't still started.
+
<a name="devel"></a>
** Development Tools and Issues
can interpret them as trivially as you can interpret JVM byte
codes.
+Q: Isn't it a little bit confusing to have the name of "XSP" (the same
+ as in the Apache Project) for the ASP.NET support in Mono?.
+
+A: In Mono, xsp is just the name of the C# code generator for ASP.NET
+ pages. In the Apache Project, it is a term for the "eXtensible Server
+ Pages" technology so as they are very different things, they don't
+ conflict.
+
+Q: What about using something like Jabber instead of the System.Messaging
+ namespace?.
+
+A: In short, MSMQ is not something like Jabber, but asynchronous messaging
+ through queues. Usefull queues do more than serialize messages, they are
+ also platform bridges.
+
+Q: Are you supporting XMLDocument and relatives?.
+
+A: Currently, we aren't implementing them yet. It would require updates to
+ most of the XmlNode derivatives so it's not a trivial task. We are
+ currently focusing on getting XPath support working.
+
+Q: Is there any plan to develop an aspx server for Mono?.
+
+A: The webserver turned out to be very simple compared to the rest of the
+ work. Gonzalo has got the page generator mostly done (a module called
+ xsp, who has nothing to do with the XSP term used in the Apache Project).
+ Patrik has done a lot of the work to get the ProcessRequest to work.
+ You can try to help in the final touches to the System.Web classes and
+ writing regression tests for the widgets we have.
+
+Q: Is there any way I can develop the class libraries using linux yet?
+
+A: Yes. Some class libraries can be developed on Linux. Search for
+ Paolo's post (he lists which classes can be compiled fine now).
+
+Q: Is there any way I can install a known working copy of mono in /usr,
+ and an experimental copy somewhere else, and have both copies use
+ their own libraries? (I'm still not very good at library paths in
+ linux)
+
+A: Yes. Just use two installation prefixes.
+
+Q: How should I write tests or a tests suite?
+
+A: If you do a test suite for C#, you might want to keep it
+ independent of the Mono C# compiler, so that other compiler
+ implementations can later use it.
+
+Q: Is the current stage the implementation of mono_create_trampoline
+ function? Hence the sparc-codegen.h is reasonably complete? Is
+ mono/arch/x86/* the best reference material for this stuff?
+
+A: sparc-codegen.h is basically complete. We may want to add some
+ convenience macros along the way, but it has all the stuff you need.
+ And yes, or, the ppc/ dir, since the ppc call convention is more similar
+ to the sparc one than the x86 one. The current issues with the sparc
+ code are. roughly:
+ 1) it needs to handle overflowing the out registers (the additional
+ arguments need to be put on the stack)
+ 2) it needs to flush the icache where the generated code is stored
+ 3) it needs to implement mono_create_method_pointer to get delegates
+ working
+ 4) it needs a couple of updates (mono_method_pointer_get is no longer
+ needed, for example)
+
+Q: Would it be too terrible to have another corlib signed as mscorlib?
+
+A: We rename corlib to mscorlib also when saving the PE files, in fact,
+ the runtime can execute program created by mono just fine.
+
+Q: How do I build corlib under Linux?
+
+A: You can build your own (see the web site on how to get the mcs
+ project from cvs), but in order to build them using mcs you need a
+ set of working class libraries. After building the runtime (using
+ mono-build.sh) get them from the nightly build and put them (and
+ mcs.exe) in your mono/install/lib directory. Then you should be able
+ to do: cd mcs, then: make -f makefile.gnu, then: cp mcs/mcs.exe
+ class/lib/*.dll ../install/lib Also, you should know that you can
+ either get your dose of DLLs from MonoCharge, or from
+ http://primates.ximian.com/~miguel/runtime. MonoCharge is updated
+ automatically, while the later is only updated when Miguel is around
+ Once you have the DLLs, you can use `make -f makefile.gnu' as described
+ before to self-host.
+
+Q: Is there a relatively straightforward way to repeat the steps taken
+ by Paolo to get Mono completely self-hosted on linux?
+
+A: To build the compiler and class libraries in Linux, run:
+ <ul><li>make -f makefile.gnu. To install them, run: </li>
+ <li>make -f makefile.gnu install</li>
+ <li>You can also specify a prefix:</li>
+ <li>make -f makefile.gnu install prefix=/opt</li>
+ </ul>
+ If you want to produce and distribute a monocharge tarball, run:
+ make -f makefile.gnu dist
+ Of course you have to run these in the top level mcs directory.
+
+Q: Is it possible to build a C# file to some sort of intermediate format which
+ can linked into a final module, like the traditional .c -> .o -> .so path?
+
+A: You could do: mcs /target:module file1.cs, mcs /target:module file2.cs,
+ mcs /target:exe file1.dll file2.dll /out:mybin.exe
+
+Q: Is there any plans for implementing remoting in the near future?, When will
+ work in System.Runtime.Remoting.dll start?
+
+A: The remoting infrastructure is in place. Some of the channels and
+ formatters are not.
+
+Q: I'm wondering if there are any plans to start using nant to build the
+ class lib + test lib. i think that every project neeed/should use an
+ automated build process and nant + a couple of tools enables this. is
+ the problem that the compiler can't run nant yet?
+
+A: Maybe well be doing some sort of automated build process + testing when
+ the summer finish.
+
+<a name="asp">
+** Mono and ASP.NET
+
+Q: Is Mono supporting ASP.NET?
+
+A: Yes. The development of the support for ASP.NET comes in various stages,
+ here is what Gonzalo has been working on: 1. The Parser. 2. Getting the
+ parser to generate output compatible with ASP.NET. 3. Running the sample
+ output with the real Microsoft runtime but using our generated page. 4.
+ Running the sample with our classes with the .NET runtime. 5. Running
+ our sample code with our classes with our runtime. This is the process
+ we are following. Currently Gonzalo has reached point 5.
+
+Q: Do I need install cygwin to work on ASP.NET in mono or Linux is enough since
+ it is self host right now.
+
+A: Linux is enough.
+
+Q: Any plan to make ASP.NET in mono works with Apache in linux?.
+
+A: Yes, we have plans to do so, but we need to wait for Patrik's patches to
+ HttpRuntime. Once that is there, writing a mod_mono should be trivial
+ (look at mono/samples/embed for a sample embedded application).
+
+<a name="ado">
+** Mono and ADO.NET
+
+Q: What is the status of ADO.NET support?. Could I start migrating
+ applications from MS.NET to Mono?.
+
+A: You could start right now using the ADO.NET support in mono, of course,
+ if you want to help filling the missing gaps while you develop your app
+ :-) Well, what I mean is that we're not that far to having full ADO.NET
+ support in Mono, and we've got a lot of working things, so if we could
+ get more help, we'd finish it really soon :-)
+
+Q: In developing the data architecture for the application are there and
+ objects I should stay away from in order to insure the smoothest possible
+ transition (minimum code rewrite) to Mono's ADO.NET implementation? (For
+ example, strongly typed datasets versus untyped datasets, etc...)
+
+A: we are implementing all the classes in Microsoft .NET's System.Data, so
+ you can be sure that things will work the same in Mono as with the MS's
+ implementation. We'll maybe provide extra classes to fix some things
+ we've found missing while developing ADO.NET in Mono, but if you keep
+ using the MS's System.Data classes, things will work out of the box with
+ no changes (or at least that's the plan :-)
+
<a name="java">
** Mono and Java
A: Yes, Java could target the CLI. We have details on a <a
href="ideas.html#guavac">project</a> that someone could take on to
- make this happen.
+ make this happen.
+
+ Microsoft has an implemenation of the Java language called J# that
+ can target the CIL execution engine.
+
+Q: Is it possible to write a JVM byte code to CIL convertor?
+
+A: Yes, it is possible. Here are a few starting point:
+
+ <ul>
+ * A byte code representation is really a flattened forest of
+ trees. Look at the Mono JIT engine to see how we compute
+ the basic blocks (this is used to figure out the "trees").
+
+ The forest is just an array of trees.
+
+ Indeed, run the JIT engine with -d (mono -d prog.exe) and
+ you will see how these trees look like.
+
+ You will have to do something similar for Java.
+
+ * Each "forest of trees" has a meaning. This meaning can now
+ be translated into the equivalent "meaning" in CLR-land.
+ </ul>
+
+Q: Could mono become a hybrid cil/java platform?
+
+A: No. It is quite far from the philosophy of the project. The idea of Mono
+ is, to have only _one_ VM, on which all can run. And if there existing a
+ binary-converter from Java-.class to IL and if there existing something
+ like J-Sharp on Mono, you can write programs in Java, which than can run
+ on Mono. You do not need two bindings (like your example: GTK-Sharp _and_
+ Java-Gnome). You need only _one_ of it (GTK-Sharp). Thats the idea of Mono.
+ An other point is, that there are no people, who use OpenSource-JVMs. They
+ all prefer Suns original. But for Unix there don't exist a .NET-Framework.
+ So it is possible, that in the future Mono is the standard .NET for unixes.
+
+Q: Do you plan to implement a Javascript compiler?
+
+A: Yes. Eto Demerzal has started a Rhino port to C#.
+ After this is completed, we will begin developing
+ the Javascript compiler.
<a name="extending"></a>
** Extending Mono
For more information on extending Mono, see our <a
href="ideas.html">ideas</a> page.
+Q: Do you plan to Embrace and Extend .NET?
+
+A: Embracing a good technology is good. Extending technologies in
+ incompatible ways is bad for the users, so we do not plan on
+ extending the technologies.
+
+ If you have innovative ideas, and want to create new classes, we
+ encourage you to make those classes operate correctly well in both
+ Mono and .NET.
+
+Q: Is there any way I can develop the class libraries using linux yet?
+
+A: Yes. Some class libraries can be developed on Linux. Search for
+ Paolo's post (he lists which classes can be compiled fine now).
+
+Q: Is there any way I can install a known working copy of mono in /usr,
+ and an experimental copy somewhere else, and have both copies use
+ their own libraries? (I'm still not very good at library paths in
+ linux)
+
+A: Yes. Just use two installation prefixes.
+
+
<a name="portability"></a>
** Portability
Windows. We do not expect many Linux-isms in the code, so it
should be easy to port Mono to other UNIX variants.
-Q: What about Mono on non X-based systems?
+Q: What about Mono on non Linux-based systems?
A: Our main intention at Ximian is to be able to develop GNOME
applications with Mono, but if you are interested in providing a
port of the Winform classes to other platforms (frame buffer or
MacOS X for example), we would gladly integrate them, as long
- they are under a Free Software License.
+ they are under an open source license.
+
+Q: What operating systems/CPUs do you support
+
+A: Mono currently runs on Linux, Windows, Solaris and FreeBSD.
+ There is a JIT engine available for x86 processors that can
+ generate code and optimizations tailored for a particular CPU.
+
+ Interpreters exist for the SPARC, PowerPC and StrongARM cpus.
-Q: Will Mono run on Windows?
+Q: Does Mono run on Windows?
-A: We hope so. Currently some parts of Mono only run on Windows
- (the C# compiler is a .NET executable) and other parts have only
- been compiled on Linux, but work on Windows with Cygwin.
+A: Yes. The Compiler and the runtime both run on Windows.
+
+Q: When will mono and mcs compile on Linux?.
+
+A: That happend a long time ago. Know you can download and compile
+ them or even install them from already made binary packages for
+ Windows and for Linux (RPM/DEB).
+
+Q: Will I require Cygwin to run mono?
+
+A: No. While you'll need it to compile it, it runs without cygwin and does not even require cygwin1.dll
Q: Will Mono depend on GNOME?
in Mono for implementing a `Hello World Enterprise P2P Web
Service', you will not need any GNOME components.
+Q: Is anyone working on porting Mono to IA-64?
+
+A: Nobody is working on such port.
+
+Q: If I were about to start a Mono port to IA-64,would the same lburg code
+ generator work for IA-64 also? or anything else need to be used for code
+ generation(as the processor architecture is totally different from IA32)
+
+A: The lburg approach can be use for any processor architecture. But you might
+ think in another better approach.
+
+Q: Do you plan to port Rhino to C#?.
+
+A: Eto Demerzal has started a Rhino port to C#.
+
+Q: Has anyone succeeded in building a Mac version of the C# environment.
+ If so can you explain how?
+
+A: You could try to check with the Darwin people, or the Fink people.
+ Mono/C# is self hosting on Linux/PPC which is the hard part, so it
+ should be relatively simple to get it to work on macos
+
<a name="reuse"></a>
** Reusing Existing Code
defined API that splits the JIT from the GC system and the actual
byte code implementation.
+ We are using some pieces of ORP (Their code generation interface)
+ and we use it as a source of inspiration for optimizations. Paolo
+ and Dietmar consider ORP as being one of the best JIT engines out
+ there (and their research work and papers are very useful if you are
+ interested in JIT technology).
+
Q: What about using GNU Lightning?
-A: We are also researching <a
- href="http://www.gnu.org/software/lightning/lightning.html">GNU
- Lightning</a>.
+A: We are not using GNU Lightning. Our JIT is using an instruction
+ selector based on tree-pattern matching, and a code generation
+ interface that is very tied to the current architecture.
+
+Q: Will I be able to use Microsoft SQL Server 2000 or will I need to switch
+ to a specific Open Source Database. Will I need to recode?
+
+A: There should not be any need to recode.
+
+Q: What do I need to watch out for when programming in VB.NET so that I'm
+ sure to be able to run those apps on Linux?
+
+A: Not making any PInvoke or DLL calls should and not using anything in
+ the Microsoft.* namespaces should suffice. Also do not use any
+ Methods/Classes marked as "This type/method supports the .NET Framework
+ infrastructure and is not intended to be used directly from your code."
+ even if you know what these classes/methods do.
+
+Q: Will built-in reporting be supported for crystal reports? This is a
+ heavily used part of our system.
+
+A: Probably not. Crystal Reports are propriety. Someone may try to emulate
+ the behaviour, but no-one has yet volunteered.
+
+Q: Who about writing to the registry? As I understand it, Linux does not have
+ a counterpart to the registry. Should I avoid relying on that feature?
+
+A: Try to avoid it. Although there would be a emulation for registry in
+ Mono too. GNOME does have a registry like mechanism for configuration. But
+ Even if gnome has a configuration system similar to the registry, the keys
+ will not be equal, so you will probably end up having to do some runtime
+ detection, and depending on this load an assembly that has your
+ platform-specific hacks.
+
+Q: System.Data.SqlClient with FreeTDS, will you port parts of these to C# and
+ use them?
+
+A: if their license is compatible with mono's, yes, we'd think about porting
+ them. If not, we'll continue with the plan of using FreeTDS.
<a name="gcc"></a>
** Mono and GCC
Q: What license or licenses are you using for the Mono Project?
-A: The C# Compiler is released under the terms of the GPL. The class
- libraries will be under the LGPL or the GPL with a special
- exception. The runtime libraries are under the LGPL.
-
- Since the LGPL is not suitable for embedded systems development, we
- are also licensing the libraries under the GPL with the following exception:
-
- If you link this library against your own program, then you do not
- need to release the source code for that program. However, any
- changes that you make to the library itself, or to any native
- methods upon which the library relies, must be re-distributed in
- accordance with the terms of the GPL.
-
- This is similar in spirit to <a
- href="http://www.gnu.org/software/classpath/classpath.html">GNU
- Classpath.</a>
-
-Q: Can I subclass objects within the LGPL licensed Mono code and still release
- the resulting software under a closed license?
-
-A: Yes. Subclassing does not "count" as a modification to GPL'ed code.
- This means that you may use subclasses when developing proprietary
- code with Mono.
+A: The C# Compiler is released under the terms of the <a
+ href="http://www.opensource.org/licenses/gpl-license.html">GNU GPL</a>. The runtime
+ libraries are under the <a
+ href="http://www.opensource.org/licenses/lgpl-license.html">GNU
+ Library GPL</a>. And the class libraries are released
+ under the terms of the <a
+ href="http://www.opensource.org/licenses/mit-license.html">MIT X11</a>
+ license.
Q: I would like to contribute code to Mono under a particular
license. What licenses will you accept?
A: We will have to evaluate the licenses for compatibility first,
- but as a general rule, we will accept all GPL and LGPL-compatible
- licenses. If you want to use the BSD
- license, make sure you use the BSD license without the
- advertisement clause (The `Ousterhout License').
+ but as a general rule, we will accept the code under the same
+ terms of the "container" module.
+
+<a name="patents"></a>
+** Patents
+
+Q: Could patents be used to completely disable Mono (either submarine
+ patents filed now, or changes made by Microsoft specifically to
+ create patent problems)?
+
+A: No. First, its basic functional capabilities have pre-existed too
+ long to be held up by patents. The basic components of Mono are
+ technologically equivalent to Sun's Java technology, which has been
+ around for years. Mono will also implement multi-language and
+ multi-architecture support, but there are previous technologies
+ such as UCSD p-code and ANDF that also support multiple languages
+ using a common intermediate language. The libraries are similar
+ to other language's libraries, so again, they're too similar to
+ be patentable in large measure.
+
+ However, if Microsoft does patent some technology, then our plan is
+ to either (1) work around it, (2) chop out patented pieces, (3)
+ find prior art that would render the patent useless.
+
+ Not providing a patented capability would weaken the
+ interoperability, but it would still provide the free software /
+ open source software community with good development tools, which
+ is the primary reason for developing Mono.
-<a name="etc"></a>
+<a name="etc"></a>
** Miscellaneous Questions
Q: You say that the CLI allows multiple languages to execute on the
space. This means much less copying and no need for reference
counting.
+Q: Will you support COM?
+
+A: The runtime will support XPCOM on Unix systems and COM on Windows.
+ Most of the code for dynamic trampolines exists already.
+
+Q: Will Ximian offer certifications on Mono or related technologies?.
+
+A: It's possible. But there is no plan about this. So the short answer is no.
+
+Q: Are there any Boehm's gc binaries?
+
+A: Yes. You can find RPMs <a href="http://java.thn.htu.se/~toor/">here</a>, though
+ if your distribution provides the correct packages, you should use those.
+ The suggested version of the Boehm GC is 6.1.
+
+Q: How can I report a bug?
+
+A: The best thing is to track down the bug and provide a simple test to
+ reproduce the bug. You can then add the bug to
+ <a href="http://bugzilla.ximian.com/enter_bug.cgi">bugzilla</a> or
+ simply send it to mono-list@ximian.com. Please provide info about
+ what version of mono you're using and any relevant details to be
+ able to repoduce the bug. Note that bugs reported on the mailing-list
+ may be easily forgotten, so it's better to file them in bugzilla.
+
+Q: Does mcs support the same command line options as the MS C#
+ compiler?
+
+A: The Mono C# compiler now supports the same command line
+ arguments as the Microsoft C# compiler does.
+
+Q: How about getting searchable archives on lists.ximian.com?
+
+A: You can perform a search on the mono-related mailing lists
+ <a href="http://www.go-mono.com/mailing-lists.html">here</a>.
+
+Q: When using mono from cvs or from a snapshot, I get an error messaage
+ saying that Mono and the runtime are out of sync. How do I fix that?
+
+A: If you use mono from cvs, you need to be prepared for changes in the
+ runtime internals. This means that you should keep a working setup
+ before blindling updating (a working setup may just be the last released
+ tarball or a recent binary snapshot).
+ Usually, compiling corlib with mcs before recompiling the C runtime does
+ the right thing (but occasionally you may need to do it the other
+ way around).
+
+
+
+<a name="problems"></a>
+** Mono Common Problems
+
+ If you are having problems compiling or running Mono software
+ or if you think that you found a bug, etc. Please visit the
+ <a href="http://geneura.ugr.es/~jaime/deploy/mono-common-problems.html">Mono Common Problems</a> document and try there.
+