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