2002-03-13 Martin Baulig <martin@gnome.org>
[mono.git] / web / contributing
index 7e64a96ab21ec8d76975b01c5c5dc297eda225f1..5bec9cefda558cf6b93e8a442ecc3a32e283d491 100644 (file)
@@ -10,7 +10,7 @@
                  href="tools.html">the tools</a>, the <a
                  href="testing.html">testing framework</a>
 
-               * <b>Writers:</b> You can help us with writing <a
+               * <b>Writers:</b> You can help us bywriting <a
                  href="documentation.html">documentation</a>.
        </ul>
 
        something that would help tremendously would be to help with
        small duties in the project that need to be addressed. 
 
+       You can see what needs to be done in the class libraries <a href="class-status.html">here</a>
+
+** To start contributing
+
+       As a programmer, you can contribute in three different scenarios to Mono:
+
+       <ul>
+               * If you only have Linux/Unix.
+               * If you only have Windows.
+
+               * If you have both Linux and Windows.
+       </ul>
+
+       You might also want to check our <a href="#setup">common
+       setups</a> section that describes some common setups that people
+       use while working on Mono.
+
+*** Contributing to the class library, regression tests or the compiler
+
+       This only requires Windows currently.
+
+       To start developing classes or to contribute to the compiler,
+       you only need Windows and the .NET Framework 1.0 SDK.  Please notice
+       that you do not need Visual Studio (although you can use it if
+       you want).  The .NET Framework SDK requires some version of
+       Windows XP or Windows NT.  If you are running Windows 98, 95
+       or Me, you could use instead the <a
+       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
+       lacks the documentation browser and the ildasm program (C#, VB, JScript and IL 
+       assembler are included).
+
+       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>
+
+       If you are new to .NET, writing regression tests is a good way
+       of starting to contribute: it will help you get used to C# as
+       well as getting comfortable with the .NET APIs.  
+
+       This helps because at this point you might be the best
+       qualified person to fix a problem found by the regression
+       test, or you might have a new class to implement in the .NET
+       world that only has a test suite.  
+       
+       To get started writing tests see the <a href="testing.html">Test Suite</a>
+       section.
+
+*** Contributing to the runtime engine
+
+       This only requires Linux, currently some tasks are easier if you
+       have access to Windows as well.
+
+       Here are a few things you can do:
+       <ul>
+               * Port the runtime to other architectures.
+               * Port the runtime to other operating systems.
+               * Finish the IL code verifier in the runtime.
+               * Hack the JIT, improve the code generator, add new
+                 pattern rules, improve the register allocator.
+               * Implement the debugging interfaaces
+       </ul>
+
+** Bug reporting
+
+       If you find bugs in Mono, please make sure you enter a bug
+       report so we can keep track of problems in Mono.
+
+       To enter bug reports go to <a href="http://bugzilla.ximian.com">
+       http://bugzilla.ximian.com</a> and enter bug reports against
+       your favorite component (Mono, Runtime, C# compiler).
+
+       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>
+
 ** Small tasks
 
        A few smaller tasks are here, dropped in no particular order:
        <ul>
-               * <b>MCS compilation process:</b> Currently MCS does
-                 not build with a single `make' command.  This should
-                 be fixed (this being part of the `Joel Test' that
-                 software has to pass).
-
                * <b>Mono/doc and web site:</b> They need to be
                  packaged up in the official `distribution'
 
-               * <b>Enthusiasts: </b>
+               * Adding serialization support to all the classes.
+
+                 We have many classes, but we have not implemented in
+                 many cases the serialization and re-incarnation support in 
+                 them (this is pretty straight forward code, and simple,
+                 but there is a lot to be done here).
+       </ul>
+
+* Emacs support
+
+       Brad Merryl's C# mode for Emacs is available: <a
+       href="http://www.cybercom.net/~zbrad/DotNet/Emacs/">http://www.cybercom.net/~zbrad/DotNet/Emacs/</a>
+
+* Books on C# and DotNet.
+
+       <ul>
+       * Dotnet Books (<a href="http://www.dotnetbooks.com">http://www.dotnetbooks.com</a>)
+
+       * Dotnet Resources (<a href="http://www.dotnetexperts.com/resources/">
+         http://www.dotnetexperts.com/resources</a>)
+
+       * O'Reilly C# Essentials (<a href="http://www.oreilly.com/catalog/csharpess/">
+         http://www.oreally.com/catalog/csharpess</a>)
+
+       * O'Really .NET Essentials (<a href="http://www.oreilly.com/catalog/dotnetfrmess/">
+         http://www.oreally.com/catalog/dotnetfrmess</a>)
+       </ul>
+
+<a name="setup">
+* Common Setups
+
+       People running both Linux and Windows while contributing to
+       Mono use a number of tricks to increase their productivity.
+
+       Scenarios:
+
+       <ul>
+               * <b>Linux host and Windows host</b>
+
+                 The Windows file system is shared (right click on
+                 your hard drive icon, and select sharing, allow this
+                 to be shared).  
+
+                 The Windows machine has the required build tools
+                 (cygwin, and the .NET framework).  On the Windows
+                 machine, you want to setup the ssh server (run the
+                 ssh-host-config program to configure your ssh) and
+                 run it (from a cygwin terminal, type: /usr/sbin/sshd).
+
+                 From the Linux side, you want to mount the Windows
+                 file system, using something like this:
+
+<tt><pre>
+       mount -t smbfs -o uid=miguel,username="Miguel de Icaza" "//quack/c$" /mnt
+</pre></tt>
+
+                 In the above example, my Linux user name is
+                 `miguel', and this will allow this user to have
+                 read/write access to the share.  
+
+                 The host name is `quack', and the name of the share
+                 is `c$' (that is the C: partition).  
+
+                 The file system is accessible on /mnt.
+
+                 You can perform your cvs update and cvs commits from
+                 the /mnt directory, and run Emacs or your favorite
+                 Linux text editor on the Unix side in this way.
+
+                 Then from another terminal, you can ssh into your
+                 Windows box using ssh, like this: ssh "Miguel de Icaza@quack"
        </ul>
 
-* Special note
+* Special Note
 
        If you have looked at Microsoft's implementation of .NET or
        their shared source code, you may not be able to contribute