9017ece0d2bdb7af7fb0a0afde404b600e1032b6
[mono.git] / web / faq
1 ** Basics
2
3 Q: Is Mono the same as Microsoft's .NET initiative?
4    
5 A: It is not. 
6
7    .NET is a company-wide initiative at Microsoft that
8    encompasses many different areas. The .NET development framework,
9    Passport, Biztalk, new server products, and anything that is
10    remotely connected to .NET gets the ".NET-stamping" treatment.
11    Some components of Microsoft's .NET initiative have been announced
12    and some others are in the works.
13
14   Mono is a project to implement several technologies developed by
15    Microsoft that have now been submitted to the ECMA Standards Body.   
16
17 Q: What technologies are included in Mono?
18    
19 A: Mono contains a number of components useful for building new
20    software:
21
22         <ul>
23                 * A Common Language Infrastructure (CLI) virtual
24                   machine that contains a class loader, Just-in-time
25                   compiler, and a garbage collecting runtime.
26
27                 * A class library that can work with any language
28                   which works on the CLR.
29
30                 * A compiler for the C# language.  In the future we
31                   might work on other compilers that target the Common
32                   Language Runtime.
33
34                   Windows has compilers that target the
35                   virtual machine from
36                   <a href="http://msdn.microsoft.com/net/thirdparty/default.asp#lang">a
37                   number of languages:</a> Managed C++, Java Script,
38                   Eiffel, Component Pascal, APL, Cobol, Oberon, Perl,
39                   Python, Scheme, Smalltalk, Standard ML, Haskell,
40                   Mercury and Oberon.
41         </ul>
42
43    The CLR and the Common Type System (CTS) enables applications and
44    libraries to be written in a number of languages.  Classes and
45    methods created in one language can be used from a different
46    language. 
47
48    This means for example that if you define a class to do algebraic
49    manipulation in C#, that class can be reused from any other
50    language that supports the CLI.  You could create a class in C#,
51    subclass it in C++ and instantiate it in an Eiffel program. 
52
53    A single object system, threading system, class libraries, and
54    garbage collection system can be shared across all these languages.
55    
56 Q: Where can I find the specification for these technologies?
57    
58 A: You can find the work-in-progress documentation from the T3G ECMA
59    group here:
60  
61    <a href="http://www.dotnetexperts.com">http://www.dotnetexperts.com</a>
62
63 Q: Will you implement the .NET Framework SDK class libraries?
64    
65 A: Yes, we will be implementing the APIs of the .NET Framework SDK
66    class libraries. 
67
68 Q: What does Mono stand for?
69    
70 A: Mono is the word for `Monkey' in Spanish. We like monkeys.
71
72 Q: When will you ship it?
73
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.
76
77    A rough estimate is that we might be able to run our C# compiler on
78    Linux by the end of the year.  That means running the Windows
79    Executable generated by a Microsoft .NET compiler on the Linux
80    platform.
81
82    We expect that doing GUI applications will require more work on the
83    class libraries. That could take another six months.
84
85 Q: How can I contribute?
86
87 A: Check the <a href="contributing.html">contributing</a> section. 
88
89 Q: You guys should innovate instead of copying.
90
91 A: 
92    We have decided that we should spend our limited resources towards
93    implementing an existing specification instead of designing and
94    implementing our own.
95
96    Designing and implementing our own would be possible, but it doesn't make
97    sense to do that just because the specification comes from a
98    proprietary vendor.  
99
100 ** Ximian
101
102 Q: Why is Ximian working on .NET?
103    
104 A: We are interested in providing the best tools for programmers to
105    develop applications for Free Operating Systems.  
106
107    For more information, read the project <a
108    href="rationale.html">rationale</a> page.
109
110 Q: Will Ximian be able to take on a project of this size?  
111
112 A: Ximian will not be able to taken on the whole project on its own.
113    Mono will be a free software/open source community project, that is
114    the only way we can hope to implement something of this size.  You
115    can <a href="contributing.html">contribute</a> to this effort.
116
117 Q: What pieces will Ximian be working on?
118
119 A: We will focus on building a development and execution
120    environment.  
121
122    The idea is to get Mono to a state of that would allow
123    third parties to actually be able to use it real-world development.
124
125 ** Mono and .NET
126
127 Q: If applications use Mono, does that mean that I have to pay a service fee?
128    
129 A: No.  Mono is not related to Microsoft's initiative of
130    software-as-a-service. 
131
132 Q: If you implement .NET, will I depend on Microsoft Passport to run my software?
133
134 A: No.  The .NET Framework is a runtime infrastructure and collection
135    of class libraries.  Passport may be required to access certain web
136    services written for that framework, but only if the programmer
137    chooses Passport as the authentication mechanism.
138
139 Q: Is .NET just a bunch of marketing slogans?
140    
141 A: Although the `.NET initiative' is still quite nebulous, The .NET Framework
142    has been available for some time.  Mono is not an implementation of the .NET
143    initiative, just the development framework.
144
145 ** Passport
146
147 Q: Is this a free implementation of Passport?
148    
149 A: No.  Passport is part of Microsoft's Hailstorm initiative.  Mono
150    is just a runtime, a compiler and a set of class libraries. 
151
152 Q: Will the System.Web.Security.PassportIdentity class, mean
153    that my software will depend on Passport?
154    
155 A: No.  That just means that applications might use that API to
156    contact a Passport site.  
157
158    As long as your application does not use Passport, you will not
159    need Passport.  
160
161    It might even be possible to implement that class with
162    a set of dummy functions, or use an alternate Passport implementation.
163
164    We do not know at this time whether the Passport protocol is
165    documented and whether we will be able to talk to
166    passport.com 
167
168 ** GNOME
169
170 Q: How is this related to GNOME?
171    
172 A: In a number of ways:
173
174         * Mono will use existing
175           components that have been developed for GNOME (Gtk+, Libart,
176           Gnome-DB and maybe others).
177
178         * This project was born out of the need of providing improved
179           tools for the GNOME community. 
180
181         * We would like to add support to our CLR implementation to
182           deal with GObjects (in GNOME 1.x, they are called
183           GtkObjects), and allow Mono developers to provide GObjects
184           or use and extend existing GObjects.
185
186 Q: Has the GNOME Foundation or the GNOME team adopted Mono?
187
188 A: Mono is too new to be adopted by those groups. We hope that the
189    tools that we will provide will be adopted by free software
190    programmers including the GNOME Foundation members and the GNOME
191    project generally.
192
193 Q: Should GNOME programmers switch over to Mono?
194
195 A: Mono will not be ready even within the next six months, and a
196    complete implementation is probably one year away.  
197
198    We encourage GNOME developers to continue using the existing tools,
199    libraries and components.  Improvements made to GNOME will have an
200    impact on Mono, as they will provide the "backend" for various
201    classes. 
202
203 Q: Will Mono include compatibility with Bonobo components?
204    
205 A: Yes, we will provide a set of classes for implementing and using
206    Bonobo components from within Mono. 
207
208 ** Mono and the Web
209
210 Q: Is Mono a way of running Java applets?
211
212 A: No.
213
214 ** Web Services
215
216 Q: Is Mono just a new way of writing Web Services?
217    
218 A: No.
219
220 Q: If this implements the SDK classes, will I be able to write and
221    execute .NET Web Services with this?
222    
223 A: Yes, you will.
224
225    When the project is finished, you will be able to use the same
226    technologies that are available through the .NET Framework SDK on
227    Windows to write Web Services.
228
229 Q: What about Soup?
230
231 A: Soup is a library for GNOME applications to create SOAP server and
232    SOAP clients.  You can browse <a href=Soup here
233
234 Q: Can I use CORBA?
235
236 A: Yes. The CLI contains enough information about a class that
237    exposing it to other RPC systems (like CORBA) is really simple, and
238    does not even require support from an object.  
239
240    We will be implementing CORBA interoperation as an extension to the
241    Mono classes so that we can integrate with Bonobo, just like
242    Microsoft provides COM interoperation classes and support
243    mechanisms. 
244
245 Q: Can I serialize my objects to other things other than XML?
246
247 A: Yes, although the serializing tools have not yet been planned, and
248 you would probably have to implement them yourself.
249
250 ** Development Tools 
251
252 Q: Will it be possible to use the CLI features without using bytecodes
253    or the JIT?
254
255 A: Yes. The CLI engine will be made available as a shared library.
256    The garbage collection engine, the threading abstraction, the
257    object system, the dynamic type code system and the JIT will be
258    available for C developers to integreate with their applications if
259    they wish to do so. 
260
261 Q: Will you have new development tools?
262
263 A: Hopefully Free Software enthusiasts will contribute tools to
264    improve the developer environment.  These tools could be developed
265    initially using Microsoft implementation of the CLI and then
266    executed later with Mono.
267
268 ** Mono and Java
269    
270 Q: What about using Java?  After all there are many languages that
271    target the Java VM.
272    
273 A: You can get very good tools for doing Java development on free
274    systems right now.  <a href="http://www.redhat.com">Red Hat</a> has
275    contributed a <a href="http://gcc.gnu.org">GCC</a> <a
276    href="http://gcc.gnu.org/java">frontend for Java</a> that can take
277    Java sources or Java byte codes and generate native executables; <a
278    href="http://www.transvirtual.com">Transvirtual</a> has implemented
279    <a href="http://www.kaffe.org">Kaffe</a> a JIT engine for Java;
280    Intel also has a Java VM called <a
281    href="http://www.intel.com/research/mrl/orp">ORP</a>.
282
283    The JVM is not designed to be a general purpose virtual machine.
284    The Common Intermediate Language (CIL), on the other hand, is
285    designed to be a target for a
286    wide variety of programming languages, and has a set of rules
287    designed to be optimal for JITers.
288
289 Q: What kind of rules make the Common Intermediate Language useful for
290    JITers?
291
292 A: The main rule is that the stack in the CLI is not a general purpose
293    stack.   You are not allowed to use it for other purposes than
294    computing values and passing arguments to functions or return
295    values.  
296
297    At any given call or return instruction, the types on the stack
298    have to be the same independently of the flow of execution of your
299    code. 
300
301 ** Extending Mono
302
303 Q: Would you allow other classes other than those in the
304    specification?
305
306 A: Yes.  The Microsoft class collection is very big, but it is by no
307    means complete.  It would be nice to have a port of `Camel' (the
308    Mail API used by Evolution inspired by Java Mail) for Mono
309    applications.
310
311    For more information on extending Mono, see our <a
312    href="ideas.html">ideas</a> page.
313
314 ** Mono and portability
315
316 Q: Will Mono only work on Linux?
317
318 A: Currently, we are doing our work on Linux-based systems and
319    Windows.  We do not expect many Linux-isms in the code, so it
320    should be easy to port Mono to other UNIX variants.   
321
322 Q: What about Mono on non X-based systems?
323
324 A: Our main intention at Ximian is to be able to develop GNOME
325    applications with Mono, but if you are interested in providing a
326    port of the Winform classes to other platforms (frame buffer or
327    MacOS X for example), we would gladly integrate them, as long
328    they are under a Free Software License. 
329
330 ** Reusing existing Code
331
332 Q: What projects will you reuse or build upon?
333    
334 A: We want to get Mono in the hands of programmers soon.  We are
335    interested in reusing existing open source software.
336
337 Q: What about Intel's research JIT framework, ORP?
338    
339 A: At this time, we are investigating whether we can use elements of
340    ORP for Mono. 
341
342 Q: What about using GNU Lightning?
343
344 A: We are also researching <a
345    href="http://www.gnu.org/software/lightning/lightning.html">GNU
346    Lightning</a>.
347
348 ** Ximian and Microsoft
349
350 Q: Didn't Miguel de Icaza say that `Unix Sucks'?
351    
352 A: Yes, he did, as a catch phrase in his opening remark on the Ottawa
353    Linux Symposium.  His talk focused on various ways to improve Unix.
354
355    There is a paper describing some ways to improve Unix at:
356
357         <a href="http://primates.ximian.com/~miguel/bongo-bong.html">
358         http://primates.ximian.com/~miguel/bongo-bong.html</a>
359
360 Q: Didn't Ximian's Miguel work for Microsoft?
361
362 A: Actually, Nat Friedman (Ximian's co-founder) did work as an
363    intern for Microsoft for one summer but Miguel did not.
364
365 Q: Did Nat and Miguel meet at Microsoft?
366
367 A: They met online on the Linux IRC network;  They met in person for
368    the first time in 1997.
369
370 ** Acronyms
371
372 Q: What is the difference between CLR (Common Language Runtime) and
373    CLI (Common Language Infrastructure)?
374
375 A: CLI is the specification of an execution system.  The Microsoft
376    implementation of this specification is named CLR. 
377
378    Unless we come up with our own acronym, we could just call ours
379    also CLR, just because it would do exactly the same thing the
380    Microsoft implementation does.
381