[Mono-list] you do not need windows to hack on mono

Paolo Molaro lupus@ximian.com
Fri, 22 Feb 2002 12:25:16 +0100

A lot of people want to contribute to the project, but they don't have
windows or for a number of reasons (and be sure I sympathize with most
if not all of them;-) don't want to use it.

But you really don't need windows to contribute, there is plenty of work
that can be done completely on Linux or other free systems. Here it is a
small task list:

*) port to other operating systems, for example *BSD. Should be easy,
as long as it is for the x86 platform. Just trying it and report 
problems to the list would help. Start with the interp if you are
porting to different architectures, see the porting document on the web

*) Help complete the trampoline code for ppc and sparc. Requires the
suitable hw and some knowledge of the respective assembly (or
willingness to learn: I wrote the x86 and sparc binary code generators
and knew nothing about assembly until a few months ago).

*) write the delegate support for ppc and sparc. Requirements as the
previous point. Essential to get the compiler to work on ppc and sparc,

*) Fix endianness issues in reflection.c. Easy. I marked most of the
spots that need attention with ENOENDIAN in the sources.

*) clean the mono/dis/ code and make it create a library with a clean
interface that can be reused in other parts of the project. Ensure
that it creates correct assembly. Ensure it doesn't have memory leaks.
Some cleanups are easy, interface design requires good taste:-)

*) write the IL code verifier. There is some code in
metadata/verifier.c. You need to implement all the checks explained in
Partition II and III of the ECMA specs. Medium difficulty, long task.
It needs to be fast since this will be run by the interp and JIT at
runtime and it needs to allow for descriptive errors when used by

*) read the marshal specification for P/Invoke. Develop a set of library
functions that implement the marshaling and can be reused in the
trampoline code and in the JIT. Easy-medium difficulty.

*) hack on the JIT: read the code, understand how it works and help
improve it. Fix it to run all the tests, optimize it etc. Dietmar might
have a more precise list of what needs to be done here. Hard stuff, but
I promise you'll learn quite a lot and it's great fun! ;-)

*) implement dwarf-2 debug support for the JIT. Hard.

*) implement macros for gdb to help debugging the runtime, for example
helper functions to easily inspect CLR objects. A pstring command to print
the contents of a MonoString in ascii. An otype command to print the
type of a MonoObject. You get the idea. Easy.

If you decide to tackle one of these projects, open a new thread about
it. Feel free to ask additional info about what each task needs or how
it needs to be done.
Oh, and if you want more, I can easily think of more tasks that need
work :-)



lupus@debian.org                                     debian/rules
lupus@ximian.com                             Monkeys do it better