Further flushage
[mono.git] / web / class-library
1 * The Class Library
2
3         The Class Library should be compatible with Microsoft's .NET
4         implementation.  
5
6         Ideally as much code as possible should be written using C#.
7         In some cases we might either need to interface with code
8         written in C for large chunks of functionality (libart and
9         Gtk+ for example) or we would need to interface to the system
10         libraries (libc on Unix for networking functions for
11         example).  
12
13 ** Using existing components from GNOME.
14
15         Our current plan is to implement the GUI tools on top of
16         Gtk+.  The only problem is that applications from Windows
17         might expect to be able to pull the HWND property from the
18         widgets and use PInvoke to call Windows functions.
19
20 ** Class Library and Win32 dependencies.
21
22         There are a few spots where the Win32 foundation is exposed to
23         the class library (the HDC and HWND properties in the GDI+).
24         It seems from casual inspection that these can be safely
25         mapped to Gdk's GC and GdkWindow pointers without breaking anything.
26
27         The only drawback is that support for PInvoke of Win32 code
28         wont be available.  If this is necessary it could be possible
29         in the future by reusing pieces of Wine, and probably using
30         Wine as our toolkit, but we think that this is not as
31         important as we will wrap GNOME elements in the meantime. 
32
33 *** Initial GDI+ and WinForms implementation
34
35         The initial implementation will use Gtk+ as the underlying
36         toolkit, but implementations for other windowing systems
37         should be possible (particularly thinking about PDA devices
38         here).
39
40         Since Gtk+ 2.0 has been ported to other windowing systems
41         other than X (frame buffer, Win32 and BeOS implementation
42         exist) it should cover most uses for most users.
43
44 *** Database access
45
46         Implementing the ADO.NET functionality can be done through
47         reusing <a href="http://www.gnome-db.org">GNOME-DB</a> as
48         GNOME-DB was implemented precisely to provide an ADO-like
49         system for GNOME.
50
51 *** Component Integration
52
53         We will provide a new namespace to use GNOME specific features
54         as well as a namespace to host Bonobo interfaces and classes
55         in Mono.  
56
57 ** Licensing
58
59         The class library will be licensed under the terms of the GNU
60         LGPL.
61
62         We suggest that you assign the copyright of your work to the
63         GNOME Foundation or the Free Software Foundation to simplify
64         defending the code in case it is used inappropiately. 
65
66 ** Contributing
67
68         We welcome contributions to the the Class Library, you can
69         check the status page.  Our status page describes which APIs
70         are being worked on and the contact information for the
71         contributor.
72
73