  <chapter id="patches">
    <title>Submitting Patches</title>

    <para>
      Written by &name-albert-den-haan; <email>&email-albert-den-haan;</email>
    </para>
    <sect1 id="patch-format">
      <title>Patch Format</title>

      <para>
        Your patch should include:
      </para>

      <itemizedlist>
        <listitem>
          <para>
            A meaningful subject (very short description of patch)            
          </para>
        </listitem>
         <listitem>
          <para>
            A long (paragraph) description of what was wrong and what is now 
            better (and now broken :). (recommended)
          </para>
        </listitem>
        <listitem>
          <para>
            Change Log: A short description of what was changed.
          </para>
        </listitem>
        <listitem>
          <para>
            Your contact information ( Name/Handle and e-mail )
          </para>
        </listitem>
        <listitem>
          <para>
            The patch in <command>diff -u</command> format (it happens...)
          </para>
        </listitem>
      </itemizedlist>

      <para>
        <command>cvs diff -u</command> works great for the common case
        where a file is edited.  However, if you add or remove a file
        <command>cvs diff</command> will not report that correctly so
        make sure you explicitly take care of this rare case.
      </para>
      <para>
        For additions: mention that you have some new files and
        include them by appending the
        <command>diff -u /dev/null /my/new/file</command> output of them
	to any <command>cvs diff -u</command> output you may have.
	Alternatively, use <command>diff -Nu olddir/ newdir/</command>
	in case of multiple new files to add.
      </para>
      <para>
        For removals, list the files.
      </para>
      <para>
        Since wine is constantly changing due to development it is strongly
        recommended that you use cvs for patches, if you cannot use cvs for
        some reason, you can submit patches against the latest tarball. 
        To do this make a copy of the files that you will be modifying and
        <command>diff -u</command> against the old file. I.E.
      </para>
      <screen>
diff -u file.old file.c > file.txt
      </screen>
    </sect1>

    <sect1 id="Style-notes">
      <title>Some notes about style</title>
       
      <para>
        There are a few conventions that about coding style that have been
        adopted over the years of development. The rational for these 
        <quote>rules</quote> is explained for each one.
      </para>
      <itemizedlist>
        <listitem>
        <para>
          No HTML mail, since patches should be in-lined and HTML turns the 
          patch into garbage. Also it is considered bad etiquette as it 
          uglifies the message, and is not viewable by many of the subscribers.
        </para>
        </listitem>
         <listitem>
        <para>
           Only one change set per patch. Patches should address only one
           bug/problem at a time. If a lot of changes need to be made then it
           is preferred to break it into a series of patches. This makes it
           easier to find regressions.
        </para>
        </listitem>
        <listitem>
        <para>
          Tabs are not forbidden but discouraged. A tab is defined as
          8 characters and the usual amount of indentation is 4
          characters.
        </para>
        </listitem>
        <listitem>
        <para>
          C++ style comments are discouraged since some compilers choke on 
          them.
        </para>
        </listitem>
        <listitem>
        <para>
          Commenting out a block of code is usually done by enclosing it in 
          <command>#if 0 ... #endif</command> Statements. For example.
        </para>
        <screen> 
/* note about reason for commenting block */
#if 0
code
code /* comments */
code
#endif
        </screen>
        <para>
          The reason for using this method is that it does not require that
          you edit comments that may be inside the block of code.
        </para>
        </listitem>
        <listitem>
        <para>
          Patches should be in-lined (if you can configure your email client to
          not wrap lines), or attached as plain text attachments so they can 
          be read inline. This may mean some more work for you. However it
          allows others to review your patch easily and decreases the chances
          of it being overlooked or forgotten.
        </para>
        </listitem>
        <listitem>
        <para>
          Code is usually limited to 80 columns. This helps prevent mailers
          mangling patches by line wrap. Also it generally makes code easier
          to read.
        </para>
        </listitem>
      </itemizedlist>
      <sect2 id="Inline-Attachments-with-OE">
        <title>Inline attachments with Outlook Express</title>
        <para>
          Outlook Express is notorious for mangling attachments. Giving the
          patch a <filename>.txt</filename> extension and attaching will solve
          the problem for most mailers including Outlook. Also, there is a way
          to enable Outlook Express send <filename>.diff</filename>
          attachments.
        </para>
        <para>
          You need following two things to make it work.
        </para>
        <orderedlist>
          <listitem>
          <para>
            Make sure that <filename>.diff</filename> files have \r\n line
            ends, because if OE detects that there is no \r\n line endings it
            switches to quoted-printable format attachments.
          </para>
          </listitem>
          <listitem>
          <para>
            Using regedit add key "Content Type" with value "text/plain" 
            to the .diff extension under HKEY_CLASSES_ROOT (same as for .txt
            extension). This tells OE to use Content-Type: text/plain instead
            of application/octet-stream.
          </para>
          </listitem>
        </orderedlist>
        <para>
          Item #1 is important. After you hit "Send" button, go to "Outbox" 
          and using "Properties" verify the message source to make sure that
          the mail has correct format. You might want to send several test
          emails to yourself too.
        </para>
      </sect2>
      <sect2 id="Alexandre-Bottom-Line">
        <title>Alexandre's Bottom Line</title>
        <para>
          <quote>The basic rules are: no attachments, no mime crap, no 
          line wrapping, a single patch per mail. Basically if I can't 
          do <Command>"cat raw_mail | patch -p0"</command> it's in the
          wrong format.</quote>
        </para>
      </sect2>
    </sect1>

    <sect1 id="patch-quality">
      <title>Quality Assurance</title>

      <para>
        (Or, "How do I get Alexandre to apply my patch quickly so I
        can build on it and it will not go stale?")
      </para>
      <para>
        Make sure your patch applies to the current CVS head
        revisions.  If a bunch of patches are committed to CVS that may
        affect whether your patch will apply cleanly then verify that
        your patch does apply!   <command>cvs update</command> is your
        friend!
      </para>
      <para>
        Save yourself some embarrassment and run your patched code
        against more than just your current test example.  Experience
        will tell you how much effort to apply here.
      </para>

    </sect1>
  </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("wine-devel.sgml" "set" "book" "part" "chapter" "")
End:
-->
