X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=doc%2Ffaq;h=d404ba4d62a42fb4e6759d0f8e3f00701e89a829;hb=de6d7a5ccedda43516abba47206a2a834ad6a475;hp=02a643fbe99a40727263ea50ac2dd2f9e1cd987f;hpb=4c2ad5c231c8c698f6378722d320da14b4dde685;p=mono.git
diff --git a/doc/faq b/doc/faq
index 02a643fbe99..d404ba4d62a 100644
--- a/doc/faq
+++ b/doc/faq
@@ -3,8 +3,12 @@
Mono and GNOME
Building GUI applications with Mono
Mono and Microsoft
+Mono platforms
Mono and the Portable.NET Project
Web Services
+Mono and ASP.NET
+Mono and ADO.NET
+MonoDoc
Development Tools and Issues
Mono and Java
Extending Mono
@@ -13,8 +17,13 @@
Mono and GCC
Performance
Licensing
+Patents
Miscellaneous Questions
+Mono Common Problems
+A Spanish
+translation is also available
** Basics
@@ -22,9 +31,9 @@
Q: What is Mono exactly?
A: The Mono Project is an open development initiative sponsored by
- Ximian that is working to develop an open source, Linux-based
+ Ximian that is working to develop an open source, Unix
version of the Microsoft .NET development platform. Its objective
- is to enable Linux developers to build and
+ is to enable Unix developers to build and
deploy cross-platform .NET Applications. The project will
implement various technologies developed by Microsoft that have now
been submitted to the ECMA for standardization.
@@ -36,7 +45,7 @@ A: The ".NET Initiative" is a somewhat nebulous company-wide effort by
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.
+ corporate re-branding.
Q: What technologies are included in Mono?
@@ -60,7 +69,7 @@ A: Mono contains a number of components useful for building new
Windows has compilers that target the virtual machine from a
number of languages: Managed C++, Java Script, Eiffel,
- Component Pascal, APL, Cobol, Oberon, Perl, Python, Scheme,
+ Component Pascal, APL, Cobol, Perl, Python, Scheme,
Smalltalk, Standard ML, Haskell, Mercury and Oberon.
The CLR and the Common Type System (CTS) enables applications and
@@ -77,10 +86,12 @@ A: Mono contains a number of components useful for building new
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: You can find the information here:
- http://www.dotnetexperts.com
+
+ C# http://www.ecma.ch/ecma1/STAND/ecma-334.htm
+
+ CLI http://www.ecma.ch/ecma1/STAND/ecma-335.htm
Q: Will you implement the .NET Framework SDK class libraries?
@@ -89,7 +100,7 @@ A: Yes, we will be implementing the APIs of the .NET Framework SDK
Q: Will you offer an ECMA-compliant set of class libraries?
-A: Eventually we will. Our current focus is on interoperating
+A: Eventually we will. Our current focus is on inter-operating
with the Microsoft SDK, but we will also offer an ECMA compliant
set of libraries.
@@ -102,19 +113,27 @@ 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 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.
+ The class libraries are mature enough to run some real applications
+ (the compiler for instance, and every day more and more applications
+ are natively developed with Mono).
Q: When will you ship it?
-A: It is premature to target a shipdate for the code, but we
- anticipate that it will be available some time in the middle of
- 2002.
+A: Different parts of Mono will achieve usability at different stages,
+ once we are comfortable with the compiler, we will release "Mono Core",
+ which contains everything needed to develop applications with the base
+ class libraries, this will happen soon and in the meantime you can
+ download daily snapshots of our work. Also the full ASP.NET support is
+ close to completion.
+
+ Other higher level class libraries (ASP.NET, ADO.NET, WinForms) will
+ be released when they become stable.
+
+Q: What major components will you include in Mono?
+
+A: Hopefully everything that Microsoft ships on their Framework
+ (ADO.NET, ASP.NET, WinForms), and we encourage third party developers to
+ create reusable components that work on both Mono and Windows.
Q: How can I contribute?
@@ -131,6 +150,10 @@ A: We are interested in providing the best tools for programmers to
Project white paper.
the project.
+Q: Miguel said once that Mono was being implemented in COBOL. Is that true?.
+
+A: No. It was a joke.
+
@@ -164,13 +187,20 @@ 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.
+ time line will be available in June 2002.
** Mono and GNOME
@@ -199,7 +229,7 @@ A: It is still far to early for discussions of "switching over." No
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.
+ impact on Mono, as they would be the "back-end" for various classes.
Q: Will Mono include compatibility with Bonobo components? What is the
relationship between Mono and Bonobo?
@@ -218,13 +248,22 @@ Q: But will I be able to build GNOME applications?
A: Yes, we will enable people to write GNOME applications using Mono.
+Q: Do you have C# bindings for GNOME?.
+
+A: Yes, we currently bind libgnome, libgnomecanvas, and libgnomeui --
+ although I dare say I have no idea how functional the bindings are
+ outside of what I tested in the sample app. I imagine other libraries
+ under the GNOME framework will be added on an as-needed (and as-requested)
+ basis...although a truly good bonobo binding will have to wait on the CORBA
+ remoting support which has been started recently.
+
** 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# AP(I.
+ 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?
@@ -232,25 +271,84 @@ 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: Why not implement System.Windows.Forms on top of Gtk# or Qt#?
+
+A: There are several reasons for this.
+
+ First of all, Gtk+ and Qt are standard toolkits on Linux, and their
+ proponents want to use their favorite toolkits when writing
+ applications.
+
+ Related to this is the idea that System.Windows.Forms is
+ brain-dead in certain areas, such as internationalization.
+ System.Windows.Forms uses explicit sizes for all controls, as opposed
+ to Gtk+ and Qt which use a box/packing model, which can better deal with
+ the different string lengths different languages will have.
+
+ Next is compatibility. It is not possible to implement
+ System.Windows.Forms on top of Gtk+/Qt and have 100% compatibility,
+ because System.Windows.Forms exposes lots of Win32-isms, such as the
+ Win32 message loop. In order to maintain compatibility, Wine must be used,
+ and this is being done; see the
+ System.Windows.Forms effort page.
+
+ Additionally, Wine apps don't currently fit in -- visually -- with
+ Gtk+ or Qt apps.
+
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 more about Gtk#?
+
+A: The following
** 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.
+A: There is no high level communication between Ximian and Microsoft
+ at this point, but engineers who work on .NET or the ECMA groups
+ have been very friendly, and very nice to answer our questions, or
+ clarify part of the specification for us.
+
+ 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.
+ Ximian was also invited to participate in the ECMA committee
+ meetings for C# and the CLI.
Q: Is Microsoft or Corel paying Ximian to do this?
@@ -261,7 +359,7 @@ Q: Do you fear that Microsoft will change the spec and render Mono
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.
+ inter-operate. We will always have that.
Even if changes happened in the platform which were undocumented,
the existing platform would a value on its own.
@@ -335,6 +433,63 @@ A: No, it will not. Microsoft Office is a Windows application. To
learn more about running Windows applications on Intel Unix systems
refer to the Wine Project.
+Q: Will I be able to compile a Microsoft VB.NET application and execute
+ the resultant MSIL file under MONO on Linux without converting to C#
+ and recompiling?
+
+A: Once we have a complete VisualBasic runtime, yes.
+
+Q: Can mono run the WebMatrix?
+
+A: No. That requires System.Windows.Forms support which is not
+ currently implemented.
+
+Q: Does mono have something like Passport?
+ Will mono have a server side Passport/Similar framework for XSP as well as client classes?
+
+A: Not yet, but the client side API for authentication is not the problem.
+ We will likely have a lot of other authentication APIs, like the Liberty
+ Alliance APIs. The problem is people on the web provider end that might use
+ this for authentication.
+
+
+** Mono Platforms
+
+Q: What operating systems does Mono run on?
+
+A: Mono is known to run on Linux, Unix and Windows systems.
+
+Q: What architectures does Mono support?
+
+A: Mono today ships with a Just-in-Time compiler for x86-based
+ systems. It is tested regularly on Linux, FreeBSD and Windows
+ (with the XP/NT core).
+
+ There is also an interpreter, which is slower that runs on the
+ s390, SPARC and PowerPC architectures.
+
+Q: Can Mono run on Windows 9x, or ME editions?
+
+A: Mono requires Unicode versions of Win32 APIs to run,
+ and only a handful of *W functions is supported under Win9x.
+
+ There is Microsoft Layer for Unicode that provides implementation
+ of these APIs on 9x systems.
+
+ Unfortunately it uses linker trick for delayed load that is not
+ supported by ld, so some sort of adapter is necessary.
+
+ You will need MSLU and one of the following libs to link Mono to
+ unicows.dll http://mono.eurosoft.od.ua/files/unimono.zip
+ or alternatively search the net for "libunicows".
+
+ No changes to Mono source code required, the only thing is to make
+ sure that linker will resolve imports to adapter library instead of
+ Win32 libs. This is achieved by inserting -lunimono before
+ -lkerner32/user32 in the linker's specs file.
+
+
** Mono and Portable.NET
@@ -342,8 +497,56 @@ 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). The Portable.NET
- Project is using C for development.
+ interfaces to the garbage collection system).
+
+ It is easier to describe what is unique about Mono:
+
+ - A Just-in-Time compiler engine. This is important for
+ making your applications fast.
+
+
- A self-hosting C# compiler written in C#, which is clean, easy
+ to maintain.
+
+
- Focus on the .NET Framework: we are tracking down the .NET
+ Framework API definition, as we believe it is the API people
+ will be most familiar with.
+
+
- 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,
+ s390 and PowerPC systems.
+
+
- Supports Linux, Windows and Solaris at this point.
+
+
- 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 re-target 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.
+
+
- The JIT engine supports in-lining, constant folding and propagation,
+
+
- Full support for remoting in the runtime, but the class
+ libraries are still behind.
+
+
- The C# compiler, the JIT engine and the class libraries are
+ mature enough that the whole system is self-hosting. This means that
+ we develop Mono completely with itself at this point.
+
+
- We are not yet done, and there is a lot of work left to be
+ done
+
+
- We have a great community of developers, without which Mono
+ would not be possible.
+
+
- We are working on an ahead of time compilation mode to
+ pre-compile code for the target architecture (this is part
+ of our new code generation effort).
+
** Web Services
@@ -360,7 +563,7 @@ A: Mono is only related to Web Services in that it will implement the
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.
+ vice-versa.
Q: If Mono implements the SDK classes, will I be able to write and
execute .NET Web Services with it?
@@ -382,26 +585,69 @@ 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.
+ Remoting.CORBA is
+ a CORBA implementation that is gaining momentum.
+
+ Building an implementation of the Bonobo interfaces once this is ready
+ should be relatively simple.
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.
+ you would probably have to implement them yourself.
+
+Q: Will Mono use ORBit?
+
+A: There are a few advantages in using ORBit, like reusing existing code
+ and leveraging all the work done on it. Michael Meeks has posted
+ a few reasons,
+ as well as some ideas
+ that could be used to reuse ORBit.
+
+ Most users are likely to choose a native .NET solution, like Remoting.CORBA
+
+
+
+** MonoDoc
+
+Q: What is MonoDoc?
+
+A: MonoDoc is a graphical documentation browser for the Mono class
+ libraries. Currently, monodoc consists of a Gtk# application and is
+ in heavy development.
** Development Tools and Issues
-Q: Will it be possible to use the CLI features without using bytecodes
+Q: I am having trouble compiling a new version of Mono from CVS, it
+ complains about my runtime being out of sync.
+
+A: Jonathan Pryor has provided the following answer:
+
+ To upgrade your class libraries and compiler, see the See
+ README.building in the MCS directory.
+
+ The single biggest source of confusion seems to be the "Your
+ runtime is out of sync" messages. Realize that this is *normal*
+ while BUILDING. Think about it: you're building a new class
+ library with the old runtime. If the new class library references
+ a function that the old runtime knows nothing about, the runtime
+ system issues this warning.
+
+ Basically what needs to happen is for a new mono runtime to be
+ compiled, then the corlib class library be compiled, and once this
+ is done, install the new runtime, followed by corlib.
+
+ Once this is done, you can continue building your entire
+ environment.
+
+Q: Will it be possible to use the CLI features without using byte codes
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
+ available for C developers to integrate with their applications if
they wish to do so.
Q: Will you have new development tools?
@@ -430,6 +676,170 @@ 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. Useful 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 web server 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.
+
+Q: Is there any way I can develop the class libraries using Linux yet?
+
+A: Yes. Some class libraries can be developed on Linux. Search for
+ Paolo's post (he lists which classes can be compiled fine now).
+
+Q: Is there any way I can install a known working copy of mono in /usr,
+ and an experimental copy somewhere else, and have both copies use
+ their own libraries? (I'm still not very good at library paths in
+ Linux)
+
+A: Yes. Just use two installation prefixes.
+
+Q: How should I write tests or a tests suite?
+
+A: If you do a test suite for C#, you might want to keep it
+ independent of the Mono C# compiler, so that other compiler
+ implementations can later use it.
+
+Q: Would it be too terrible to have another corlib signed as mscorlib?
+
+A: We rename corlib to mscorlib also when saving the PE files, in fact,
+ the runtime can execute program created by mono just fine.
+
+Q: Is there a relatively straightforward way to repeat the steps taken
+ by Paolo to get Mono completely self-hosted on Linux?
+
+A: To build the compiler and class libraries in Linux, run:
+ - make -f makefile.gnu. To install them, run:
+ - make -f makefile.gnu install prefix=/opt/mono
+
+
+ If you want to produce and distribute a monocharge tarball, run:
+ make -f makefile.gnu dist
+ Of course you have to run these in the top level mcs directory.
+
+Q: Is it possible to build a C# file to some sort of intermediate format which
+ can linked into a final module, like the traditional .c -> .o -> .so path?
+
+A: You could do: mcs /target:module file1.cs, mcs /target:module file2.cs,
+ mcs /target:exe file1.dll file2.dll /out:mybin.exe
+
+Q: Is there any plans for implementing remoting in the near future?, When will
+ work in System.Runtime.Remoting.dll start?
+
+A: The remoting infrastructure is in place. Some of the channels and
+ formatters are not.
+
+Q: I'm wondering if there are any plans to start using nant to build the
+ class lib + test lib. i think that every project need/should use an
+ automated build process and nant + a couple of tools enables this. is
+ the problem that the compiler can't run nant yet?
+
+A: Maybe well be doing some sort of automated build process + testing when
+ the summer finish.
+
+Q: My C code uses the __stdcall which is not availble on Linux, how can I
+ make the code portable Windows/Unix across platforms?
+
+A: Replace the __stdcall attribute with the STDCALL macro, and include this
+ in your C code for newer gcc versions:
+
+ #ifndef STDCALL
+ #define STDCALL __attribute__((stdcall))
+ #endif
+
+
+** Mono and ASP.NET
+
+Q: Does Mono support ASP.NET?
+
+A: Yes.
+
+ Mono supports ASP.NET, we have shown an unmodified IBuySpy
+ installation running on Mono as well as various other programs. You can
+ try it yourself downloading the XSP server.
+
+Q: Do I need install cygwin to work on ASP.NET in mono or Linux is enough since
+ it is self host right now.
+
+A: Linux is enough.
+
+Q: How can I run ASP.NET-based applications with Mono?
+
+A: You need the Mono runtime and a hosting web server. Currently we distribute a
+ small web server called `xsp' which is used to debug applications, or you can choose
+ to use Daniel's Apache 2 module.
+
+Q: Any plan to make ASP.NET in mono works with Apache in Linux?.
+
+A: Daniel has authored an Apache2 Module for Mono that hosts the ASP.NET runtime
+ and is available here: http://apacheworld.org/modmono/
+
+Q: Will you support Apache 1?
+
+A: Modules developed for Apache 2 are not compatible with Apache 1.3
+ Daniel plans to support Apache 1.3 in the future but the current focus is on
+ Apache 2, because of the better support for threading and Windows.
+
+Q: Can I run Apache 1 and Apache 2 on the same machine?
+
+ You can always keep a copy of Apache 2 running in paralell with your Apache
+ 1.3 (either different port or using a reverse proxy).
+
+ You can also bind the two servers to different IP addresses on the
+ same physical machine.
+
+
+** Mono and ADO.NET
+
+Q: What is the status of ADO.NET support?. Could I start migrating
+ applications from MS.NET to Mono?.
+
+A: You could start right now using the ADO.NET support in mono, of course,
+ if you want to help filling the missing gaps while you develop your app
+ :-) Well, what I mean is that we're not that far to having full ADO.NET
+ support in Mono, and we've got a lot of working things, so if we could
+ get more help, we'd finish it really soon :-)
+
+Q: In developing the data architecture for the application are there and
+ objects I should stay away from in order to insure the smoothest possible
+ transition (minimum code rewrite) to Mono's ADO.NET implementation? (For
+ example, strongly typed datasets versus untyped datasets, etc...)
+
+A: We are implementing all the classes in Microsoft .NET's System.Data, so
+ you can be sure that things will work the same in Mono as with the Microsoft
+ implementation.
+
+Q: Does Mono can to connect to Sybase by using Mono.Data.*?
+
+A: Yes. use Mono.Data.SybaseClient. First of all you have to create a
+ SybaseConnection, and then, from it, use it as any other
+ IDbConnection-based class.
+
** Mono and Java
@@ -439,7 +849,7 @@ Q: Why don't you use Java? After all, there are many languages that
A: You can get very good tools for doing Java development on free
systems right now. Red Hat has
contributed a GCC frontend for Java that can take
+ href="http://gcc.gnu.org/java">front-end for Java that can take
Java sources or Java byte codes and generate native executables; Transvirtual has implemented
Kaffe a JIT engine for Java;
@@ -454,14 +864,14 @@ A: You can get very good tools for doing Java development on free
Q: Could Java target the CLI?
-A: Yes, Java could target the CLI. We have details on a project that someone could take on to
- make this happen.
+A: Yes, Java could target the CLI, Microsoft's J# compiler does that.
- Microsoft has an implemenation of the Java language called J# that
- can target the CIL execution engine.
+ The IKVM project builds a
+ Java runtime that works on top of .NET and on top of Mono. IKVM is
+ essentially a JIT compiler that translates from JVM bytecodes into
+ CIL instructions, and then lets the native JIT engine take over.
-Q: Is it possible to write a JVM byte code to CIL convertor?
+Q: Is it possible to write a JVM byte code to CIL converter?
A: Yes, it is possible. Here are a few starting point:
@@ -481,6 +891,36 @@ A: Yes, it is possible. Here are a few starting point:
be translated into the equivalent "meaning" in CLR-land.
+ See also the IKVM project
+
+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 Open Source-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.
+
+Q: Do you plan to implement a Javascript compiler?
+
+A: Yes. The beginnings of the JScript compiler can be found on CVS.
+ Cesar coordinates this effort.
+
+Q: Can Mono or .NET share system classes (loaded from mscore.dll and other
+ libs) or will it behave like Sun's Java VM?
+
+A: What you can do with mono is to load different applications in their own
+ application domain: this is a feature of the CLR that allows sandboxing
+ applications inside a single process space. This is usualy exploited to
+ compartmentalize different parts of the same app, but it can also be
+ effectively used to reduce the startup and memory overhead.
+ Using different appdomains the runtime representation of types and
+ methods is shared across applications.
+
** Extending Mono
@@ -508,7 +948,23 @@ A: Embracing a good technology is good. Extending technologies in
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
+ Mono and .NET.
+
+ Today Mono ships with a number of extra libraries that were
+ developed either by members of the Mono community, or other
+ groups.
+
+Q: Is there any way I can develop the class libraries using Linux yet?
+
+A: Yes. Mono has been selfhosting since March 2002.
+
+Q: Is there any way I can install a known working copy of mono in /usr,
+ and an experimental copy somewhere else, and have both copies use
+ their own libraries? (I'm still not very good at library paths in
+ Linux)
+
+A: Yes. Just use two installation prefixes.
+
** Portability
@@ -519,19 +975,35 @@ A: Currently, we are doing our work on Linux-based systems and
Windows. We do not expect many Linux-isms in the code, so it
should be easy to port Mono to other UNIX variants.
-Q: What about Mono on non X-based systems?
+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
+ port of the Winforms classes to other platforms (frame buffer or
MacOS X for example), we would gladly integrate them, as long
they are under an open source license.
-Q: Will Mono run on Windows?
+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: 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.
+A: Yes. You can get pre-compiled
+ binaries from http://www.go-mono.com/download.html
+
+Q: Does Mono run on Linux?
+
+A: Yes. You can get pre-compiled
+ binaries from http://www.go-mono.com/download.html
+
+Q: Will I require Cygwin to run mono?
+
+A: No. Cygwin is only required to build Mono.
Q: Will Mono depend on GNOME?
@@ -540,6 +1012,28 @@ A: It will depend only if you are using a particular assembly (for
in Mono for implementing a `Hello World Enterprise P2P Web
Service', you will not need any GNOME components.
+Q: Is anyone working on porting Mono to IA-64?
+
+A: Nobody is working on such port.
+
+Q: If I were about to start a Mono port to IA-64,would the same lburg code
+ generator work for IA-64 also? or anything else need to be used for code
+ generation(as the processor architecture is totally different from IA32)
+
+A: The lburg approach can be use for any processor architecture. But you might
+ think in another better approach.
+
+Q: Do you plan to port Rhino to C#?.
+
+A: Eto Demerzal has started a Rhino port to C#.
+
+Q: Has anyone succeeded in building a Mac version of the C# environment.
+ If so can you explain how?
+
+A: You could try to check with the Darwin people, or the Fink people.
+ Mono/C# is self hosting on Linux/PPC which is the hard part, so it
+ should be relatively simple to get it to work on MacOS
+
** Reusing Existing Code
@@ -555,16 +1049,58 @@ A: At this time, we are investigating whether we can use elements of
defined API that splits the JIT from the GC system and the actual
byte code implementation.
+ We are using some pieces of ORP (Their code generation interface)
+ and we use it as a source of inspiration for optimizations. Paolo
+ and Dietmar consider ORP as being one of the best JIT engines out
+ there (and their research work and papers are very useful if you are
+ interested in JIT technology).
+
Q: What about using GNU Lightning?
-A: We are also researching 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.
+
+Q: Will I be able to use Microsoft SQL Server 2000 or will I need to switch
+ to a specific Open Source Database. Will I need to recode?
+
+A: There should not be any need to recode.
+
+Q: What do I need to watch out for when programming in VB.NET so that I'm
+ sure to be able to run those apps on Linux?
+
+A: Not making any PInvoke or DLL calls should and not using anything in
+ the Microsoft.* namespaces should suffice. Also do not use any
+ Methods/Classes marked as "This type/method supports the .NET Framework
+ infrastructure and is not intended to be used directly from your code."
+ even if you know what these classes/methods do.
+
+Q: Will built-in reporting be supported for crystal reports? This is a
+ heavily used part of our system.
+
+A: Probably not. Crystal Reports are propriety. Someone may try to emulate
+ the behavior, but no-one has yet volunteered.
+
+Q: Who about writing to the registry? As I understand it, Linux does not have
+ a counterpart to the registry. Should I avoid relying on that feature?
+
+A: Try to avoid it. Although there would be a emulation for registry in
+ Mono too. GNOME does have a registry like mechanism for configuration. But
+ Even if gnome has a configuration system similar to the registry, the keys
+ will not be equal, so you will probably end up having to do some runtime
+ detection, and depending on this load an assembly that has your
+ platform-specific hacks.
+
+Q: System.Data.SqlClient with FreeTDS, will you port parts of these to C# and
+ use them?
+
+A: if their license is compatible with mono's, yes, we'd think about porting
+ them. If not, we'll continue with the plan of using FreeTDS.
** Mono and GCC
-Q: Are you working on a GCC front-end to C#? A GCC backend that will
+Q: Are you working on a GCC front-end to C#? A GCC back-end that will
generate CIL images? What about making a front-end to GCC that
takes CIL images and generates native code?
@@ -630,6 +1166,14 @@ A: The C# Compiler is released under the terms of the MIT X11
license.
+ The Mono runtime and the Mono C# Compiler are also available under
+ a proprietary license for those who can not use the LGPL and the
+ GPL in their code.
+
+ For licensing details, contact mono-licensing@ximian.com
+
+
Q: I would like to contribute code to Mono under a particular
license. What licenses will you accept?
@@ -637,7 +1181,69 @@ 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.
-
+
+** 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: First some background information.
+
+ The .NET Framework is divided in two parts: the ECMA/ISO covered
+ technologies and the other technologies developed on top of it like
+ ADO.NET, ASP.NET and Windows.Forms.
+
+ Mono implements the ECMA/ISO covered parts, as well as being a
+ project that aims to implement the higher level blocks like
+ ASP.NET, ADO.NET and Windows.Forms.
+
+ The Mono project has gone beyond both of those components and has
+ developed and integrated third party class libraries, the most
+ important being: Debugging APIs, integration with the Gnome
+ platform (Accessibility, Pango rendering, Gdk/Gtk, Glade, GnomeUI),
+ Mozilla, OpenGL, extensive database support (Microsoft only
+ supports a couple of providers out of the box, while Mono has
+ support for 11 different providers), our POSIX integration
+ libraries and finally the embedded API (used to add scripting to
+ applications and host the CLI, or for example as an embedded
+ runtime in Apache).
+
+ The core of the .NET Framework, and what has been patented by
+ Microsoft falls under the ECMA/ISO submission. Jim Miller at
+ Microsoft has made a statement on the patents covering ISO/ECMA,
+ (he is one of the inventors listed in the patent): here.
+
+ Basically a grant is given to anyone who want to implement those
+ components for free and for any purpose.
+
+ The controversial elements are the ASP.NET, ADO.NET and
+ Windows.Forms subsets. Those are convenient for people who need
+ full compatibility with the Windows platform, but are not required
+ for the open source Mono platform, nor integration with today's
+ Mono's rich support of Linux.
+
+ The Mono strategy for dealing with these tehcnologies is as
+ follows: (1) work around the patent by using a different
+ implementation techinque that retains the API, but changes the
+ mechanism; if that is not possible, we would (2) remove the pieces
+ of code that were covered by those patents, and also (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.
+
+ The patents do not apply in countries where software patents are
+ not allowed.
+
+ For Linux server and desktop development, we only need the ECMA
+ components, and things that we have developed (like Gtk#) or Apache
+ integration.
+
+
** Miscellaneous Questions
Q: You say that the CLI allows multiple languages to execute on the
@@ -647,11 +1253,11 @@ 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
+ This means you can operate directly upon the data types that someone
else provides, without having to go via their interfaces. It also
- means you don't have to "marshall" (convert) parameters (data
+ means you don't have to "marshal" (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
+ you don't have to worry about memory management, because all
languages/components share the same garbage collector and address
space. This means much less copying and no need for reference
counting.
@@ -661,3 +1267,75 @@ 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 RPMs here, though
+ if your distribution provides the correct packages, you should use those.
+ The suggested version of the Boehm GC is 6.1.
+
+Q: How can I report a bug?
+
+A: The best thing is to track down the bug and provide a simple test to
+ reproduce the bug. You can then add the bug to the
+ bugtracking system.
+
+ Please provide information about what version of mono you're using
+ and any relevant details to be able to reproduce the bug. Note that
+ bugs reported on the mailing-list may be easily forgotten, so it's
+ better to file them in the bug tracking system.
+
+Q: Does mcs support the same command line options as the MS C#
+ compiler?
+
+A: The Mono C# compiler now supports the same command line
+ arguments as the Microsoft C# compiler does.
+
+Q: How about getting searchable archives on lists.ximian.com?
+
+A: You can perform a search on the mono-related mailing lists
+ here.
+
+Q: When using mono from cvs or from a snapshot, I get an error messaage
+ saying that Mono and the runtime are out of sync. How do I fix that?
+
+A: If you use mono from cvs, you need to be prepared for changes in the
+ runtime internals. This means that you should keep a working setup
+ before blindling updating (a working setup may just be the last released
+ tarball or a recent binary snapshot).
+ Usually, compiling corlib with mcs before recompiling the C runtime does
+ the right thing (but occasionally you may need to do it the other
+ way around).
+
+Q: Why are you going for a GtkHtml implementation?
+
+A: GtkHTML is just a lightweight HTML rendering engine that does not
+ support CSS, so we need it to look decent for those of us that will
+ be using the documentation in our day-to-day work on Linux. The
+ Web-based interfaces lack the agility that you get from a native GUI
+ tool to browse your documentation. Probably later on, we will write
+ scripts and generate a full documentation set that is web-browsable,
+ but we need a command-line and GUI tools that we can use natively on
+ Linux when disconnected from the Web (and that has better
+ interactions than a web page).
+
+Q: Is there a command-line tool that allows me to access .NET interactively?
+
+A: There are several but one that is free software and uses MCS is the one
+ Dennis Lu from Rice University is working on; a REPL C# interpreter.
+
+Q: Is it possible to use Visual C++ with Mono?.
+
+A: It's possible to run VC++ generated apps under Mono, but we do not
+ provide a Manager C++ compiler ourselves.
+
+
+** Mono Common Problems
+
+ If you are having problems compiling or running Mono software
+ or if you think that you found a bug, etc. Please visit the
+ Mono Common Problems document and try there.
+