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.
31 ** Another explanation
33 I recently explained our motivations to Dave Winer, and he posted
35 href="http://scriptingnews.userland.com/stories/storyReader$1275">here</a>
39 The Microsoft .NET initiative is confusing because it is a
40 company wide effort that ranges from development tools to end
41 user applications. .NET is a branding formative that
45 * The .NET development platform, a new platform for
50 * Microsoft Server Applications.
52 * New tools that use the new development platform.
54 * Hailstorm, the Passport centralized single-signon
55 system that is being integrated into Windows XP.
59 Mono is an implementation of the .NET development platform.
61 ** The Common Language Infrastructure platform.
63 Microsoft has created a new development platform. The
64 highlights of this new development platform are:
67 * A runtime environment that provides garbage
68 collection, threading and a virtual machine
69 specification (The Virtual Execution System, VES)
71 * A comprehensive class library.
73 * A new language, C#. Very similar to Java, C#
74 allows programmers to use all the features available
77 * A language specification that compilers can
78 follow if they want to generate classes and code
79 that can interoperate with other programming
80 languages (The Common Language Specification: CLS)
83 The Common Language Infrastructure platform is similar to the
84 goals we had in GNOME of giving language independence to
85 programmers. It is more mature, documented, larger in scope,
86 and has a consistent design.
88 Any API that is written using a CLS provider language can be
89 used by any language that is a CLS consumer. Compilers
90 generate code in a format called Common Intermediate Language
91 (CIL) which is an intermediate representation of a compiled
92 program and is easy to compile to native code or compiled
93 using Just-in-Time (JIT) engines. The restrictions placed by
94 the runtime on the CIL byte codes ensures that it is possible
95 to do a good job at optimizing the code in a JIT compiler.
97 There is not really a lot of innovation in this platform: we
98 have seen all of these concepts before, and we are all
99 familiar with how these things work.
101 What makes the Common Language Infrastructure development
102 platform interesting is that it is a good mix of technologies
103 that have been nicely integrated.
105 The .NET development platform is essentially a new foundation
106 for program development that gives Microsoft a room to grow
107 for the coming years.
111 Microsoft has submitted the
112 specifications of C#, the runtime, the metadata and the
113 other various bits of the .NET development platform to the
114 <a href="http://www.ecma.ch">ECMA</a> for standarization.
116 You can get a copy of the specifications submitted to ECMA
117 from: <a href="http://www.dotnetexperts.com/ecma">http://www.dotnetexperts.com/ecma</a>
119 ** Mono: an Open Source Common Language Infrastructure implementation.
121 Ximian has begun work on Mono, a project that aims to bring
122 the Common Language Infrastructure platform to free systems.
124 When the GNU project was launched, they picked the best
125 operating system that was available out there, and they
126 began to clone it: Unix.
128 The .NET development platform is a very rich, powerful, and
129 well designed platform that would help improve the free
130 software development platform. Just like the GNU project
131 began to clone Unix sixteen years ago, we will be cloning the
132 .NET development platform because it is a great platform to
135 ** What makes up Mono?
137 There are various pieces that will make up Mono:
142 * The Virtual Execution System: that will have the
143 Just-in-Time compiler, garbage collector, loader,
146 A byte code interpreter will be provided for quickly
147 porting Mono to new systems and debugging the JIT
148 purposes, but it is not intended to be the ideal
149 execution environment.
151 * An implemenation of the .NET class library.
153 * Visual development tools.
155 * A CIL GCC frontend.
158 ** Why use GNOME components?
160 GNOME is an umbrella project that consists of infrastructural
161 components (GUI toolkit, XML libraries, CORBA implementation,
162 printing architecture, imaging system), a desktop environment,
163 and productivity applications.
165 The GNOME infrastructural components can be used to quickly
166 implement various pieces of the class libraries without reinventing
167 the wheel, and since all those components are licensed under
168 the terms of the GNU LGPL it is a perfect fit.
170 Libart will be used to implement the Drawing.2D API; Gtk+ and
171 the GNOME libraries will be used to implement the WinForms
172 API and of course Glib and libxml will be used in various