Documentation update, plus cvs docs
[mono.git] / doc / ideas
1 * Ideas
2
3         Here are a few ideas of tools, classes and projects that you
4         could start. More are forthcoming.
5
6 <a name="runtime">
7 ** Runtime
8
9         We need a verifier that can be run on an executable (assembly)
10         and tells whether the metadata for the executable is correct
11         or not.  It should report any anomalies.
12
13         For a list of anomalies in assemblies, check the various assertions
14         that are described on the ECMA documentation. 
15
16         This will help test our generated executables and can be also
17         used as an external verifier.
18
19 <a name="classes">
20 ** Classes
21
22         <ul>
23 TODO=jxta,The JXTA Peer to Peer foundation
24                 * Implement a JXTA protocol implementation:
25                 <a href="http://www.jxta.org">http://www.jxta.org</a>
26
27 TODO=camel,Mail API
28                 * Implement a Mail API, similar to Camel or JavaMail (Camel has
29                   significant architecture features that are required on a real
30                   mailer).
31
32                   You can check the current C 
33                 <a href="http://cvs.gnome.org/bonsai/rview.cgi?dir=evolution%2Fcamel">
34                 Camel implementation</a>.
35
36                   Such an implementation could be used both with
37                   Microsoft .NET and Mono.
38
39 TODO=multimedia
40                 * Interfacing to Multimedia systems.  You might want
41                   to look into the Quicktime API.  I know <a
42                   href="mailto:vladimir@ximian.com">Vladimir</a> has
43                   researched the problem before 
44
45 TODO=gtk,Gtk+ wrappers for Mono and .NET
46                 * Wrap the Gtk+ API.  This is simple and can be done
47                   on Windows as Gtk+ 2.0 works on Windows.
48
49                   This work can also be used on Windows and will
50                   enable developers on Windows to use some of Gtk+'s
51                   advanced features.
52
53                   The idea is to wrap the Gtk+ API and allow us to
54                   build GUI applications using Gtk+ and in the future
55                   other Gtk+-based libraries from Mono (Gal, GtkHTML).
56
57                   There is extensive knowledge on wrapping Gtk+ in
58                   other languages (this has been done this for Perl,
59                   Python, Java, Scheme, Haskel and other languages in
60                   the past).
61         </ul>
62
63 <a name="projects">
64 ** Projects
65
66         <ul>
67 TODO=xmlStorage,
68                 * Implement an xmlStorageSystem for the CLI:
69                 <a href="http://www.soapware.org/xmlStorageSystem">
70                 http://www.soapware.org/xmlStorageSystem</a>
71
72 TODO=guavac,Java compiler for .NET
73                 * You could take one of the existing Java compilers
74                   (Guavac comes to mind as it is so nice) and modify
75                   it to generate .NET code rather than JVM byte
76                   codes. 
77
78                   This should be a pretty straightforward task.
79                   Guavac has the advantage of being written in C++ and
80                   it could be compiled with the Microsoft Managed C++
81                   compiler and produce a .NET executable with it.
82
83 TODO=CORBA,CORBA implementation
84                 * Build a CORBA interoperability engine for the CLR.
85                   You do not need to do all of the work, just talking
86                   the protocol will get us a long way (<a
87                   href="http://www.omg.org">The OMG site</a> has the
88                   CORBA specs).
89
90                   Get in touch with David Taylor (dtaylo11 at bigpond
91                   dot net dot au) as he has been working on this
92                   project.
93
94 TODO=Bonobo,Bonobo for Mono
95                 * Once CORBA is done, implement the Bonobo interfaces
96                   to allow people to use Bonobo components in Mono and
97                   Mono components with Bonobo.  The best of both worlds!
98
99 TODO=moniker,Object Naming System with Monikers
100                 * A naming space for Mono.  An object naming space is
101                   a very powerful tool.  Bonobo implements a moniker
102                   system that is more powerful than the original
103                   moniker concept that was pioneered by COM/OLE in the
104                   Microsoft world.
105
106                   Our implementation builds on a concept, and we have
107                   made it simpler, more powerful, more extensible and
108                   a much better mechanism than the equivalent monikers
109                   on Windows. 
110
111                   Implementing Mono monikers would benefit both
112                   Windows users using .NET and Mono users on Unix and
113                   Windows.  
114
115                   Here is <a
116                   href="http://primates.ximian.com/~miguel/monikers.html">an
117                   overview of the moniker system</a> in Bonobo.
118
119         </ul>