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://developer.ximian.com/articles/whitepapers/bonobo">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 make up Mono today:
142 * The Virtual Execution System: that has the
143 Just-in-Time compiler, garbage collector, loader,
146 A byte code interpreter is 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 libraries:
152 Remoting, Reflection, Reflection.Emit, Xml, Xpath,
153 Xslt, Xml Serialization, Web Services support.
155 * Cross platform class libraries for data access:
156 Postgress, MySQL, DB2, TDS, Sybase, Oracle, ODBC and
159 * Unix class libraries: Mono.Posix
161 * Gnome-specific class libraries: The Gtk# family.
163 * A code pre-compiler to generate native code ahead of
166 * Gtk# a toolkit to develop GNOME applications on Unix
169 * An implementation of the Remoting infrastructure in
173 Other work-in-progress components:
176 * A VB.NET compiler and JScript compilers are in the works.
178 * Web services on the server side.
180 * We are planning to include Remoting.CORBA as part of
181 Mono standard distribution.
184 ** Why use GNOME components?
186 GNOME is an umbrella project that consists of infrastructural
187 components (GUI toolkit, XML libraries, CORBA implementation,
188 printing architecture, imaging system), a desktop environment,
189 and productivity applications.
191 The GNOME infrastructural components can be used to quickly
192 implement various pieces of the class libraries without reinventing
193 the wheel, and since all those components are licensed under
194 the terms of the GNU LGPL it is a perfect fit.
196 Libart will be used to implement the Drawing.2D API; Gtk+ and
197 the GNOME libraries will be used to implement the WinForms
198 API and of course Glib and libxml will be used in various