Migrating wiki contents from Google Code
diff --git a/Benckmark.md b/Benckmark.md
new file mode 100644
index 0000000..85d67f3
--- /dev/null
+++ b/Benckmark.md
@@ -0,0 +1,27 @@
+# Benchmark using benchmark.html #
+
+ * Checkout the latest pywebsocket
+```
+$ svn checkout https://pywebsocket.googlecode.com/svn/trunk
+```
+ * Open `setup.py` using some editor and set `_USE_FAST_MASKING` to `True`
+ * Build the extension
+```
+$ ./setup.py build_ext --inplace
+```
+ * Move to `src/`
+```
+$ cd src
+```
+ * Launch pywebsocket
+```
+$ PYTHONPATH=. python mod_pywebsocket/standalone.py -p <port> -d example
+```
+ * Navigate your browser to `localhost:<port>/benchmark.html`
+
+# Benchmark using console.html #
+
+ * Open console.html
+ * Connect to the resource "`ws://<host>:<port>/echo_noext`".
+ * Check "Show time stamp"
+ * Specify some big file and click send file.
\ No newline at end of file
diff --git a/CodeReviewInstruction.md b/CodeReviewInstruction.md
new file mode 100644
index 0000000..10a8b6c
--- /dev/null
+++ b/CodeReviewInstruction.md
@@ -0,0 +1,51 @@
+# Create and upload a patch #
+
+Install [depot\_tools](http://dev.chromium.org/developers/how-tos/install-depot-tools) for Chromium project
+
+Make a change on the trunk and create a change list by
+```
+$ gcl change
+```
+
+Upload the change list to the [code review site](https://codereview.appspot.com/)
+```
+$ gcl upload <change list name>
+```
+
+Once got LGTM, commit by
+```
+$ gcl commit <change list name>
+```
+
+# Run all unit tests #
+
+cd to src/ directory, and run
+```
+$ python test/run_all.py --log_level debug -- -v
+```
+
+# Check coding style #
+
+Run [pep8](https://pypi.python.org/pypi/pep8)
+```
+$ pep8 --repeat **/*.py
+```
+
+# Release #
+
+Update version in src/setup.py, and commit.
+
+Create a new tag
+```
+$ svn cp https://pywebsocket.googlecode.com/svn/trunk https://pywebsocket.googlecode.com/svn/tags/pywebsocket-version
+```
+
+Announce on the pywebsocket group
+
+# Update DEPS in Chromium #
+
+Update the revision number part in the rule for pywebsocket
+
+# Update pywebsocket copy in the WebKit repository #
+
+http://trac.webkit.org/wiki/pywebsocket%3A%20a%20WebSocket%20server%20for%20layout%20tests
\ No newline at end of file
diff --git a/CompressionSpec.md b/CompressionSpec.md
new file mode 100644
index 0000000..86539ac
--- /dev/null
+++ b/CompressionSpec.md
@@ -0,0 +1,36 @@
+#Notes for developing compression spec.
+
+# Python zlib snippets #
+
+Sync flush (empty uncompressed block)
+```
+import zlib
+c = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS)
+b = c.compress('abcdefghijklmnopqrstuvwxyz')
+b += c.flush(zlib.Z_SYNC_FLUSH)
+b
+```
+
+Finish with BFINAL
+```
+import zlib
+c = zlib.compressobj(zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS)
+b = c.compress('abcdefghijklmnopqrstuvwxyz')
+b += c.flush(zlib.Z_FINISH)
+b
+```
+
+Hex printing
+```
+' '.join(map(lambda x: '0x%02x' % ord(x), b))
+```
+
+Decompress
+```
+import zlib
+d = zlib.decompressobj(-zlib.MAX_WBITS)
+max_length = 1
+d.decompress(b, max_length)
+d.decompress(d.unconsumed_tail)
+d.unconsumed_tail
+```
\ No newline at end of file
diff --git a/ProjectHome.md b/ProjectHome.md
new file mode 100644
index 0000000..5d9a877
--- /dev/null
+++ b/ProjectHome.md
@@ -0,0 +1,53 @@
+
+# pywebsocket #
+
+## What is it? ##
+
+The pywebsocket project aims to provide a [WebSocket](http://tools.ietf.org/html/rfc6455) standalone server and a WebSocket extension for [Apache HTTP Server](http://httpd.apache.org/), mod\_pywebsocket.
+
+pywebsocket is intended for **testing** or **experimental** purposes. To run with Apache HTTP Server, [mod\_python](http://www.modpython.org/) is required. For wss, mod\_ssl is also required.
+
+pywebsocket supports RFC 6455 (and [some legacy protocols](WebSocketProtocolSpec.md)) and the following extension.
+
+ * [WebSocket Per-message Compression (permessage-deflate)](http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-17)
+
+## How can I use it? ##
+
+To try mod\_pywebsocket, please do:
+```
+svn checkout http://pywebsocket.googlecode.com/svn/trunk/ pywebsocket-read-only
+```
+and follow the instructions in [pywebsocket-read-only/src/README](http://code.google.com/p/pywebsocket/source/browse/trunk/src/README).
+
+To run mod\_pywebsocket as an Apache HTTP Server extension module, please read comments in
+[pywebsocket-read-only/mod\_pywebsocket/\_\_init\_\_.py](http://code.google.com/p/pywebsocket/source/browse/trunk/src/mod_pywebsocket/__init__.py).
+
+To run mod\_pywebsocket as a standalone server (i.e., not using Apache HTTP Server), please
+read comments in
+[pywebsocket-read-only/mod\_pywebsocket/standalone.py](http://code.google.com/p/pywebsocket/source/browse/trunk/src/mod_pywebsocket/standalone.py).
+
+See TestingYourWebSocketImplementation for quick tutorial for testing your WebSocket implementation using pywebsocket.
+
+## Examples ##
+
+The following is a list of **third party** examples.
+
+ * http://code.google.com/p/websocket-sample/
+
+## Questions or suggestions? ##
+
+We have a list for users and developers. Please join http://groups.google.com/group/pywebsocket.
+
+## For developers who intend to contribute to pywebsocket ##
+
+### Legal ###
+
+You must complete the [Individual Contributor License Agreement](http://code.google.com/legal/individual-cla-v1.0.html). You can do this online, and it only takes a minute. If you are contributing on behalf of a corporation, you must fill out the [Corporate Contributor License Agreement](http://code.google.com/legal/corporate-cla-v1.0.html) and send it to us as described on that page.
+
+### Nuts and bolts ###
+
+Basically, we apply PEP-8 coding style guide http://www.python.org/dev/peps/pep-0008/ to Python code in this project and in some case we follow some rules from Google Python style guide http://google-styleguide.googlecode.com/svn/trunk/pyguide.html if they don't conflict with PEP-8.
+
+We use the shared Rietveld site hosted by Google AppEngine http://codereview.appspot.com for reviewing code. There's a list for watching review in Google Groups http://groups.google.com/group/pywebsocket-reviews and one for watching changes on bug tracker http://groups.google.com/group/pywebsocket-bugs.
+
+See also WebSocketProtocolSpec, a note for developer about WebSocket protocol design
\ No newline at end of file
diff --git a/TestingYourWebSocketImplementation.md b/TestingYourWebSocketImplementation.md
new file mode 100644
index 0000000..4304193
--- /dev/null
+++ b/TestingYourWebSocketImplementation.md
@@ -0,0 +1,83 @@
+# Testing your server implementation using echo\_client.py in pywebsocket #
+
+For example, to connect to ws://example.com:12345/test using HyBi 13 version protocol, and send three text frames "Hello", "foo", "bar" to it, run this:
+
+```
+svn checkout http://pywebsocket.googlecode.com/svn/trunk/ pywebsocket-read-only
+cd pywebsocket-read-only/src
+PYTHONPATH=. python example/echo_client.py -s example.com -p 12345 -r /test \
+ -m Hello,foo,bar --protocol_version=hybi13 --origin=http://example.com:12345/ \
+ --log-level=debug
+```
+
+# Testing your client implementation using standalone.py in pywebsocket #
+
+To launch pywebsocket standalone server on port 12345 with echo back service on /echo with HyBi 13, HyBi 08, HyBi 00 and Hixie 75 protocol support, run this:
+
+```
+svn checkout http://pywebsocket.googlecode.com/svn/trunk/ pywebsocket-read-only
+cd pywebsocket-read-only/src
+PYTHONPATH=. python mod_pywebsocket/standalone.py -p 12345 --allow-draft75 -d example --log-level debug
+```
+
+Open http://localhost:12345/console.html using your client and check if the messages you send are echoed back.
+
+# Generating Sec-WebSocket-Accept manually #
+
+Use this python code
+
+```
+import base64
+import hashlib
+def accept(v):
+ s = hashlib.sha1()
+ s.update(v + '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')
+ return base64.b64encode(s.digest())
+```
+
+# Unmasking frame manually #
+
+Use this python code
+
+```
+import binascii
+def conv(s):
+ return map(lambda x: ord(binascii.a2b_hex(x)), s.split(' '))
+m = conv('fd 4b 40 b8')
+d = conv('fe a1 15 d6 98 33 30 dd 9e 3f 25 dc dd 28 2f d6 89 22 2e cd 9c 3f 29 d7 93')
+r = []
+for i in xrange(len(d)):
+ r.append(d[i] ^ m[i % 4])
+print ' '.join(map(hex, r))
+print ''.join(map(chr, r))
+```
+
+# TLS #
+
+You can find files for testing at test/cert/
+
+ * cacert.pem self-signed
+ * cert.pem signed by cacert. For server.
+ * client\_cert.p12 PKCS#12 container. For client.
+ * certificate
+ * cacert
+ * key
+ * key.pem key for cert.pem. For server.
+
+Dump key
+
+```
+openssl rsa -in key.pem -text
+```
+
+Dump certificate
+
+```
+openssl x509 -in cert.pem -text
+```
+
+# TLS cipher suite #
+
+## Standard "ssl" module ##
+
+Add the "ciphers" parameter to ssl.wrap\_socket() call in standalone.py.
\ No newline at end of file
diff --git a/WebSocketProtocolSpec.md b/WebSocketProtocolSpec.md
new file mode 100644
index 0000000..7f5b027
--- /dev/null
+++ b/WebSocketProtocolSpec.md
@@ -0,0 +1,351 @@
+This is a note by pywebsocket developers for catching up changes on the spec and tracking discussion on HyBi. This may also be useful for people who are interested in WebSocket protocol design to quickly catch up the history of discussion on HyBi and understand what/why/when a certain decision has been made.
+
+# Protocol support status of pywebsocket #
+
+pywebsocket supports the following protocols.
+
+ * [RFC 6455 The WebSocket Protocol](http://tools.ietf.org/html/rfc6455)
+ * was also known as [draft-ietf-hybi-thewebsocketprotocol-17](http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17) (Version 13)
+ * [draft-ietf-hybi-thewebsocketprotocol-12](http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-12) (Version 8)
+ * [draft-ietf-hybi-thewebsocketprotocol-00](http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00)
+ * equivalent to [draft-hixie-thewebsocketprotocol-76](http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76)
+
+and the following extension.
+
+ * [WebSocket Per-message Compression (permessage-deflate)](http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-18)
+ * [WebSocket Per-message Compression (permessage-compress)](http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-04) (Deprecated)
+ * draft-ietf-hybi-permessage-compression version 04 and prior specified permessage-compress extension
+ * draft-ietf-hybi-permessage-compression version 05 and later specifies permessage-deflate extension
+ * [WebSocket Per-frame Compression (perframe-compress)](http://tools.ietf.org/html/draft-ietf-hybi-websocket-perframe-compression-04) (Deprecated)
+ * [WebSocket Per-frame Compression (deflate-frame)](http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-06) (Deprecated)
+
+# Official working drafts #
+
+## HyBi 17 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-17)
+ * [Diff from 16](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-16)
+
+Note
+ * Only editorial changes
+ * Sec-WebSocket-Version value is still 13 and this must be the version for RFC
+
+## HyBi 16 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-16)
+ * [Diff from 15](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-16)
+
+Note
+ * Only editorial changes
+
+## HyBi 15 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-15)
+ * [Diff from 14](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-15)
+
+Semantic changes
+ * If servers doesn't support the requested version, they MUST respond with Sec-WebSocket-Version headers containing all available versions.
+ * The servers MUST close the connection upon receiving a non-masked frame with status code of 1002.
+ * The clients MUST close the connection upon receiving a masked frame with status code of 1002.
+
+Note
+ * Sec-WebSocket-Version is still 13.
+
+## HyBi 14 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-14)
+ * [Diff from 13](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-14)
+
+Semantic changes
+ * Extension values in extension-param could be quoted-string in addition to token.
+ * Clarify the way to support multiple versions of WebSocket protocol.
+ * Payload length MUST be encoded in minimal number of bytes.
+ * WebSocket MUST support TLS.
+ * Sec-WebSocket-Key and Sec-WebSocketAccept header field MUST NOT appear more than once.
+ * Sec-WebSocket-Extensions and Sec-WebSocket-Protocol header filed MAY appear multiple times in requests, but it MUST NOT appear more than once in responses.
+ * Sec-WebSocket-Version header filed MAY appear multiple times in responses, but it MUST NOT appear more than once in requests.
+ * Status code 1007 was changed.
+
+Note
+ * Sec-WebSocket-Version is still 13.
+
+## HyBi 13 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-13)
+ * [Diff from 12](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-13)
+
+Semantic changes
+ * Sec-WebSocket-Version is 13.
+ * Clients must fail the connection on receiving a subprotocol indication that was not present in the client requests in the opening handshake.
+ * Status Codes was changes(Change 1004 as reserved, and add 1008, 1009, 1010).
+
+Note
+ * Now spec allow to use WWW-Authenticate header and 401 status explicitly.
+ * Servers might redirect the client using a 3xx status code, but client are not required to follow them.
+ * Clients' reconnection on abnormal closure must be delayed (between 0 and 5 seconds is a reasonable initial delay, and subsequent reconnection should be delayed longer by exponential backoff.
+
+## HyBi 12 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-12.txt)
+ * [Diff from 11](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-12)
+
+### Change ###
+
+Note
+ * Only editorial changes
+ * Sec-WebSocket-Version value is still 8.
+
+## HyBi 11 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-11.txt)
+ * [Diff from 10](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-11)
+
+### Change ###
+
+Semantic changes
+ * Sec-WebSocket-Origin -> Origin
+ * Servers send all supported protocol numbers in Sec-WebSocket-Version header.
+
+Note
+ * Sec-WebSocket-Version value is still 8, and 9/10/11 were reserved but were not and will not be used.
+
+## HyBi 10 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-10.txt)
+ * [Diff from 09](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-10)
+
+### Change ###
+
+Semantic changes
+ * Status code 1007.
+ * Receiving strings including invalid UTF-8 result in Fail.
+
+Note
+ * Sec-WebSocket-Version value is still 8.
+
+## HyBi 09 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-09.txt)
+ * [Diff from 08](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-09)
+
+### Change ###
+
+Semantic changes
+ * On receiving a frame with any of RSV1-3 raised but no extension negotiated, Fail the WebSocket Connection.
+ * It seems that unknown opcode will also result in Fail in HyBi 10. (TBD)
+
+Note
+ * Sec-WebSocket-Version value is still 8.
+
+## HyBi 08 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-08.txt)
+ * [Diff from 07](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-08)
+
+Semantic changes
+ * Absolute path is now allowed for resource.
+ * extension parameter is token.
+ * Sec-WebSocket-Protocol from server to client is token.
+ * Status code 1005 and 1006 are added, and all codes are unsigned.
+ * Internal error results in 1006.
+ * HTTP fallback status codes are clarified.
+
+## HyBi 07 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-07.txt)
+ * [Diff from 06](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-07)
+
+## HyBi 06 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-06.txt)
+ * [Diff from 05](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-06)
+
+Major changes
+ * "Connection" header must INCLUDE "Upgrade", rather than is equal to "Upgrade"
+
+## HyBi 05 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-05.txt)
+ * [Diff from 04](http://tools.ietf.org/rfcdiff?url2=draft-ietf-hybi-thewebsocketprotocol-05)
+
+### Change ###
+
+Major changes
+ * Removed Sec-WebSocket-Nonce
+ * Changed masking : SHA-1, client nonce, server nonce, CSPRNG -> CSPRNG only
+ * Specified the body of close frame explicitly
+ * ABNF fix for origin and protocol
+ * Added detailed Sec-WebSocket-Extensions format specification
+
+Typos, remanet removal
+ * Removed all occurrence of Sec-WebSocket-Location
+ * Added IANA Sec-WebSocket-Accept section
+
+Trivial changes
+ * The value of Sec-WebSocket-Version is now 5
+
+## HyBi 04 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-04.txt)
+
+### Change ###
+
+Major changes
+ * Added frame masking
+ * Changed opening handshake
+ * Sec-WebSocket-Key1, Sec-WebSocket-Key2, key3, response -> Sec-WebSocket-Key, Sec-WebSocket-Nonce, Sec-WebSocket-Accept)
+ * Added Sec-WebSocket-Extensions for extension negotiation
+ * Upgrade header is now case-insensitive (HTTP compliant)
+ * Flipped MORE bit and renamed it to FIN bit
+
+Tiny changes
+ * Renamed Sec-WebSocket-Draft to Sec-WebSocket-Version
+ * Renamed Origin to Sec-WebSocket-Origin
+ * Added ABNF (one used in HTTP RFC2616) clarification to Sec-WebSocket-Protocol
+ * Changed subprotocols separator from SP to ','
+ * Removed Sec-WebSocket-Location
+
+### Library dependency ###
+
+Introduced
+ * BASE64
+ * SHA-1
+
+Eliminated
+ * MD5
+
+## HyBi 03 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-03.txt)
+
+### Change ###
+
+ * Added one known extension "compression"
+ * Added close frame body matching step to closing handshake
+ * To distinguish close frames among virtual channels in multiplexed connection
+
+### Library dependency ###
+
+Introduced
+ * DEFLATE
+
+### Note ###
+
+ * The value of Sec-WebSocket-Draft is still 2
+
+## HyBi 02 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-02.txt)
+
+### Change ###
+
+ * Added /defer cookies/ flag
+ * Added Sec-WebSocket-Draft with a value of 2
+
+## HyBi 01 ##
+
+ * [Spec](http://tools.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-01.txt)
+
+### Change ###
+
+ * Changed frame format
+ * Added extension mechanism (no negotiation yet)
+
+## Hixie 76 (HyBi 00) ##
+
+ * [HyBi 00](http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00)
+ * [Hixie 76](http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76)
+
+### Change ###
+
+ * Added challenge/response handshaking using binary data
+ * Added closing handshake
+
+### Library dependency ###
+
+Introduced
+ * MD5
+
+## Hixie 75 ##
+
+ * [Spec](http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75)
+
+# Extension spec drafts #
+
+## Compression ##
+
+### ietf 00 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-ietf-hybi-websocket-perframe-compress-00)
+
+### websocket-perframe-deflate-06 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-06)
+
+### websocket-perframe-deflate-05 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-05)
+
+### websocket-perframe-deflate-04 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-04)
+
+### websocket-perframe-deflate-03 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-03)
+
+### websocket-perframe-deflate-02 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-02)
+
+### websocket-perframe-deflate-01 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-01)
+
+### websocket-perframe-deflate-00 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate-00)
+
+## A Multiplexing Extension for WebSockets ##
+
+### ietf 01 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-ietf-hybi-websocket-multiplexing-01)
+
+### ietf 00 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-ietf-hybi-websocket-multiplexing-00)
+
+### google-mux-03 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tamplin-hybi-google-mux-03)
+
+### google-mux-02 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tamplin-hybi-google-mux-02)
+
+### google-mux-01 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tamplin-hybi-google-mux-01)
+
+### google-mux-00 ###
+
+ * [Spec](http://tools.ietf.org/html/draft-tamplin-hybi-google-mux-00)
+
+
+# Rationale #
+
+Contents placed here has been merged into [FAQ on the IETF HyBi WG site](http://trac.tools.ietf.org/wg/hybi/trac/wiki/FAQ).
+
+# Other proposals #
+
+ * http://tools.ietf.org/id/draft-abarth-thewebsocketprotocol-01.txt Opening handshake with CONNECT method, AES based frame masking by Adam Barth
+ * http://tools.ietf.org/html/draft-montenegro-hybi-upgrade-hello-handshake-00 Gabriel's proposal
+ * http://www.whatwg.org/specs/web-socket-protocol/ Last proposal Hixie published before he took over editor to Ian Fette.
+
+# References/Tools #
+
+ * [HyBi mailing list archive](http://www.ietf.org/mail-archive/web/hybi/current/maillist.html)
+ * [IETF datatracker](https://datatracker.ietf.org/doc/draft-ietf-hybi-thewebsocketprotocol/history/) Useful for getting side-by-side diff between drafts
+ * [Latest draft on IETF Subversion](http://trac.tools.ietf.org/wg/hybi/trac/log/websocket/draft-ietf-hybi-thewebsocketprotocol.xml)
+ * [Proposal list on HyBi wiki](http://trac.tools.ietf.org/wg/hybi/trac/wiki/HandshakeProposals)
\ No newline at end of file
diff --git a/WebSocketProtocolSpecTOC.md b/WebSocketProtocolSpecTOC.md
new file mode 100644
index 0000000..e1ee36d
--- /dev/null
+++ b/WebSocketProtocolSpecTOC.md
@@ -0,0 +1,33 @@
+ * [Official working drafts](WebSocketProtocolSpec#Official_working_drafts.md)
+ * [HyBi 17](WebSocketProtocolSpec#HyBi_17.md)
+ * [HyBi 16](WebSocketProtocolSpec#HyBi_16.md)
+ * [HyBi 15](WebSocketProtocolSpec#HyBi_15.md)
+ * [HyBi 14](WebSocketProtocolSpec#HyBi_14.md)
+ * [HyBi 13](WebSocketProtocolSpec#HyBi_13.md)
+ * [HyBi 12](WebSocketProtocolSpec#HyBi_12.md)
+ * [HyBi 11](WebSocketProtocolSpec#HyBi_11.md)
+ * [HyBi 10](WebSocketProtocolSpec#HyBi_10.md)
+ * [HyBi 09](WebSocketProtocolSpec#HyBi_09.md)
+ * [HyBi 08](WebSocketProtocolSpec#HyBi_08.md)
+ * [HyBi 07](WebSocketProtocolSpec#HyBi_07.md)
+ * [HyBi 06](WebSocketProtocolSpec#HyBi_06.md)
+ * [HyBi 05](WebSocketProtocolSpec#HyBi_05.md)
+ * [HyBi 04](WebSocketProtocolSpec#HyBi_04.md)
+ * [HyBi 03](WebSocketProtocolSpec#HyBi_03.md)
+ * [HyBi 02](WebSocketProtocolSpec#HyBi_02.md)
+ * [HyBi 01](WebSocketProtocolSpec#HyBi_01.md)
+ * [Hixie 76 (HyBi 00)](WebSocketProtocolSpec#Hixie_76_(_HyBi_00).md)
+ * [Hixie 75](WebSocketProtocolSpec#Hixie_75.md)
+ * [Extension spec drafts](WebSocketProtocolSpec#Extension_spec_drafts.md)
+ * [WebSocket Per-frame DEFLATE Extension](WebSocketProtocolSpec#Per-frame_DEFLATE_Extension.md)
+ * [perframe-deflate-04](WebSocketProtocolSpec#websocket-perframe-deflate-04.md)
+ * [perframe-deflate-03](WebSocketProtocolSpec#websocket-perframe-deflate-03.md)
+ * [perframe-deflate-02](WebSocketProtocolSpec#websocket-perframe-deflate-02.md)
+ * [perframe-deflate-01](WebSocketProtocolSpec#websocket-perframe-deflate-01.md)
+ * [perframe-deflate-00](WebSocketProtocolSpec#websocket-perframe-deflate-00.md)
+ * [A Multiplexing Extension for WebSockets](WebSocketProtocolSpec#A_Multiplexing_Extension_for.md)
+ * [google-mux-01](WebSocketProtocolSpec#google-mux-01.md)
+ * [google-mux-00](WebSocketProtocolSpec#google-mux-00.md)
+ * [Rationale](WebSocketProtocolSpec#Rationale.md)
+ * [Other proposals](WebSocketProtocolSpec#Other_proposals.md)
+ * [References / Tools](WebSocketProtocolSpec#References/Tools.md)
\ No newline at end of file
diff --git a/WebSocketSecurity.md b/WebSocketSecurity.md
new file mode 100644
index 0000000..0412a8a
--- /dev/null
+++ b/WebSocketSecurity.md
@@ -0,0 +1,13 @@
+# Cross site initiation #
+
+ * wss://foo.com:8444 from https://foo.com:8443
+ * Aurora 17.0a2 (2012-09-25): allowed
+ * Chrome 23.0.1271.0 canary: allowed
+ * ws://foo.com:8080 from https://foo.com:8443
+ * Aurora 17.0a2 (2012-09-25): SecurityError
+ * Chrome 23.0.1271.0 canary: allowed
+ * http://code.google.com/p/chromium/issues/detail?id=85271
+ * https://bugs.webkit.org/show_bug.cgi?id=89068
+ * wss://foo.com:8443 from http://foo.com:8080
+ * Aurora 17.0a2 (2012-09-25): allowed
+ * Chrome 23.0.1271.0 canary: allowed
\ No newline at end of file