Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/doc/faq
diff options
context:
space:
mode:
Diffstat (limited to 'doc/faq')
-rw-r--r--doc/faq860
1 files changed, 0 insertions, 860 deletions
diff --git a/doc/faq b/doc/faq
deleted file mode 100644
index f07c9822b24..00000000000
--- a/doc/faq
+++ /dev/null
@@ -1,860 +0,0 @@
-<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="#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: What is Mono exactly?
-
-A: The Mono Project is an open development initiative sponsored by
- Ximian that is working to develop an open source, Unix
- version of the Microsoft .NET development platform. Its objective
- 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.
-
-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.
-
-Q: What technologies are included in Mono?
-
-A: Mono contains a number of components useful for building new
- software:
-
- <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
-
- 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: 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: 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 eveyrthing 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?
-
-A: Check the <a href="contributing.html">contributing</a> section.
-
-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.
-
-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 Ximian Role in the Mono Project
-
-Q: Why is Ximian working on .NET?
-
-A: Ximian is interested in providing the best tools for programmers to
- develop applications for Free Operating Systems.
-
- 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: 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. 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.
-
-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
-
-Q: How is Mono related to GNOME?
-
-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: Has the GNOME Foundation or the GNOME team adopted Mono?
-
-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.
-
-Q: Should GNOME programmers switch over to Mono now?
-
-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.
-
- 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: Will Mono include compatibility with Bonobo components? What is the
- relationship between Mono and Bonobo?
-
-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.
-
-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
-
-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.
-
- Ximian representatives have also spoken with Sam Ruby at the ECMA
- TG3 committee to discuss the same issues.
-
-Q: Is Microsoft or Corel paying Ximian to do this?
-
-A: No.
-
-Q: Do you fear that Microsoft will change the spec and render Mono
- useless?
-
-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?
-
-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: 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>.
-
-<a name="pnpproject"></a>
-** Mono and Portable.NET
-
-Q: What are the differences between 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).
-
- 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: 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: What about Soup? Can I use Soup without Mono?
-
-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 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: 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
-
-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: With any luck, Free Software enthusiasts will contribute tools to
- improve the developer environment. These tools could be developed
- 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.
-
-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
-
-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
- href="http://gcc.gnu.org/java">frontend for Java</a> that can take
- Java sources or Java byte codes and generate native executables; <a
- href="http://www.transvirtual.com">Transvirtual</a> has implemented
- <a href="http://www.kaffe.org">Kaffe</a> a JIT engine for Java;
- 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.
- 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: Could Java target the CLI?
-
-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.
-
- 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
-
-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 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 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: 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?
-
-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 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.
-
- 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 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: 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.
-
-<a name="performance"></a>
-** Performance
-
-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.
-
-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
-
-Q: You say that the CLI allows multiple languages to execute on the
- same environment. Isn't this the purpose of CORBA?
-
-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.
-
- 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.
-
-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>
-