diff options
Diffstat (limited to 'doc/faq')
-rw-r--r-- | doc/faq | 860 |
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> - |