<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="#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="#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>
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,
Smalltalk, Standard ML, Haskell, Mercury and Oberon.
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, Windows.Forms) 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, Windows.Forms), 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: 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
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.
+
+<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
+
+
<a name="msft"></a>
** Mono and Microsoft
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.
+
+<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 3.
+
+Q: I have heard that their is a webserver developed with Mono. Is it true?.
+
+A: Yes. You can find it <a href="http://home.adelphia.net/~aljames/webserver.htm">here</a>
+ Read the README for more info.
+
<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.
<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
+
<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.
-Q: Will Mono run on Windows?
+ Interpreters exist for the SPARC, PowerPC and StrongARM cpus.
-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.
+Q: Does Mono run on Windows?
+
+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?
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.
<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 them <a href="http://java.thn.htu.se/~toor/">here</a>
+