3 The Class Library should be compatible with Microsoft's .NET
6 We will write as much code as possible in C#. We may need to
7 interface with code written in C to gain access to the
9 libraries like libart, Gtk+, and libc.
13 The Class Library resides in the `mcs' module in the directoy
16 Each directory in the directory represents the assembly where
17 the code belongs to, and inside each directory we divide the
18 code based on the namespace they implement.
20 There are two cases when we should consider portability: when
21 we are dealing with a couple of classes only that differ from
22 system to system (Consider System.Net and System.IO for Win32
23 and Unix). In those cases we will just place the files for
24 example on <t>corlib/System/System.IO/Unix-Console.cs</t> and
25 <t>corlib/System/System.IO/Win32-Console.cs</t>.
27 For classes that might differ more (for example, the
28 implementation of Windows.Forms), we might have different
29 directories altogether: <t>System.Windows.Forms/Win32</t>,
30 <t>System.Windows.Forms/Gtk+</t> and
31 <t>System.Windows.Forms/Cocoa</t>.
33 ** Using existing components from GNOME.
35 Our current plan is to implement the GUI tools on top of
36 Gtk+. The only obstacle here is that applications from Windows
37 might expect to be able to pull the HWND property from the
38 widgets and use PInvoke to call Windows functions.
40 ** Class Library and Win32 dependencies.
42 There are a few spots where the Win32 foundation is exposed to
43 the class library (for example, the HDC and HWND properties in
44 the GDI+). Casual inspection suggests that these can be
45 safely mapped to Gdk's GC and GdkWindow pointers without
48 The only drawback is that support for PInvoke of Win32 code
49 won't be available. An alternate solution would be to use
50 portions of Wine, or even to use Wine as our toolkit.
52 *** Initial GDI+ and WinForms implementation
54 The initial implementation will use Gtk+ as the underlying
55 toolkit. Since GTK+ has already been ported to many windowing
56 systems other than X (including frame buffer, Win32, and BeOS)
57 its use should cover most applications for most users.
61 We will implement ADO.NET functionality by reusing <a
62 href="http://www.gnome-db.org">GNOME-DB</a>. This is an ideal
63 choice, since GNOME-DB was implemented precisely to provide an
64 ADO-like system for GNOME.
66 *** Component Integration
68 We will provide a new namespace to use GNOME specific features
69 as well as a namespace to host Bonobo interfaces and classes
74 The class library will be licensed under the terms of the GNU
77 We suggest that you assign the copyright of your work to the
78 GNOME Foundation or the Free Software Foundation to simplify
79 defending the code in case it is used inappropiately.
81 ** Class Library testing
83 We need to write regression tests that will verify
84 the correctness of the class library, compiler, and JIT
89 We welcome contributions to the the Class Library. To get
90 started, check the status page for information about which
91 APIs are being worked on, and how to get in touch with
92 individual maintainers.