kick off
[mono.git] / doc / faq
diff --git a/doc/faq b/doc/faq
index d98c592174a2a7533bc446306fa5bc1daa4ad831..00bb0989ccefb4eb82e54189e297c6fb2b8bc046 100644 (file)
--- a/doc/faq
+++ b/doc/faq
+<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="#devel">Development Tools and Issues</a><br>
+<a href="#java">Mono and Java</a><br>
+<a href="#extending">Extending Mono</a><br>
+<a href="#portability">Portability</a><br>
+<a href="#reuse">Reusing Existing Code</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 name="basics"></a>
 ** Basics
 
-Q: Is Mono a .NET implementation?
-   
-A: No.  .NET is a company-wide initiative at Microsoft that encompasses
-   many different areas.  Some components of this initiative have been
-   announced and some others are in the works. 
-
 Q: What is Mono exactly?
-   
-A: Mono is a project to implement various technologies developed by
-   Microsoft that have now been submitted to the ECMA for
-   standarization.  
 
-   It contains a number of components:
+A: The Mono Project is an open development initiative sponsored by
+   Ximian that is working to develop an open source, Linux-based
+   version of the Microsoft .NET development platform.  Its objective
+   is to enable Linux 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.
+
+Q: What is the difference between Mono and the .NET Initiative?
+
+A: The ".NET Initiative" is a somewhat nebulous company-wide effort by
+   Microsoft, one part of which is a cross-platform development
+   framework.  Mono is an implementation of the development framework,
+   but not an implementation of anything else related to the .NET
+   Initiative, such as Passport, software-as-a-service, or
+   corporate rebranding.
 
-       * A Common Language Runtime (CLR) system that contains a class loader,
-         Just-in-time compiler, and a garbage collection aware
-         runtime.
+Q: What technologies are included in Mono?
 
-       * A class library. 
+A: Mono contains a number of components useful for building new
+   software:
 
-       * A compiler for the C# language, in the future we might work
-         on other compilers that target the Common Language Runtime. 
+       <ul>
+               * A Common Language Infrastructure (CLI) virtual
+                 machine that contains a class loader, Just-in-time
+                 compiler, and a garbage collecting runtime.
+
+               * A class library that can work with any language
+                 which works on the CLR.
+
+               * A compiler for the C# language.  In the future we
+                 might work on other compilers that target the Common
+                 Language Runtime.
+       </ul>
+
+
+   Windows has compilers that target the virtual machine from <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.
 
    The CLR and the Common Type System (CTS) enables applications and
    libraries to be written in a collection of different languages that
-   target the byte code 
+   target the byte code
 
-Q: Where can I find the specification for these technologies?
+   This means for example that if you define a class to do algebraic
+   manipulation in C#, that class can be reused from any other
+   language that supports the CLI.  You could create a class in C#,
+   subclass it in C++ and instantiate it in an Eiffel program. 
+
+   A single object system, threading system, class libraries, and
+   garbage collection system can be shared across all these languages.
    
+Q: Where can I find the specification for these technologies?
+
 A: You can find the work-in-progress documentation from the T3G ECMA
    group here:
  
    <a href="http://www.dotnetexperts.com">http://www.dotnetexperts.com</a>
 
 Q: Will you implement the .NET Framework SDK class libraries?
-   
+
 A: Yes, we will be implementing the APIs of the .NET Framework SDK
    class libraries. 
 
-Q: What does Mono stand for?
-   
-A: Mono stands for `Monkey' in spanish, you can also think of it as
-   monocromatic as that is what my text editor looks like. 
+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?
 
-   We like monkeys.
+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 not yet mature enough to run real applications,
+   but if you are interested in trying out Mono, you can definetly start
+   testing things out as many programs run.
+
+   The C# compiler has made significant progress, it can even compile
+   itself now, but it can not yet be ran with our class libraries as
+   they are missing some features. 
 
 Q: When will you ship it?
 
-A: We do not know when the code will be shipped.  The more
-   contributions we get to the project, the sooner it will ship.
+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.
 
 Q: How can I contribute?
 
 A: Check the <a href="contributing.html">contributing</a> section. 
 
-Q: You guys should innovate instead of copying.
+Q: Aren't you just copying someone else's work?
+
+A: We are interested in providing the best tools for programmers to
+   develop applications for Free Operating Systems.  We also want to help
+   provide the interoperability that will allow those systems to fit in
+   with other standards.
+
+   For more background, read the <a href="http://www.go-mono.com/rationale.html">Mono
+   Project white paper</a>.
+   the project.
 
-A: We are working towards giving free software developers better tools
-   to create better products.  We have decided that we can spend our
-   limited resources towards implementing an existing specification
-   than designing and implementing our own.
 
-   Designing and implementing our own is possible, but it makes little
-   sense to roll our own just because a specification comes from a
-   proprietary vendor.  
+<a name="ximian"></a> 
 
-** Ximian
+** The Ximian Role in the Mono Project
 
 Q: Why is Ximian working on .NET?
-   
-A: We are interested in providing the best tools for programmers to
+
+A: Ximian is interested in providing the best tools for programmers to
    develop applications for Free Operating Systems.  
 
-   Please read the project <a href="rationale.html">rationale's background</a>
+   For more information, read the project <a
+   href="rationale.html">rationale</a> page.
 
 Q: Will Ximian be able to take on a project of this size?  
 
-A: Ximian will not be able to taken on the whole project on its own.
-   Mono will be a free software/open source community project, that is
-   the only way we can hope to implement something of this size. 
+A: Of course not. Ximian a supporter of the Mono project, but the only way
+   to implement something of this size is for the entire free software
+   community to get involved. Visit the <a href="contributing.html">contributing</a> 
+   page if you'd like to help out.
 
 Q: What pieces will Ximian be working on?
 
-A: We will devote most of our resources to work on the pieces which
-   are on the critical path to release a development and execution
-   environment.  
+A: We will devote most of our resources to work on the pieces which are
+   on the critical path to release a development and execution
+   environment. Once the project is at a stage where it is useful in
+   the real world, it will achieve a critical mass of developers to
+   improve it further.
 
-   The idea is to get Mono to a state of usability that would allow
-   third parties to actually be able to use it for something,
-   until then, we expect few contributions to the project.
+Q: Will Ximian offer Mono commercially?
 
-   On the other hand, if you have Windows you could start contributing
-   now to the class libraries.
+A: When Mono is ready to be shipped Ximian will offer a commercial
+   support and services for Mono. 
 
-** Mono and .NET
+Q: Will you wait until Mono is finished?
 
-Q: If applications use Mono, does that mean that I have to pay a service fee?
-   
-A: No.  Mono is not related to Microsoft's initiative of
-   software-as-a-service.  Please read questions 1 and 2. 
+A: Mono will ship on various stages as they mature.  Some people
+   require only a subset of the technologies, those will ship first.
 
-Q: If you implement .NET, wont I depend on Microsoft Passport to run my software?
+   More advanced features will take more time to develop.  A support
+   timeline will be available in June 2002.
 
-A: No, the virtual machine, 
+<a name="gnome"></a> 
+** Mono and GNOME
 
-Q: Isn't .NET something else?
+Q: How is Mono related to GNOME?
 
-A: You are a bit confused.  It is easy to be confused, as Microsoft
-   has been naming anything they have produced recently with `.NET'.
+A: In a number of ways.  This project was born out of the need of
+   providing improved tools for the GNOME community, and will use
+   existing components that have been developed for GNOME when they
+   are available.  For example, we plan to use Gtk+ and Libart to
+   implement Winforms and the Drawing2D API and are considering
+   GObject support.
 
-Q: But .NET does not exist, it is vaporware. 
-   
-A: Mono is not .NET.  Please refer to questions 1 and 2. 
+Q: Has the GNOME Foundation or the GNOME team adopted Mono?
 
-Q: Will Mono enable thin computing?
+A: Mono is too new to be adopted by those groups. We hope that the
+   tools that we will provide will be adopted by free software
+   programmers including the GNOME Foundation members and the GNOME
+   project generally.
 
-A: Please refer to questions 1 and 2. 
+Q: Should GNOME programmers switch over to Mono now?
 
-** Passport
+A: It is still far to early for discussions of "switching over."  No
+   pieces of Mono will be ready within the next six months, and a
+   complete implementation is roughly one year away.
 
-Q: Is this a free implementation of Passport?
-   
-A: No.  Passport is part of Microsoft's Hailstorm initiative.  Mono
-   is just a runtime, a compiler and a set of class libraries. 
+   We encourage GNOME developers to continue using the existing tools,
+   libraries and components.  Improvements made to GNOME will have an
+   impact on Mono, as they would be the "backend" for various classes.
 
-Q: But there is a  System.Web.Security.PassportIdentity class, that must mean
-   that my software will depend on it.
-   
-A: No.  That just means that applications might use that API to
-   contact a Passport site.  
+Q: Will Mono include compatibility with Bonobo components? What is the
+   relationship between Mono and Bonobo?
 
-   As long as your application does not use Passport, you will not
-   need passport.  
+A: Yes, we will provide a set of classes for implementing and using
+   Bonobo components from within Mono.  Mono should allow you to write
+   Bonobo components more easily, just like .NET on Windows allows you
+   to export .NET components to COM.
 
-   Furthermore, we can envision our implementation of such a class to
-   be a set of dummy functions, or have a different implementation
-   than contacting passport.com
+Q: Does Mono depend on GNOME?
 
-   It is too early to We do not know at this time whether the Passport
-   protocol is documented and whether we will be able to talk to
-   passport.com 
+A: No, Mono does not depend on GNOME.  We use a few packages produced by
+   the GNOME team like the `glib' library.  
 
-** GNOME
+Q: But will I be able to build GNOME applications?
 
-Q: How is this related to GNOME?
-   
-A: In a number of ways:
+A: Yes, we will enable people to write GNOME applications using Mono.
 
-       * To implement some of the functionality, we will use existing
-         components that have been developed for GNOME (Gtk+, Libart,
-         Gnome-DB and maybe others).
+<a name="gui"></a>
+** GUI applications
 
-       * This project was born out of the need of providing improved
-         tools for the GNOME community. 
+Q: Will Mono enable GUI applications to be authored?
 
-Q: Does the GNOME Foundation or the GNOME team have adopted Mono?
+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.
 
-A: Mono has not been adopted by anyone at this point, as it is a
-   nacent project, but we hope that the tools that we will provide
-   will be adopted by free software programmers. 
+Q: What is the difference between Gtk# and System.Windows.Forms?
 
-Q: Should GNOME programmer switch over to Mono?
+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.
 
-A: No pieces of Mono will be ready within the next six months, and a
-   complete implementation is probably one year away.  
+Q: Will I be able to run my smart clients on systems powered by Mono?
 
-   We encourage GNOME developers to continue using the existing tools,
-   libraries and components.  Improvements made to GNOME will have an
-   impact on Mono, as they would be the "backend" for various
-   classes. 
+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: Will Mono include compatibility with Bonobo components?
-   
-A: Yes, we will provide a set of classes for implementing and using
-   Bonobo components from within Mono. 
+<a name="msft"></a>
+** Mono and Microsoft
+
+Q: Is Microsoft helping Ximian with this project?
+
+A: No. Ximian CTO Miguel de Icaza had a friendly conversation with
+   Microsoft software architect David Stutz, but that's about the
+   extent of the contact. Microsoft is interested in other
+   implementations of .NET and are willing to help make the ECMA spec
+   more accurate for this purpose.
 
-** Mono and the Web
+   Ximian representatives have also spoken with Sam Ruby at the ECMA
+   TG3 committee to discuss the same issues.
 
-Q: Is Mono a way of running Java applets?
+Q: Is Microsoft or Corel paying Ximian to do this?
 
 A: No.
 
-** Web Services
+Q: Do you fear that Microsoft will change the spec and render Mono
+   useless?
 
-Q: Is Mono just a new way of writing Web Services?
-   
-A: No.  Please refer to the questions 1 and 2. 
+A: No.  Microsoft proved with the CLI and the C# language that it was
+   possible to create a powerful foundation for many languages to
+   interoperate.  We will always have that.  
+
+   Even if changes happened in the platform which were undocumented,
+   the existing platform would a value on its own.
+
+Q: Are you writing Mono from the ECMA specs?
+
+A: Yes, we are writing them from the ECMA specs and the published
+   materials in print about .NET.
+
+Q: If my applications use Mono, will I have to pay a service fee?
+
+A: No.  Mono is not related to Microsoft's initiative of
+   software-as-a-service.
+
+Q: Is the Mono Project is related to the Microsoft Hailstorm effort?  Is
+   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
+   address, require, or otherwise endorse the MS Passport-based
+   Hailstorm single sign-on system that is part of Windows XP and
+   other services.
+
+Q: Will Mono or .NET applications depend on Microsoft Passport?
+
+A: No. MS Passport is unrelated to running .NET compatible applications
+   produced with the Mono tools.  The only thing you will need is a
+   just-in-time compiler (JIT).
+
+Q: What is a 100% .NET application?
+
+A: A `100% .NET application' is one that only uses the APIs defined
+   under the System namespace and does not use PInvoke.  These
+   applications would in theory run unmodified on Windows, Linux,
+   HP-UX, Solaris, MacOS X and others. 
+
+Q: If Microsoft will release a port of their .NET platform under the
+   `Shared Source' license, why should I bother with anything else?
 
-Q: If this implements the SDK classes, will I be able to write and
-   execute Web services with this?
+A: The Shared Source implementation will be expensive and its uses
+   will be tightly restricted, especially for commercial use. We are
+   working towards an implementation that will grant a number of
+   important rights to recipients: use for any purpose,
+   redistribution, modification, and redistribution of modifications.
+
+   This is what we call <a
+   href="http://www.gnu.org/philosophy/free-sw.html">Free Software</a>
+
+Q: Is Mono a free implementation of Passport?
+
+A: No. Mono is just a runtime, a compiler and a set of class
+   libraries.
+
+Q: Will the System.Web.Security.PassportIdentity class mean
+   that my software will depend on Passport?
    
-A: Yes, you will.
+A: No.  Applications may use that API to contact a Passport site, but
+   are not required to do so.
+
+   As long as your application does not use Passport, you will not
+   need Passport.  
+
+Q: Will Mono running on Linux make Passport available for Linux?
+
+A: No.  However, the Passport toolkit for Linux-based web servers is
+   available from Microsoft.
+
+Q: Will Mono allow me to run Microsoft Office on Linux?
+
+A: No, it will not.  Microsoft Office is a Windows application.  To
+   learn more about running Windows applications on Intel Unix systems
+   refer to <a href="http://www.winehq.com">the Wine Project</a>.
 
-   When the project is finished, you will be able to use the same
-   technologies that are available through the .NET-FrameworkSDK on
-   Windows to write Web Services.
+<a name="pnpproject"></a>
+** Mono and Portable.NET
 
-Q: What about Soup?
+Q: What are the differences between Mono and Portable.NET?
 
-A: Soup is a library for GNOME applications to create SOAP server and
-   SOAP clients.
+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.
+
+<a name="webservices"></a>
+** Web Services
+
+Q: How is Mono related to Web Services?
+
+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.  When the project is finished, you will be able to use the
+   same technologies that are available through the .NET Framework SDK
+   on Windows to write Web Services.
 
-Q: I want to use CORBA. 
+Q: What about Soup?  Can I use Soup without Mono?
 
-A: The CLI contains enough information about a class, that exposing it
-   to other RPC systems (like CORBA) is really simple, and does not
-   even require support from an object.  
+A: Soup is a library for GNOME applications to create SOAP servers and
+   SOAP clients, and can be used without Mono.  You can browse the
+   source code for soup using <a
+   href="http://cvs.gnome.org/bonsai">GNOME's Bonsai</a>.
+
+Q: Can I use CORBA?
+
+A: Yes. The CLI contains enough information about a class that
+   exposing it to other RPC systems (like CORBA) is really simple, and
+   does not even require support from an object.  
 
    We will be implementing CORBA interoperation as an extension to the
-   Mono classes for the purpose of integrating with Bonobo, just like
+   Mono classes so that we can integrate with Bonobo, just like
    Microsoft provides COM interoperation classes and support
    mechanisms. 
 
 Q: Can I serialize my objects to other things other than XML?
 
-A: You would have to implement your serializer.  Hopefully someone
-   will contribute a different serializer. 
+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
 
-** Development Tools 
+Q: Will it be possible to use the CLI features without using bytecodes
+   or the JIT?
+
+A: Yes. The CLI engine will be made available as a shared library.
+   The garbage collection engine, the threading abstraction, the
+   object system, the dynamic type code system and the JIT will be
+   available for C developers to integreate with their applications if
+   they wish to do so. 
 
 Q: Will you have new development tools?
 
-A: Hopefully Free Software enthusiasts will contribute tools to
+A: With any luck, Free Software enthusiasts will contribute tools to
    improve the developer environment.  These tools could be developed
-   initially using Microsoft implementation of the CLI and then
+   initially using the Microsoft implementation of the CLI and then
    executed later with Mono.
 
+Q: What kind of rules make the Common Intermediate Language useful for
+   JITers?
+
+A: The main rule is that the stack in the CLI is not a general purpose
+   stack.   You are not allowed to use it for other purposes than
+   computing values and passing arguments to functions or return
+   values.  
+
+   At any given call or return instruction, the types on the stack
+   have to be the same independently of the flow of execution of your
+   code. 
+
+Q: Is it true that the CIL is ideal for JITing and not efficient for
+   interpreters?
+
+A: The CIL is better suited to be JITed than JVM byte codes, but you
+   can interpret them as trivially as you can interpret JVM byte
+   codes. 
+
+<a name="java">
 ** Mono and Java
    
-Q: What about using Java?  After all there are many languages that
+Q: Why don't you use Java?  After all, there are many languages that
    target the Java VM.
-   
+
 A: You can get very good tools for doing Java development on free
    systems right now.  <a href="http://www.redhat.com">Red Hat</a> has
    contributed a <a href="http://gcc.gnu.org">GCC</a> <a
@@ -242,57 +451,248 @@ A: You can get very good tools for doing Java development on free
    Intel also has a Java VM called <a
    href="http://www.intel.com/research/mrl/orp">ORP</a>.
 
-   The JVM is not designed to be a general purpose virtual machine, it
-   is optimized for the Java language.  The Common Intermediate
-   Language (CIL) on the other hand is designed to be a target for a
+   The JVM is not designed to be a general purpose virtual machine.
+   The Common Intermediate Language (CIL), on the other hand, is
+   designed to be a target for a
    wide variety of programming languages, and has a set of rules
    designed to be optimal for JITers.
 
-Q: What kind of rules make the Common Intermediate Language useful for
-   JITers?
+Q: Could Java target the CLI?
 
-A: The main rule is that the stack in the CLI is not a general purpose
-   stack.   You are not allowed to use it for other purposes than
-   computing values and passing arguments to functions or return
-   values.  
+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.  
 
-   At any given call or return instruction, the types on the stack
-   have to be the same independently of the flow of execution of your
-   code. 
+   Microsoft has an implemenation of the Java language called J# that
+   can target the CIL execution engine. 
 
-** Reusing existing Code
+Q: Is it possible to write a JVM byte code to CIL convertor?
 
-Q: Will you guys reuse XXX?
-   
-A: We want to get Mono in the hands of programmers soon.  If it makes
-   sense to use a GPL/LGPL-compatible technology in Mono, we will
-   likely use it. 
+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>
+
+<a name="extending"></a>
+** Extending Mono
+
+Q: Would you allow other classes other than those in the
+   specification?
+
+A: Yes.  The Microsoft class collection is very big, but it is by no
+   means complete.  It would be nice to have a port of `Camel' (the
+   Mail API used by Evolution inspired by Java Mail) for Mono
+   applications.  
+
+   You might also want to look into implementing CORBA for Mono.  Not
+   only because it would be useful, but because it sounds like a fun
+   thing to do, given the fact that the CLI is such a type rich
+   system. 
+
+   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
+
+Q: Will Mono only work on Linux?
+
+A: Currently, we are doing our work on Linux-based systems and
+   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?
+
+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 an open source license.  
+
+Q: Will 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.
+
+Q: Will Mono depend on GNOME?
+
+A: It will depend only if you are using a particular assembly (for
+   example, for doing GUI applications).  If you are just interested
+   in Mono for implementing a `Hello World Enterprise P2P Web
+   Service', you will not need any GNOME components.
+
+<a name="reuse"></a>
+** Reusing Existing Code
+
+Q: What projects will you reuse or build upon?
+
+A: We want to get Mono in the hands of programmers soon.  We are
+   interested in reusing existing open source software.
 
 Q: What about Intel's research JIT framework, ORP?
-   
+
 A: At this time, we are investigating whether we can use elements of
-   ORP for Mono. 
+   ORP for Mono.   ORP is a research JIT engine that has a clearly
+   defined API that splits the JIT from the GC system and the actual
+   byte code implementation.
+
+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 name="gcc"></a>
+** Mono and GCC
+
+Q: Are you working on a GCC front-end to C#? A GCC backend that will
+   generate CIL images? What about making a front-end to GCC that
+   takes CIL images and generates native code?
+
+A: We are currently seeking volunteers for those projects.
+   Visit the <a href="contributing.html">contributing</a> section if
+   you are interested.
+
+Q: But would this work around the GPL in the GCC compiler and allow
+   people to work on non-free front-ends?
+
+A: People can already do this by targeting the JVM byte codes (there
+   are about 130 compilers for various languages that target the JVM).
+
+Q: Why are you writing a JIT engine instead of a front-end to GCC?
+
+A: We want the JIT engine and runtime engine because they will be able
+   to execute CIL executables generated on Windows, and so no recompilation 
+   will be necessary.
 
-** Ximian and Microsoft
+<a name="performance"></a>
+** Performance
 
-Q: Didn't Miguel de Icaza say that `Unix Sucks'?
+Q: How fast will Mono be?
+
+A: We can not predict the future, but a conservative estimate is that
+   it would be at least `as fast as other JIT engines'.
+
+   We would like to ship various JIT engines with Mono, just like
+   Microsoft has done with their .NET development platform. We could
+   provide a faster, JIT for fast load times but lower performance,
+   and an and an optimizing JIT that would be slower at generating
+   code but produce more optimal output.
+
+   The CIL has some advantages over the Java byte code:  it is really
+   an intermediate representation and there are a number of
+   restrictions on how you can emit CIL code that simplify creating
+   better JIT engines.
+
+   For example, on the CIL, the stack is not really an abstraction
+   available for the code generator to use at will.  Rather, it is a
+   way of creating a postfix representation of the parsed tree.  At
+   any given call point or return point, the contents of the stack are
+   expected to contain the same object types independently of how the
+   instruction was reached.
+
+<a name="licensing"></a>
+** Licensing
+
+Q: Will I be able to write proprietary applications that run with
+   Mono?
+
+A: Yes.  The licensing scheme is planned to allow proprietary
+   developers to write applications with Mono.
    
-A: Yes, he did, as a catch phrase in his opening remark on the Ottawa
-   Linux Symposium.  His talk focused on various ways to improve Unix.
+Q: What license or licenses are you using for the Mono Project?
+
+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 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> **
+Miscellaneous Questions
 
-   There is a paper describing some ways to improve Unix at:
+Q: You say that the CLI allows multiple languages to execute on the
+   same environment.  Isn't this the purpose of CORBA?
 
-       <a href="http://primates.ximian.com/~miguel/bongo-bong.html">
-        http://primates.ximian.com/~miguel/bongo-bong.html</a>
+A: The key difference between CORBA (and COM) and the CLI is that the
+   CLI allows "data-level interoperability" because every
+   language/component uses the same data layout and memory management.
 
-Q: Didn't Ximian's Miguel work for Microsoft?
+   This means you can operate directly upon the datatypes that someone
+   else provides, without having to go via their interfaces.  It also
+   means you don't have to "marshall" (convert) parameters (data
+   layouts are the same, so you can just pass components directly) and
+   you don't have to worry about memory managment, because all
+   languages/components share the same garbage collector and address
+   space.  This means much less copying and no need for reference
+   counting.
 
-A: No, he did not.  Nat Friedman (Ximian's co-founder) did work as an
-   intern for Microsoft.
+Q: Will you support COM?
 
-Q: Did Nat and Miguel meet at Microsoft?
+A: The runtime will support XPCOM on Unix systems and COM on Windows.
+   Most of the code for dynamic trampolines exists already.
 
-A: They met online on the Linux IRC network;  They met in person for
-   the first time in 1997.
+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.