+<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 the same as Microsoft's .NET initiative?
+Q: What is Mono exactly?
-A: It is not.
+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.
- .NET is a company-wide initiative at Microsoft that
- encompasses many different areas. The .NET development framework,
- Passport, Biztalk, new server products, and anything that is
- remotely connected to .NET gets the ".NET-stamping" treatment.
- Some components of Microsoft's .NET initiative have been announced
- and some others are in the works.
+Q: What is the difference between Mono and the .NET Initiative?
- Mono is a project to implement several technologies developed by
- Microsoft that have now been submitted to the ECMA Standards Body.
+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 compiler for the C# language. In the future we
might work on other compilers that target the Common
Language Runtime.
-
- 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.
</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 number of languages. Classes and
- methods created in one language can be used from a different
- language.
+ 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
A: Yes, we will be implementing the APIs of the .NET Framework SDK
class libraries.
-Q: What does Mono stand for?
+Q: Will you offer an ECMA-compliant set of class libraries?
-A: Mono is the word for `Monkey' in Spanish. We like monkeys.
+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: When will you ship it?
+Q: What does the name "Mono" mean?
+
+A: Mono is the word for `monkey' in Spanish. We like monkeys.
-A: We do not know when the code will be shipped. The more
- contributions we get to the project, the sooner it will ship.
+Q: Is Mono usable?
- A rough estimate is that we might be able to run our C# compiler on
- Linux by the end of the year. That means running the Windows
- Executable generated by a Microsoft .NET compiler on the Linux
- platform.
+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?
- We expect that doing GUI applications will require more work on the
- class libraries. That could take another six months.
+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 have decided that we should spend our limited resources towards
- implementing an existing specification instead of designing and
- implementing our own.
+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.
- Designing and implementing our own would be possible, but it doesn't make
- sense to do that just because the specification comes from a
- proprietary vendor.
-** Ximian
+<a name="ximian"></a>
+
+** 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.
For more information, read the project <a
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. You
- can <a href="contributing.html">contribute</a> to this effort.
+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 focus on building 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.
+
+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: 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?
- The idea is to get Mono to a state of that would allow
- third parties to actually be able to use it real-world development.
+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: Why does Ximian even care?
+Q: What is the difference between Gtk# and System.Windows.Forms?
-A:
+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.
-** Mono and .NET
+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.
+
+<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: If applications use Mono, does that mean that I have to pay a service fee?
+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.
+ software-as-a-service.
-Q: If you implement .NET, will I depend on Microsoft Passport to run my software?
+Q: Is the Mono Project is related to the Microsoft Hailstorm effort? Is
+ Ximian endorsing Hailstorm?
-A: No. The .NET Framework is a runtime infrastructure and collection
- of class libraries. Passport may be required to access certain web
- services written for that framework, but only if the programmer
- chooses Passport as the authentication mechanism.
+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: Is .NET just a bunch of marketing slogans?
+Q: Will Mono or .NET applications depend on Microsoft Passport?
-A: Although the `.NET initiative' is still quite nebulous, The .NET Framework
- has been available for some time. Mono is not an implementation of the .NET
- initiative, just the development framework.
+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?
applications would in theory run unmodified on Windows, Linux,
HP-UX, Solaris, MacOS X and others.
-** Passport
+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.
-Q: Is this a free implementation of Passport?
+ This is what we call <a
+ href="http://www.gnu.org/philosophy/free-sw.html">Free Software</a>
-A: No. Passport is part of Microsoft's Hailstorm initiative. Mono
- is just a runtime, a compiler and a set of class libraries.
+Q: Is Mono a free implementation of Passport?
-Q: Will the System.Web.Security.PassportIdentity class, mean
+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. That just means that applications might use that API to
- contact a Passport site.
+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.
- It might even be possible to implement that class with
- a set of dummy functions, or use an alternate Passport implementation.
-
- We do not know at this time whether the Passport protocol is
- documented and whether we will be able to talk to
- passport.com
+Q: Will Mono running on Linux make Passport available for Linux?
-** GNOME
+A: No. However, the Passport toolkit for Linux-based web servers is
+ available from Microsoft.
-Q: How is this related to GNOME?
+Q: Will Mono allow me to run Microsoft Office on Linux?
-A: In a number of ways:
+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>.
- * Mono will use existing
- components that have been developed for GNOME (Gtk+, Libart,
- Gnome-DB and maybe others).
+<a name="pnpproject"></a>
+** Mono and Portable.NET
- * This project was born out of the need of providing improved
- tools for the GNOME community.
-
- * We would like to add support to our CLR implementation to
- deal with GObjects (in GNOME 1.x, they are called
- GtkObjects), and allow Mono developers to provide GObjects
- or use and extend existing GObjects.
-
-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: What are the differences between Mono and Portable.NET?
-Q: Should GNOME programmers switch over to Mono?
+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: Mono will not be ready even within the next six months, and a
- complete implementation is probably 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 will provide the "backend" for various
- classes.
-
-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="webservices"></a>
+** Web Services
-** Mono and the Web
+Q: How is Mono related to Web Services?
-Q: Is Mono a way of running Java applets?
+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.
-A: No.
+ But most importantly, Mono is an Open Source implementation of the
+ .NET Framework.
-** Web Services
+Q: Can I author Web Services with Mono?
-Q: Is Mono just a new way of writing Web Services?
+A: You will be able to write Web Services on .NET that run on Mono and
+ viceversa.
-A: No.
-
-Q: If this implements the SDK classes, will I be able to write and
- execute .NET Web Services with this?
+Q: If Mono implements the SDK classes, will I be able to write and
+ execute .NET Web Services with it?
-A: Yes, you will.
+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.
- 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?
-Q: What about Soup?
-
-A: Soup is a library for GNOME applications to create SOAP server and
- SOAP clients. You can browse <a href=Soup here
+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, although the serializing tools have not yet been planned, and
you would probably have to implement them yourself.
-** Development Tools
+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?
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
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.
+
+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>
+
+<a name="extending"></a>
** Extending Mono
Q: Would you allow other classes other than those in the
For more information on extending Mono, see our <a
href="ideas.html">ideas</a> page.
-** Mono and portability
+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?
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.
-** Reusing existing Code
+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?
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?
href="http://www.gnu.org/software/lightning/lightning.html">GNU
Lightning</a>.
-** Ximian and Microsoft
+<a name="gcc"></a>
+** Mono and GCC
-Q: Didn't Miguel de Icaza say that `Unix Sucks'?
+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: 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.
+A: We are currently seeking volunteers for those projects.
+ Visit the <a href="contributing.html">contributing</a> section if
+ you are interested.
- There is a paper describing some ways to improve Unix at:
+Q: But would this work around the GPL in the GCC compiler and allow
+ people to work on non-free front-ends?
- <a href="http://primates.ximian.com/~miguel/bongo-bong.html">
- http://primates.ximian.com/~miguel/bongo-bong.html</a>
+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: Didn't Ximian's Miguel work for Microsoft?
+Q: Why are you writing a JIT engine instead of a front-end to GCC?
-A: Actually, Nat Friedman (Ximian's co-founder) did work as an
- intern for Microsoft for one summer but Miguel did not.
+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.
-Q: Did Nat and Miguel meet at Microsoft?
+<a name="performance"></a>
+** Performance
-A: They met online on the Linux IRC network; They met in person for
- the first time in 1997.
+Q: How fast will Mono be?
-** Acronyms
+A: We can not predict the future, but a conservative estimate is that
+ it would be at least `as fast as other JIT engines'.
-Q: What is the difference between CLR (Common Language Runtime) and
- CLI (Common Language Infrastructure)?
+ 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.
-A: CLI is the specification of an execution system. The Microsoft
- implementation of this specification is named CLR.
+ 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.
- Unless we come up with our own acronym, we could just call ours
- also CLR, just because it would do exactly the same thing the
- Microsoft implementation does.
+ 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="gcc">
-** Mono and GCC
+<a name="licensing"></a>
+** Licensing
-Q: Should someone work on a GCC front-end to C#?
+Q: Will I be able to write proprietary applications that run with
+ Mono?
-A: I would love if someone does, and we would love to help anyone that
- takes on that task, but we do not have the time or expertise to
- build a C# compiler with the GCC engine. I find it a lot more fun
- personally to work on C# on a C# compiler, which has an intrinsic
- beauty.
+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.
-Q: Should someone make a GCC backend that will generate CIL images?
+<a name="etc"></a> **
+Miscellaneous Questions
-A: I would love to see a backend to GCC that generates CIL images. It
- would provide a ton of free compilers that would generate CIL
- code. This is something that people would want to look into
- anyways for Windows interoperation in the future.
+Q: You say that the CLI allows multiple languages to execute on the
+ same environment. Isn't this the purpose of CORBA?
-Q: What about making a front-end to GCC that takes CIL images and
- generates native code?
+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.
-A: I would love to see this, specially since GCC supports this same
- feature for Java Byte Codes. You could use the metadata library
- from Mono to read the byte codes (ie, this would be your
- "front-end") and generate the trees that get passed to the
- optimizer.
+ 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.
- Ideally our implementation of the CLI will be available as a shared
- library that could be linked with your application as its runtime
- support.
+Q: Will you support COM?
-Q: But would this work around the GPL in the GCC compiler and allow
- people to work on non-free front-ends?
+A: The runtime will support XPCOM on Unix systems and COM on Windows.
+ Most of the code for dynamic trampolines exists already.
-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: 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.