Flush
[mono.git] / web / contributing
1 * Contributing to the Mono project
2
3         There are many ways in which you can help in the Mono project:
4
5         <ul>
6                 * <b>Programmers:</b> You can work on a free
7                   implementation of the <a
8                   href="class-library.html">class libraries</a>, the
9                   <a href="runtime.html">runtime engine</a>, <a
10                   href="tools.html">the tools</a>, the <a
11                   href="testing.html">testing framework</a>
12
13                 * <b>Writers:</b> You can help us bywriting <a
14                   href="documentation.html">documentation</a>.
15         </ul>
16
17         Those are just broad things that need to be worked on, but
18         something that would help tremendously would be to help with
19         small duties in the project that need to be addressed. 
20
21         You can see what needs to be done in the class libraries <a href="class-status.html">here</a>
22
23 ** To start contributing
24
25         To start developing classes or to contribute to the compiler,
26         you only need Windows and the .NET Framework 1.0 SDK.  Please notice
27         that you do not need Visual Studio (although you can use it if
28         you want).  The .NET Framework SDK requires some version of
29         Windows XP or Windows NT.  If you are running Windows 98, 95
30         or Me, you could use instead the <a
31         href="http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/001/829/msdncompositedoc.xml">.NET Redist package</a>, but it
32         lacks the documentation browser and the ildasm program (C#, VB, JScript and IL 
33         assembler are included).
34
35         You can get it <a href="http://msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.asp?url=/msdn-files/027/000/976/msdncompositedoc.xml&frame=true">here</a>
36
37         If you are new to .NET, writing regression tests is a good way
38         of starting to contribute: it will help you get used to C# as
39         well as getting comfortable with the .NET APIs.  
40
41         This helps because at this point you might be the best
42         qualified person to fix a problem found by the regression
43         test, or you might have a new class to implement in the .NET
44         world that only has a test suite.  
45         
46         To get started writing tests see the <a href="testing.html">Test Suite</a>
47         section.
48
49 ** Bug reporting
50
51         If you find bugs in Mono, please make sure you enter a bug
52         report so we can keep track of problems in Mono.
53
54         To enter bug reports go to <a href="http://bugzilla.ximian.com">
55         http://bugzilla.ximian.com</a> and enter bug reports against
56         your favorite component (Mono, Runtime, C# compiler).
57
58         You can review the list of current bugs by going <a href="http://bugzilla.ximian.com/buglist.cgi?product=Mono%2FClass+Libraries&product=Mono%2FMCS&product=Mono%2FRuntime&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&keywords=&keywords_type=anywords&op_sys_details=&op_sys_details_type=substring&version_details=&version_details_type=substring&cmdtype=doit&order=%27Importance%27&form_name=query">here</a>
59
60 ** Small tasks
61
62         A few smaller tasks are here, dropped in no particular order:
63         <ul>
64                 * <b>Mono/doc and web site:</b> They need to be
65                   packaged up in the official `distribution'
66
67                 * Adding serialization support to all the classes.
68
69                   We have many classes, but we have not implemented in
70                   many cases the serialization and re-incarnation support in 
71                   them (this is pretty straight forward code, and simple,
72                   but there is a lot to be done here).
73         </ul>
74
75 * Emacs support
76
77         Brad Merryl's C# mode for Emacs is available: <a
78         href="http://www.cybercom.net/~zbrad/DotNet/Emacs/">http://www.cybercom.net/~zbrad/DotNet/Emacs/</a>
79
80 * Books on C# and DotNet.
81
82         <ul>
83         * Dotnet Books (<a href="http://www.dotnetbooks.com">http://www.dotnetbooks.com</a>)
84
85         * Dotnet Resources (<a href="http://www.dotnetexperts.com/resources/">
86           http://www.dotnetexperts.com/resources</a>)
87
88         * O'Reilly C# Essentials (<a href="http://www.oreilly.com/catalog/csharpess/">
89           http://www.oreally.com/catalog/csharpess</a>)
90
91         * O'Really .NET Essentials (<a href="http://www.oreilly.com/catalog/dotnetfrmess/">
92           http://www.oreally.com/catalog/dotnetfrmess</a>)
93         </ul>
94
95 * Special note
96
97         If you have looked at Microsoft's implementation of .NET or
98         their shared source code, you may not be able to contribute
99         to Mono.  Details will follow when we know more about this.
100
101         In general be careful when you are implementing free software
102         and you have access to proprietary code.  We need to make sure
103         that we are not using someone else's copyrighted code
104         accidentally. 
105
106         Please do not use the <b>ildasm</b> program to disassemble
107         proprietary code when you are planning to reimplement a class
108         for Mono.  If you have done this, we might not be able to use
109         your code.
110
111         Please stick to published documentation for implementing any
112         classes.