3 Q: Is Mono a .NET implementation?
5 A: No. .NET is a company-wide initiative at Microsoft that
6 encompasses many different areas (the .NET development framework,
7 Passport, Biztalk, their new server products, and anything that is
8 remotely connected to .NET gets the ".NET-stamping" treatment).
9 Some components of this initiative have been announced and some
10 others are in the works.
12 Q: What is Mono exactly?
14 A: Mono is a project to implement various technologies developed by
15 Microsoft that have now been submitted to the ECMA Standards Body
18 It contains a number of components:
21 * A Common Language Infrastructure (CLI) virtual
22 machine that contains a class loader, Just-in-time
23 compiler, and a garbage collecting runtime.
25 * A class library that can work with any language
26 which works on the CLR.
28 * A compiler for the C# language, in the future we might work
29 on other compilers that target the Common Language Runtime.
31 In Windows there are compilers that target the
33 href="http://msdn.microsoft.com/net/thirdparty/default.asp#lang">a
34 number of languages:</a> Managed C++, Java Script,
35 Eiffel, Component Pascal, APL, Cobol, Oberon, Perl,
36 Python, Scheme, Smalltalk, Standard ML, Haskell,
40 The CLR and the Common Type System (CTS) enables applications and
41 libraries to be written in a number of languages. Classes and
42 methods created in one language can be used from a different
45 This means for example that if you define a class to do algebraic
46 manipulation in C#, that class can be reused from any other
47 language that supports the CLI. You could create a class in C#,
48 subclass it in C++ and instantiate it on an Eiffel program.
50 A single object system, threading system, class libraries, garbage
51 collection system can be shared across all these languages.
53 Q: Where can I find the specification for these technologies?
55 A: You can find the work-in-progress documentation from the T3G ECMA
58 <a href="http://www.dotnetexperts.com">http://www.dotnetexperts.com</a>
60 Q: Will you implement the .NET Framework SDK class libraries?
62 A: Yes, we will be implementing the APIs of the .NET Framework SDK
65 Q: What does Mono stand for?
67 A: Mono stands for `Monkey' in Spanish, you can also think of it as
68 monocromatic as that is what my text editor looks like.
72 Q: When will you ship it?
74 A: We do not know when the code will be shipped. The more
75 contributions we get to the project, the sooner it will ship.
77 A rough estimate is that we might be able to run our C# compiler on
78 Linux by the end of the year. This is exciting because we will be
79 running the Windows Executable generated by a Microsoft .NET
80 compiler on the Linux platform.
82 We expect that doing GUI applications will require more work on the
83 class libraries, and that could take another six months.
85 Q: How can I contribute?
87 A: Check the <a href="contributing.html">contributing</a> section.
89 Q: You guys should innovate instead of copying.
91 A: We are working towards giving free software developers better tools
92 to create better products. We have decided that we should spend our
93 limited resources towards implementing an existing specification
94 instead of designing and implementing our own.
96 Designing and implementing our own is possible, but it makes little
97 sense to roll our own just because a specification comes from a
102 Q: Why is Ximian working on .NET?
104 A: We are interested in providing the best tools for programmers to
105 develop applications for Free Operating Systems.
107 Please read the project <a href="rationale.html">rationale's background</a>
109 Q: Will Ximian be able to take on a project of this size?
111 A: Ximian will not be able to taken on the whole project on its own.
112 Mono will be a free software/open source community project, that is
113 the only way we can hope to implement something of this size. You
114 can <a href="contributing.html">contribute</a> to this effort.
116 Q: What pieces will Ximian be working on?
118 A: We will devote most of our resources to work on the pieces which
119 are on the critical path to release a development and execution
122 The idea is to get Mono to a state of usability that would allow
123 third parties to actually be able to use it real-world development.
125 On the other hand, if you have Windows you could start contributing
126 now to the class libraries by writting them in C#.
130 Q: If applications use Mono, does that mean that I have to pay a service fee?
132 A: No. Mono is not related to Microsoft's initiative of
133 software-as-a-service. Please read questions <a href="#q1">1</a> and <a href="#q2">2</a>.
135 Q: If you implement .NET, wont I depend on Microsoft Passport to run my software?
137 A: No, the .NET Framework is a runtime infrastructure and collection of class
138 libraries. Passport may be required to access certain web services written
139 for that framework, but only if the programmer chooses Passport as the
140 authentication mechanism.
142 Q: Isn't .NET something else?
144 A: You are a bit confused. It is easy to be confused, as Microsoft
145 has been naming anything they have produced recently with `.NET'.
147 Q: But .NET does not exist, it is vaporware.
149 A: Although the `.NET initiative' is still quite nebulous, The .NET Framework
150 has been available for some time. Mono is not an implementation of the .NET
151 initiative, just the development framework.
153 Please refer to questions <a href="#q1">1</a> and <a
154 href="#q2">2</a> for more details.
158 Q: Is this a free implementation of Passport?
160 A: No. Passport is part of Microsoft's Hailstorm initiative. Mono
161 is just a runtime, a compiler and a set of class libraries.
163 Q: But there is a System.Web.Security.PassportIdentity class, that must mean
164 that my software will depend on it.
166 A: No. That just means that applications might use that API to
167 contact a Passport site.
169 As long as your application does not use Passport, you will not
172 Furthermore, we can envision our implementation of such a class to
173 be a set of dummy functions, or have a different implementation
174 than contacting passport.com.
176 It is too early to We do not know at this time whether the Passport
177 protocol is documented and whether we will be able to talk to
182 Q: How is this related to GNOME?
184 A: In a number of ways:
186 * To implement some of the functionality, we will use existing
187 components that have been developed for GNOME (Gtk+, Libart,
188 Gnome-DB and maybe others).
190 * This project was born out of the need of providing improved
191 tools for the GNOME community.
193 * We would like to add support to our CLR implementation to
194 deal with GObjects (in GNOME 1.x, they are called
195 GtkObjects). And allow Mono developers to provide GObjects
196 or use and extend existing GObjects.
198 Q: Has the GNOME Foundation or the GNOME team have adopted Mono?
200 A: Mono has not been adopted by anyone at this point, as it is a
201 nascent project, but we hope that the tools that we will provide
202 will be adopted by free software programmers.
204 Q: Should GNOME programmer switch over to Mono?
206 A: Mono will not be ready even within the next six months, and a
207 complete implementation is probably one year away.
209 We encourage GNOME developers to continue using the existing tools,
210 libraries and components. Improvements made to GNOME will have an
211 impact on Mono, as they would be the "backend" for various
214 Q: Will Mono include compatibility with Bonobo components?
216 A: Yes, we will provide a set of classes for implementing and using
217 Bonobo components from within Mono.
221 Q: Is Mono a way of running Java applets?
227 Q: Is Mono just a new way of writing Web Services?
229 A: No. Please refer to the questions <a href="#q1">1</a> and <a href="#q2">2</a>. 1 and 2.
231 Q: If this implements the SDK classes, will I be able to write and
232 execute .NET Web Services with this?
236 When the project is finished, you will be able to use the same
237 technologies that are available through the .NET Framework SDK on
238 Windows to write Web Services.
242 A: Soup is a library for GNOME applications to create SOAP server and
245 Q: I want to use CORBA.
247 A: The CLI contains enough information about a class, that exposing it
248 to other RPC systems (like CORBA) is really simple, and does not
249 even require support from an object.
251 We will be implementing CORBA interoperation as an extension to the
252 Mono classes for the purpose of integrating with Bonobo, just like
253 Microsoft provides COM interoperation classes and support
256 Q: Can I serialize my objects to other things other than XML?
258 A: You would have to implement your serializer. Hopefully someone
259 will contribute a different serializer.
263 Q: Will it be possible to use the CLI features without using bytecodes
266 A: Yes, the CLI engine will be made available as a shared library.
267 The garbage collection engine, the threading abstraction, the
268 object system, the dynamic type code system and the JIT will be
269 available for C developers to integreate with their applications if
272 Q: Will you have new development tools?
274 A: Hopefully Free Software enthusiasts will contribute tools to
275 improve the developer environment. These tools could be developed
276 initially using Microsoft implementation of the CLI and then
277 executed later with Mono.
281 Q: What about using Java? After all there are many languages that
284 A: You can get very good tools for doing Java development on free
285 systems right now. <a href="http://www.redhat.com">Red Hat</a> has
286 contributed a <a href="http://gcc.gnu.org">GCC</a> <a
287 href="http://gcc.gnu.org/java">frontend for Java</a> that can take
288 Java sources or Java byte codes and generate native executables; <a
289 href="http://www.transvirtual.com">Transvirtual</a> has implemented
290 <a href="http://www.kaffe.org">Kaffe</a> a JIT engine for Java;
291 Intel also has a Java VM called <a
292 href="http://www.intel.com/research/mrl/orp">ORP</a>.
294 The JVM is not designed to be a general purpose virtual machine, it
295 is optimized for the Java language. The Common Intermediate
296 Language (CIL) on the other hand is designed to be a target for a
297 wide variety of programming languages, and has a set of rules
298 designed to be optimal for JITers.
300 Q: What kind of rules make the Common Intermediate Language useful for
303 A: The main rule is that the stack in the CLI is not a general purpose
304 stack. You are not allowed to use it for other purposes than
305 computing values and passing arguments to functions or return
308 At any given call or return instruction, the types on the stack
309 have to be the same independently of the flow of execution of your
314 Q: Would you allow other classes other than those in the
317 A: Yes. The Microsoft class collection is very big, but it is by no
318 means complete. It would be nice to have a port of `Camel' (the
319 Mail API used by Evolution inspired by Java Mail) for Mono
322 Look for more <a href="ideas.html">ideas</a>.
324 ** Mono and portability
326 Q: Will Mono only work on Linux?
328 A: This is a free software project, that means that the direction of
329 the project is mostly set by those who contribute to it. If you
330 want to steer the direction, the best way of doing this is through
331 a patch to the sources.
333 Currently, we are doing our work on Linux-based systems and
334 Windows. We do not expect many Linux-isms in the code, so it
335 should be easy to port Mono to other UNIX variants.
337 Q: What about Mono on non X-based systems?
339 A: Our main intention at Ximian is to be able to develop GNOME
340 applications with Mono, but if you are interested in providing a
341 port of the Winform classes to other platforms (frame buffer or
342 MacOS X for example), we would gladly integrate them, as far as
343 they are under a Free Software License.
345 ** Reusing existing Code
347 Q: Will you guys reuse XXX?
349 A: We want to get Mono in the hands of programmers soon. We are
350 interested in reusing existing open source software.
352 Q: What about Intel's research JIT framework, ORP?
354 A: At this time, we are investigating whether we can use elements of
357 Q: What about using GNU Lightning?
359 A: We are also researching <a
360 href="http://www.gnu.org/software/lightning/lightning.html">GNU
363 ** Ximian and Microsoft
365 Q: Didn't Miguel de Icaza say that `Unix Sucks'?
367 A: Yes, he did, as a catch phrase in his opening remark on the Ottawa
368 Linux Symposium. His talk focused on various ways to improve Unix.
370 There is a paper describing some ways to improve Unix at:
372 <a href="http://primates.ximian.com/~miguel/bongo-bong.html">
373 http://primates.ximian.com/~miguel/bongo-bong.html</a>
375 Q: Didn't Ximian's Miguel work for Microsoft?
377 A: No, he did not. Nat Friedman (Ximian's co-founder) did work as an
378 intern for Microsoft.
380 Q: Did Nat and Miguel meet at Microsoft?
382 A: They met online on the Linux IRC network; They met in person for
383 the first time in 1997.
388 Q: What is the difference between CLR (Common Language Runtime) and
389 CLI (Common Language Infrastructure)?
391 A: CLI is the specification of an execution system. The Microsoft
392 implementation of this specification is named CLR.
394 Unless we come up with our own acronym, we could just call ours
395 also CLR, just because it would do exactly the same thing the
396 Microsoft implementation does.