--- /dev/null
+<html>\r
+<body>\r
+<h1>Testing</h1>\r
+A test should be done on code committed to svn. Commit, then test. That way \r
+one can know for sure *what* code was actually tested.\r
+<h1>Release procedure</h1>\r
+OpenOCD trunk is work in progress. Expect it to change daily and to have\r
+some work in progress.\r
+<p>\r
+If you need the latest released and tested version, look for binary snapshots of \r
+OpenOCD. Worst case look up the test result table below for the features \r
+that are important to you and extract and build the version that has the right\r
+cocktail of working features for you. You can also work with the community\r
+to address the problems you are seing. Testing work and bug reports are\r
+highly appreciated. \r
+<p>\r
+The OpenOCD community may decide to create release branches. If\r
+this happens, then a branch will be created from OpenOCD trunk. The particular\r
+version to create that branch might be an older version rather than the latest\r
+and greatest. Fixes are then ported to that release branch from OpenOCD trunk.\r
+<h2>Vocabulary</h2> \r
+<table border=1>\r
+<tr><td>Passed version</td><td>The latest version on which the test is known to pass</td></tr>\r
+<tr><td>Broken version</td><td>The latest version on which the test is known to fail. n/a when older than passed version.</td></tr>\r
+<tr><td>ID</td><td>A unqiue ID to refer to a test. The unique numbers are maintained in this file.</td></tr> \r
+</table>\r
+\r
+<h1>OpenOCD test results</h1>\r
+These tests can be performed on any JTAG device as long\r
+as they are executed using the unmodified code from SVN.\r
+<p>\r
+The latest version in which the test is known to have\r
+passed is in the table below. \r
+<table border=1>\r
+ <tr><th>ID</th><th>Synopsis</th><th>Passed version</th><th>Broken version</th></tr>\r
+ <tr><td>ocd1</td><td>Telnet Windows</td><td>291</td><td>n/a</td></tr>\r
+ <tr><td>ocd2</td><td>Telnet Linux</td><td>291</td><td>n/a</td></tr>\r
+ <tr><td>ocd3</td><td>Telnet Cygwin</td><td>291</td><td>n/a</td></tr>\r
+ <tr><td><a href="#test_ocd4">ocd4</a></td><td>ARM7 debugging</td><td>291</td></tr>\r
+ <tr><td>xscale1</a></td><td>XScale debugging</td><td>291</td></tr>\r
+ <tr><td>xscale2</a></td><td>XScale MMU</td><td>291</td></tr>\r
+</table>\r
+<h1>OpenOCD JTAG device test results</h1>\r
+Each JTAG device must be tested \r
+<table border=1>\r
+ <tr><th>ID</th><th>Synopsis</th><th>Passed version</th><th>Broken version</th></tr>\r
+ <tr><td>jtag1</td><td>Wiggler</td><td>291</td><td>n/a</td></tr>\r
+ <tr><td>jtag2</td><td>Parport</td><td>291</td><td>n/a</td></tr>\r
+ <tr><td>jtag3</td><td>...</td><td>291</td><td>n/a</td></tr>\r
+</table>\r
+\r
+<h1>Policy on removing features from OpenOCD</h1>\r
+If a feature in OpenOCD is known to be broken and nobody has\r
+submitted a fix and the feature is causing trouble for\r
+maintainence, it can be removed from OpenOCD trunk. The threshold\r
+for temporarily removing something from OpenOCD trunk is low to\r
+ease maintainence and place the burden of maintainence on\r
+those that care about a feature. \r
+<p>\r
+Note that code is never deleted from OpenOCD svn, it remains\r
+in svn so if somebody sees a feature removed that they would\r
+like kept, they have but to port and fix that feature\r
+back up to main trunk. This document can be helpful in this\r
+regard in that the latest working version and the known broken\r
+version may be listed. \r
+<h1>Policy on adding features from OpenOCD</h1>\r
+To add a feature to OpenOCD, generally it should not break any existing\r
+features and it should be functional and the code reasonably readable\r
+and useful to others in the OpenOCD community. The code does not\r
+have to be completed. Work in progress is fine for OpenOCD trunk.\r
+<p>\r
+Also new tests should be defined. Note that the code does not have\r
+to pass all the tests. In fact it can be helpful to have tests\r
+to describe facets that really should be working, but aren't\r
+done yet.\r
+<a name="test_ocd4">\r
+<h1>ocd4 - ARM7 debugging</h1>\r
+Connect to ARM7 device(any), use GDB load to load a program into RAM and single halt, resume and single step.\r
+</body>\r
+</html>\r
\ No newline at end of file