6 The GNOME project goal was to bring missing technologies to
7 Unix and make it competitive in the current market place for
8 desktop applications. We also realized early on that language
9 independence was important, and that is why GNOME APIs were
10 coded using a standard that allowed the APIs to be easily
11 wrapped for other languages. Our APIs are available to most
12 programming languages on Unix (Perl, Python, Scheme, C++,
15 Later on we decided to use better methods for encapsulating
16 our APIs, and we started to use CORBA to define interfaces to
17 components. We complemented it with policy and a set of
18 standard GNOME interfaces for easily creating reusable,
19 language independent components, controls and compound
20 documents. This technology is known as <a
21 href="http://www.ximian.com/tech/bonobo.php3">Bonobo<a>.
22 Interfaces to Bonobo exist for C, Perl, Python, and
25 CORBA is good when you define coarse interfaces, and most
26 Bonobo interfaces are coarse. The only problem is that
27 Bonobo/CORBA interfaces are not good for small interfaces.
28 For example, an XML parsing Bonobo/CORBA component would be
29 inefficient compared to a C API.
33 The Microsoft .NET initiative is confusing because it is a
34 company wide effort that ranges from development tools to end
35 user applications. .NET is a branding formative that
39 * The .NET development platform, a new platform for
44 * Microsoft Server Applications.
46 * New tools that use the new development platform.
48 * Hailstorm, the Passport centralized single-signon
49 system that is being integrated into Windows XP.
53 Mono is an implementation of the .NET development platform.
55 ** The Common Language Infrastructure platform.
57 Microsoft has created a new development platform. The
58 highlights of this new development platform are:
61 * A runtime environment that provides garbage
62 collection, threading and a virtual machine
63 specification (The Virtual Execution System, VES)
65 * A comprehensive class library.
67 * A new language, C#. Very similar to Java, C#
68 allows programmers to use all the features available
71 * A language specification that compilers can
72 follow if they want to generate classes and code
73 that can interoperate with other programming
74 languages (The Common Language Specification: CLS)
77 The Common Language Infrastructure platform is similar to the
78 goals we had in GNOME of giving language independence to
79 programmers. It is more mature, documented, larger in scope,
80 and has a consistent design.
82 Any API that is written using a CLS provider language can be
83 used by any language that is a CLS consumer. Compilers
84 generate code in a format called Common Intermediate Language
85 (CIL) which is an intermediate representation of a compiled
86 program and is easy to compile to native code or compiled
87 using Just-in-Time (JIT) engines. The restrictions placed by
88 the runtime on the CIL byte codes ensures that it is possible
89 to do a good job at optimizing the code in a JIT compiler.
91 There is not really a lot of innovation in this platform: we
92 have seen all of these concepts before, and we are all
93 familiar with how these things work.
95 What makes the Common Language Infrastructure development
96 platform interesting is that it is a good mix of technologies
97 that have been nicely integrated.
99 The .NET development platform is essentially a new foundation
100 for program development that gives Microsoft a room to grow
101 for the coming years.
105 Microsoft has submitted the
106 specifications of C#, the runtime, the metadata and the
107 other various bits of the .NET development platform to the
108 <a href="http://www.ecma.ch">ECMA</a> for standarization.
110 You can get a copy of the specifications submitted to ECMA
111 from: <a href="http://www.dotnetexperts.com/ecma">http://www.dotnetexperts.com/ecma</a>
113 ** Mono: an Open Source Common Language Infrastructure implementation.
115 Ximian has begun work on Mono, a project that aims to bring
116 the Common Language Infrastructure platform to free systems.
118 When the GNU project was launched, they picked the best
119 operating system that was available out there, and they
120 began to clone it: Unix.
122 The .NET development platform is a very rich, powerful, and
123 well designed platform that would help improve the free
124 software development platform. Just like the GNU project
125 began to clone Unix sixteen years ago, we will be cloning the
126 .NET development platform because it is a great platform to
129 ** What makes up Mono?
131 There are various pieces that will make up Mono:
136 * The Virtual Execution System: that will have the
137 Just-in-Time compiler, garbage collector, loader,
140 A byte code interpreter will be provided for quickly
141 porting Mono to new systems and debugging the JIT
142 purposes, but it is not intended to be the ideal
143 execution environment.
145 * An implemenation of the .NET class library.
147 * Visual development tools.
149 * A CIL GCC frontend.
152 ** Why use GNOME components?
154 GNOME is an umbrella project that consists of infrastructural
155 components (GUI toolkit, XML libraries, CORBA implementation,
156 printing architecture, imaging system), a desktop environment,
157 and productivity applications.
159 The GNOME infrastructural components can be used to quickly
160 implement various pieces of the class libraries without reinventing
161 the wheel, and since all those components are licensed under
162 the terms of the GNU LGPL it is a perfect fit.
164 Libart will be used to implement the Drawing.2D API; Gtk+ and
165 the GNOME libraries will be used to implement the WinForms
166 API and of course Glib and libxml will be used in various