Migrated all of Contributing from cwiki.apache.org/confluence/display/WAVE to 
the reST text format. Images were also transfered. Minor text/spelling changes 
made, most text copied as collected.


Project: http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/commit/608603b2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/tree/608603b2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/diff/608603b2

Branch: refs/heads/0.4
Commit: 608603b2044ceb28d5ea640be76d0cf953a96c0e
Parents: b84caa1
Author: Evan Hughes <ehu...@gmail.com>
Authored: Fri Jun 26 15:42:36 2015 +1000
Committer: Evan Hughes <ehu...@gmail.com>
Committed: Sat Jun 27 15:02:59 2015 +1000

----------------------------------------------------------------------
 source/developer/Code Walk/index.rst            | 117 +++
 source/developer/Contributing/GadgetsSetup.rst  |  55 ++
 .../developer/Contributing/clientDevSetup.rst   | 160 ++++
 source/developer/Contributing/index.rst         |  56 ++
 .../developer/Contributing/releaseProcedure.rst | 183 +++++
 .../Diagram_WaveServer_ClientFronted_01.png     | Bin 0 -> 75343 bytes
 .../Diagram_WaveServer_Components_01.png        | Bin 0 -> 137301 bytes
 source/developer/DesignStructure/Overview.rst   |  87 +++
 .../developer/DesignStructure/clientDesign.rst  |  69 ++
 .../developer/DesignStructure/code_overview.png | Bin 0 -> 285798 bytes
 .../DesignStructure/repositoryStructure.rst     |  37 +
 source/developer/DesignStructure/sourceCode.rst |  21 +
 .../DesignStructure/wiab_server_structure.png   | Bin 0 -> 41306 bytes
 source/developer/Resources/Presentations.rst    |  60 ++
 source/developer/Resources/readings.rst         |  37 +
 source/developer/Resources/talks.rst            | 145 ++++
 source/developer/Tutorials/dooDad.rst           | 723 +++++++++++++++++++
 source/developer/Tutorials/index.rst            |  27 +
 source/developer/Tutorials/navCodebase.rst      |  45 ++
 source/developer/conf.py                        |   8 +-
 source/developer/index.rst                      |  12 +-
 source/developer/logoUsage.rst                  |  28 +
 source/developer/socialMediaGuideLines.rst      |  59 ++
 source/general/images/OpenWaveLogo.png          | Bin 0 -> 60513 bytes
 24 files changed, 1923 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/Code
 Walk/index.rst
----------------------------------------------------------------------
diff --git a/source/developer/Code Walk/index.rst b/source/developer/Code 
Walk/index.rst
new file mode 100644
index 0000000..4264116
--- /dev/null
+++ b/source/developer/Code Walk/index.rst      
@@ -0,0 +1,117 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Wave Model Code Walk
+====================
+
+This doument provides an informal overview of the code providing the wave 
model. The wave model describes the basic building blocks of a wave 
application: what a wave is and how it can change. It also provides application 
models which implement more abstract data structures on top of waves. The most 
familiar is the conversation model which implements the conversational 
structure of waves presented in, for example, the Google Wave client.
+
+This walkthrough describes the major modules comprising the wave model in a 
bottom-up fashion.
+
+The wave model code lives under the src/org/waveprotocol/wave/model directory
+
+Under construction!
+-------------------
+
+The wave model code is under active development. The code structure may differ 
from that described here, though we'll try to keep it up to date. The code as 
initially released also contains a few pieces of legacy from Google Wave's 
infancy, pieces of code we've learnt should be done differently. We intend to 
clean these up over time.
+
+Let's explore the code
+----------------------
+
+:strong:`Operations: model.operation.*` |br|
+These modules implement operations, which are the fundamental unit of state 
change. The model.operation package describes purely generic operations simply 
as things which apply to some target. Sub-packages contain specific operation 
implementations and their transformation.
+
+* model.operation.core: operations which apply to the data objects in 
model.wave.data.core.
+* model.operation.wave: operations applying to the extended data interfaces in 
model.wave.data.
+
+Legacy note: The operations in model.operation.core represent our ideal 
minimum set of operations. The model.operation.wave package contains some 
legacy operations and concepts. In particular, the concept of a "blip" (a 
conversational message) and the operations targeting it do not belong at this 
low level of abstraction.
+
+:strong:`Starting points:` |br|
+
+* model.operation.Operation
+* model.operation.core.WaveletOperation
+
+:strong:`Documents: model.document.*` |br|
+These modules implement wave documents, which contain almost all the state of 
a wavelet. A wave document is an XML-like sequence of elements and text nodes 
plus a set of stand-off key/value annotations.
+
+* model.document.bootstrap: a very simple demonstration document 
implementation.
+* model.document.raw: a raw DOM-style document substrate.
+* model.document.operation: operations applying to documents and their 
transformation, along with utilities including composition and normalization. 
Also an automaton for generating random operations for testing.
+* model.document.indexed: an indexed tree structure providing fast random 
access to nodes in a document. An indexed document is mutated by accepting 
operations.
+* model.document: mutable and observable document implementations based on a 
indexed documents.
+
+:strong:`Starting points:` |br|
+
+* model.document.Document: the high-level mutable document interface
+* model.document.ObservableDocument: extends Document to provide events
+
+:strong:`Waves: model.wave.*` |br|
+This modules implement waves and wavelets. A wavelet comprises a set of 
documents and a set of participant identifiers.
+
+* model.wave.data: simple, "dumb" ADTs, which are the targets of operations. 
The core sub-package contains pure, metadata-free implementations sufficient 
for servers. Also a number of document factories for use with the data objects.
+* model.wave: the abstract wave view, wavelet, blip and participant id 
interfaces which define the semantics of these types.
+* model.wave.opbased: operation-based implementation of a wavelet which 
performs mutations by generating and applying operations to an underlying 
wavelet data
+* model.wave.undo: utilities for reversing wavelet operations
+
+Note that there is a clear separation between the semantic free data types in 
model.wave.data, which implement pure "dumb" data containers, and the abstract 
objects in {{model.wav}}e. This separation of data from semantics is repeated 
in other high-level packages.
+
+Legacy note: The interfaces in these packages conflate wave metadata, such as 
timestamps and version numbers, with the pure wave data. 
Themodel.wave.data.core contains our ideals of the data interfaces. The 
metadata does not behave in the same way as the data and we intend to separate 
it to reduce confusion. The inclusion of the blip concept here also is a legacy 
which doesn't belong.
+
+:strong:`Starting points:` |br|
+
+* model.wave.Wavelet
+* model.wave.opbased.OpBasedWavelet
+
+:strong:`Identifiers: model.id and model.waveref` |br|
+These modules contain implementations of wave identifiers and references plus 
utility classes for working with them. Wave and wavelet ids uniquely identify 
their objects.
+Waverefs extend wave and wavelet ids to refer to points within a wave. At 
present this extends just to documents but will soon include locations and 
versions within those documents.
+
+Legacy note: The code in model.id does not yet implement the draft 
specification for identifiers and includes an inelegant serialization scheme. 
Waverefs implement a superior serialization.
+
+:strong:`Starting points:` |br|
+
+* model.id.WaveId and model.id.WaveletId
+* model.waveref.WaveRef
+
+:strong:`Abstract data types: model.adt.*` |br|
+These modules implement abstract concurrent data types on wave documents, 
including lists, sets, maps and monotonic values. These data types are safe for 
use with wave's optimistic concurrency model, guaranteeing convergence when 
used correctly. These data types are the foundation for all concurrent 
application models built on waves.
+
+:strong:`Starting points:` |br|
+
+* model.adt.BasicValue and model.adt.docbased.DocumentBasedBasicValue
+* model.adt.BasicSet and model.adt.docbased.DocumentBasedBasicSet
+
+:strong:`Document schemas: model.schema.*` |br|
+This module implements schema constraints for wave documents. Schemas 
constrain the content of wave documents so they may be safely interpreted by 
clients, including as abstract data types. Document schemas are compatible with 
operational transform such that a change which is valid at a client remains 
valid at the server and all other clients, regardless of the concurrent 
operations against which the change is transformed.
+
+Legacy note: The current hard-coded schema implementation has a number of 
shortcomings and there are plans to move to a more powerful and flexible 
implementation.
+
+:strong:`The conversation model: model.conversation` |br|
+This package implements the abstract conversation model which describes the 
threaded conversational waves you commonly interact with in the Google Wave 
client.
+
+:strong:`Starting points:` |br|
+
+* model.conversation.Conversation
+* model.conversation.WaveletBasedConversation
+
+:strong:`Testing support: model.testing` |br|
+This package contains support classes for testing the wave model and code 
interacting with the wave model.
+
+
+.. |br| raw:: html
+
+   <br />
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/Contributing/GadgetsSetup.rst
----------------------------------------------------------------------
diff --git a/source/developer/Contributing/GadgetsSetup.rst 
b/source/developer/Contributing/GadgetsSetup.rst
new file mode 100644
index 0000000..e55fd6b
--- /dev/null
+++ b/source/developer/Contributing/GadgetsSetup.rst
@@ -0,0 +1,55 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Gadget Server Setup
+===================
+
+This is the instructions for running your WIAB as well as your own gadget 
server (Shindig). These instructions uses the Apache Tomcat version of Shindig.
+
+.. note::
+
+    Currently gadgets does not work on Firefox 3.x
+
+1. Download Shindig distribution from https://shindig.apache.org/download.html 
- make sure do download the war file and not jars.
+
+    .. code-block:: latex
+
+        wget http://www.apache.org/dist/shindig/2.5.2/shindig-server-2.5.2.war
+2. Extract the war and edit the file 
WEB-INF/classes/containers/default/container.js - add "wave" to 
"gadgets.container" property. "gadgets.container" : "default", "accel", "wave",
+3. The easiest way to run shindig is by using jetty-runner.
+
+    .. code-block:: latex
+
+        wget http://repo2.maven.org/maven2/org/mortbay/jetty/jetty-runner/
+        8.1.9.v20130131/jetty-runner-8.1.9.v20130131.jar
+4. Run the Shindig application war with:
+
+    .. code-block:: latex
+
+        java -jar jetty-runner-8.1.9.v20130131.jar shindig-server-2.5.2
+
+    Please note that you can specify either folder of extracted war or the war 
file itself. The gadget server will start on localhost:8080
+5. Get WIAB (See Installing)
+
+    Edit server.config and add the following:
+
+    .. code-block:: latex
+
+        gadget_server_hostname=<the server host name of shindig>
+        gadget_server_port=8080
+
+6. Start WIAB
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/Contributing/clientDevSetup.rst
----------------------------------------------------------------------
diff --git a/source/developer/Contributing/clientDevSetup.rst 
b/source/developer/Contributing/clientDevSetup.rst
new file mode 100644
index 0000000..55e0bc3
--- /dev/null
+++ b/source/developer/Contributing/clientDevSetup.rst
@@ -0,0 +1,160 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Client Development Setup
+========================
+
+**TODO: project still called wave-protocol?**
+
+.. note::
+
+        Mac Users ensure your jsdk is set to 1.7 and you're running Safari 5+.
+
+Before you start
+----------------
+
+For developing and debugging code in an isolated wave panel environment, use 
the Wave Panel Harness setup.
+**This is the preferred development environment**, because there is no need to 
run a wave server. |br|
+For developing and debugging code in the full client with end-to-end server 
communication, use the Full Client setup.
+
+Setting up Eclipse project (optional)
+-------------------------------------
+Eclipse is the recommended development environment, in order to maintain 
consistent code formatting. However, since the debugging processes are all 
contained in the ant build file, you can use whichever development environment 
you like.
+
+1. Follow WIAB build instructions
+
+    * Start the server if you want to start debugging/changing code
+2. Generate some code required for the Eclipse project to compile.
+
+    * ant eclipse
+3. In Eclipse, Import the wave-protocol project into your workspace.
+
+    * File -> Import -> Existing Projects Into Workspace
+    * Navigate to the wave-protocol project
+    * The 'wave-protocol' project should then appear and be selected in the 
Projects: list
+    * Click Finish.
+
+Wave Panel Harness
+------------------
+
+GWT Hosted mode
+^^^^^^^^^^^^^^^
+
+1. Run the wave panel harness using the GWT code server (called OOPHM).
+
+    * $ ant waveharness-hosted
+2. Using a supported browser [#f1]_, preferably running on the same machine as 
the GWT code server, open the URL that the hosted mode server names. The wave 
panel harness is a page with a wave panel displaying a fake, in-memory wave. 
There is no communication with a wave server.
+3. Attach a debugger to the hosted mode server.
+
+    * In Eclipse, create a launch configuration using Run -> Debug 
Configuration -> Remote Java Application, and use port 8001. Click Debug.
+4. Profit.
+
+    * Set breakpoints, interact in the browser, step through code etc.
+    * In Eclipse, code changes you make do not always take effect in the 
browser immediately (HotCode). However, refreshing the browser will reload the 
application through the GWT code server, including all your changes.
+
+GWT Superdev mode
+^^^^^^^^^^^^^^^^^
+
+1. Run the wave panel using the GWT superdev mode.
+
+    * $ ant waveharness-superdev
+2. Open and add the bookmarks in: http://localhost:9876/ to your browser.
+3. Open the wave panel in 
http://localhost:9876/waveharness/UndercurrentHarness.html
+4. Do some code changes (for instance in UndercurrentHarness.java), click in 
"Dev mode on" in the bookmarks and recompile the module to see the changes.
+
+Superdev debuging
+`````````````````
+
+In Google Chrome, for debugging and logs:
+
+* Launch Chrome Developer Tools (F12)
+* For debugging, you need to Enable JS Source Maps in Chrome Developer Tools 
preferences.
+* Open the Source tab and observe the files, or the Console tab to see the 
logs.
+
+More info about Superdev mode (also a screenshot): 
http://stackoverflow.com/questions/18330001/super-dev-mode-in-gwt
+
+Editor Test Harness
+-------------------
+
+GWT Hosted mode
+^^^^^^^^^^^^^^^
+
+1. Run the wave panel harness using the GWT code server (called OOPHM).
+
+    * $ ant editor-hosted
+2. Using a supported browser*, preferably running on the same machine as the 
GWT code server, open the URL that the hosted mode server names. The editor 
harness is a page with an div for the local editor and another div for the 
remote editor. There is no communication to the server.
+3. Attach a debugger to the hosted mode server.
+
+    * In Eclipse, create a launch configuration using Run -> Debug 
Configuration -> Remote Java Application, and use port 8001. Click Debug.
+4. Profit.
+
+    * Set breakpoints, interact in the browser, step through code etc.
+    * In Eclipse, code changes you make do not always take effect in the 
browser immediately (HotCode). However, refreshing the browser will reload the 
application through the GWT code server, including all your changes.
+
+GWT Superdev mode
+^^^^^^^^^^^^^^^^^
+
+1. Run the wave panel using the GWT superdev mode
+
+    * $ ant editor-superdev
+2. Open and add the bookmarks in: http://localhost:9876/ to your browser.
+3. Open the wave panel in 
http://localhost:9876/org.waveprotocol.wave.client.editor.harness.EditorTest/EditorTest.html
+4. Do some code changes, click in "Dev mode on" in the bookmarks and recompile 
the module to see the changes. See waveharness superdev mode section for 
debuging tips.
+
+Full Client
+-----------
+
+GWT Hosted mode
+^^^^^^^^^^^^^^^
+
+1. Start the server following the instructions at Starting WIAB
+
+    * Remember to restart the server after any change that would affect the 
server. In general, this is required for any change outside the box/webclient 
package.
+2. Start the GWT code server (called OOPHM)
+
+    * $ ant hosted-gwt
+3. Set up an Eclipse debug target to attach to the GWT code server (this only 
needs to be done once, after that reuse the same target to start debugging)
+
+    a. Run -> Debug Configuration
+    b. Select Remote Java Application
+    c. Change the port from 8000 to 8001 (this port number should match the 
console output when 'ant hosted_gwt' was run)
+    d. Click Debug
+4. Using a supported browser*, preferably running on the same machine as the 
GWT code server,
+
+    a. Go to http://<your_host_name>:9898
+
+        * Sign in. This only needs to be done once per server restart, in 
order to get a session cookie. Ignore any popups about the client needing to be 
GWT compiled.
+    b. Go to http://<your_host_name>:9898/?gwt.codesvr=<your_host_name>:9997
+
+        * In order to communicate with the GWT code server, your browser needs 
a plugin. If you do not already have it installed, you will be directed to 
install it.
+5. You should now be able to make any change to the client code in 
wave-protocol and see the effects by refreshing the browser
+
+    * You may need to restart "ant hosted_gwt" periodically once the GWT code 
server runs out of memory (after ~10-20 refreshes).
+
+GWT Superdev mode
+^^^^^^^^^^^^^^^^^
+
+In development.
+
+.. rubric:: Footnotes
+
+.. [#f1] The GWT code server requires a plugin to be installed in the browser 
that you use. The first time you use the GWT code server in a particular 
browser, you will be prompted to install this plugin. Not all browser/OS 
combinations that Wave-In-A-Box supports can be used for debugging: this is 
limited by the browser/OS combinations for which a GWT code server plugin is 
available. At the time or writing, this set is: Linux x {Firefox}, Windows x 
{Chrome, Firefox, IE}, Mac x {Safari, Firefox}. For the wave panel harness, the 
full set of combinations is available. For the full client, the only debugging 
setups that work out of the box are Safari on Mac, and Chrome on Windows (i.e., 
webkit browsers).
+
+
+.. |br| raw:: html
+
+   <br />
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/Contributing/index.rst
----------------------------------------------------------------------
diff --git a/source/developer/Contributing/index.rst 
b/source/developer/Contributing/index.rst
new file mode 100644
index 0000000..7647eed
--- /dev/null
+++ b/source/developer/Contributing/index.rst
@@ -0,0 +1,56 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Contributing
+============
+
+.. toctree::
+   :maxdepth: 1
+   :hidden:
+
+   releaseProcedure
+   clientDevSetup
+   GadgetsSetup
+
+The following pages are useful if you're starting out with Apache Wave, and 
detail how to get a development
+environment setup.
+
+
+**Contributing Process**
+
+In order to develop and release software contributions you must follow these 
steps:
+
+1. Create or assign a JIRA issue for the contribution you want to work in. Any 
contribution must have an associated `JIRA issue`_.
+2. Create a patch per logical set of issues/features. (Create a patch in 
`Eclipse`_ /`Intellij`_)
+3. Submit the patch to the `Review Board`_ with assigned to the "wave" 
project, and mentioning the JIRA issue number that it is related to.
+4. Inform the Mailing List and/or IRC about the request.
+5. Fix the patch according to the suggestions in the Review Board until it has 
gotten approval.
+6. Push the patch to git if a committer otherwise one of the reviewers will 
push the change.
+7. Close issues and review board request.
+
+
+
+
+
+
+
+
+.. Links:
+.. _JIRA issue: https://issues.apache.org/jira/browse/WAVE
+.. _Eclipse: 
http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Ftasks%2Ftasks-68c.htm
+.. _Intellij: https://www.jetbrains.com/idea/help/using-patches.html
+.. _Review Board: https://reviews.apache.org/r/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/Contributing/releaseProcedure.rst
----------------------------------------------------------------------
diff --git a/source/developer/Contributing/releaseProcedure.rst 
b/source/developer/Contributing/releaseProcedure.rst
new file mode 100644
index 0000000..9fa20aa
--- /dev/null
+++ b/source/developer/Contributing/releaseProcedure.rst
@@ -0,0 +1,183 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Release Procedure
+=================
+
+Introduction
+------------
+    This is an attempt to document the release procedure used for Wave whilst 
under incubation.
+    These notes are not complete, so you will probably want to refer to the 
following documents:
+
+    * https://incubator.apache.org/guides/releasemanagement.html
+    * https://incubator.apache.org/guides/release-java.html
+    * https://www.apache.org/dev/release.html
+
+    A good guide (used as the basis for this one) is produced by the Apache 
Commons project:
+
+    * https://commons.apache.org/releases/prepare.html
+    * https://commons.apache.org/releases/release.html
+
+Build Environment
+-----------------
+The release procedure documented has been/is being carried out on a 64-bit 
Linux machine using Ant and OpenJDK 1.6
+
+Preparation
+-----------
+
+Make a release branch
+^^^^^^^^^^^^^^^^^^^^^
+
+    This depends on how active the tree is at the time.
+
+    .. code-block:: latex
+
+        git checkout -b wave-X.X.X-release
+
+    Then check out this branch, to do any release work needed.
+
+Check Licensing
+^^^^^^^^^^^^^^^
+
+    Ensure that all source files have the Apache License attached, and any 
dependencies licenses are correctly noted in
+    NOTICE. Run the license audit tool and inspect the output:
+
+    .. code-block:: latex
+
+        ant audit-licenses
+
+    Check export status of any cryptographic dependencies.
+
+Set version number in file
+--------------------------
+
+The version number is currently stored in build.properties in the 
waveinabox.version string.
+Whilst the project is still incubating, the word 'incubating' must appear in 
the version string.
+
+The version number should be in the form described at: http://semver.org/
+
+Given a version number **MAJOR** . **MINOR** . **PATCH** , increment the:
+
+1. **MAJOR** version when you make incompatible API changes,
+2. **MINOR** version when you add functionality in a backwards-compatible 
manner, and
+3. **PATCH** version when you make backwards-compatible bug fixes.
+
+Additional labels for pre-release and build metadata are available as 
extensions to the **MAJOR** . **MINOR** . **PATCH**
+format. |br|
+For example:  0.4.0-rc.6-incubating |br|
+Every release should usually increase the MINOR version and reset the PATCH 
version.
+
+Create CHANGES
+--------------
+I suggest using the following git log, to produce a one-line-per-change list 
of all commits.
+(An alternative, would be to use the JIRA id's)
+
+.. code-block:: latex
+
+    git log --pretty-medium
+
+Put this the 'Full log' section.
+I suggest hand-writing the 'Summary since X' at the start of the file.
+
+Create RELEASE-NOTES
+--------------------
+**TODO: decide on a format**
+
+Refer to the notes used in the previous release for the format of how to write 
them. |br|
+Break at 80 chars as is conventional. |br|
+**Include:**
+
+* Description of the project
+* Any major changes (otherwise see CHANGES) Is this really needed given the 
summary in CHANGES?
+* Any compatibility issues (and mention if none)
+* Any upgrading procedures needed
+* Make another note of the required Java version
+
+Tag the RC
+----------
+
+Make the RC
+-----------
+There are two ways to create the artefacts. The preferred way is to use the 
artefacts created by Jenkins.
+Download zip with all artefacts from 
https://builds.apache.org/view/S-Z/view/Wave/job/wave-artifacts/lastSuccessfulBuild/artifact/*zip*/archive.zip
+
+.. code-block:: latex
+
+    wget 
https://builds.apache.org/view/S-Z/view/Wave/job/wave-artifacts/lastSuccessfulBuil
+    d/artifact/*zip*/archive.zip
+    unzip archive.zip
+
+Or, create the artefacts manually. Make sure to run the unit tests first. Run
+
+.. code-block:: latex
+
+    ant release
+
+
+Check that the produced code still works! |br|
+Check that source packages don't include any binaries. |br|
+Sign the release using your GPG key, and record SHA512 checksums for the 
files. |br|
+
+.. code-block:: bash
+    :caption: Sign artefact's
+
+    #!/bin/zsh
+    #Assumes it is being run in the folder with artefact's.
+
+    PRE="apache-wave-"
+    for f in $PRE*; do
+    gpg --armor --output $f.asc --detach-sig $f
+    gpg --print-md SHA512 $f > $f.sha
+    done
+
+You need to append you signature/public key to the KEYS file, look there for 
instructions.
+
+Upload the Artefacts.
+---------------------
+
+Upload the src+bin tar+zip somewhere so that it can be found. |br|
+The release candidate should be uploaded to the "dev" folder first to allow 
inspection and voting. |br|
+
+.. code-block:: latex
+    :caption: Commit new rc
+
+    svn checkout  https://dist.apache.org/repos/dist/dev/incubator/wave/
+
+Create a new folder under dist/dev/incubator/wave for the new release 
candidate and copy there the signed artefacts and then commit.
+
+Vote for release
+----------------
+
+Send a vote mail for RC
+^^^^^^^^^^^^^^^^^^^^^^^
+Send a message with subject 'VOTE Release Wave 0.3 based on RC1' email to 
wave-dev@incubator.apache.org. |br|
+Post links to the RC artefacts, the subversion tag it is based upon, 
RELEASE-NOTES so that the artefact doesn't have to be downloaded to see them. 
|br|
+Ensure that KEYS is available somewhere with the artefacts. |br|
+Check the voting guide for more information on how to count votes etc. |br|
+When posting the RESULT, note that (currently) all committers are also PPMC, 
so to prevent confusion list as PPMC in the result email.
+
+(Incubator only) Vote for RC
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Whilst Wave is still an incubating project, send a VOTE email to 
gene...@incubator.apache.org to get PMC votes. Handle in the same way as the 
internal vote.
+
+Publish accepted RC
+-------------------
+To publish copy the artefacts into 
https://dist.apache.org/repos/dist/release/incubator/wave/ from the 
dist/dev/incubator/wave/ (delete old artefacts if needed, they were 
automatically archived already) and commit.
+
+.. |br| raw:: html
+
+   <br />
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/DesignStructure/Diagram_WaveServer_ClientFronted_01.png
----------------------------------------------------------------------
diff --git 
a/source/developer/DesignStructure/Diagram_WaveServer_ClientFronted_01.png 
b/source/developer/DesignStructure/Diagram_WaveServer_ClientFronted_01.png
new file mode 100644
index 0000000..00ca67f
Binary files /dev/null and 
b/source/developer/DesignStructure/Diagram_WaveServer_ClientFronted_01.png 
differ

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/DesignStructure/Diagram_WaveServer_Components_01.png
----------------------------------------------------------------------
diff --git 
a/source/developer/DesignStructure/Diagram_WaveServer_Components_01.png 
b/source/developer/DesignStructure/Diagram_WaveServer_Components_01.png
new file mode 100644
index 0000000..efe0011
Binary files /dev/null and 
b/source/developer/DesignStructure/Diagram_WaveServer_Components_01.png differ

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/DesignStructure/Overview.rst
----------------------------------------------------------------------
diff --git a/source/developer/DesignStructure/Overview.rst 
b/source/developer/DesignStructure/Overview.rst
new file mode 100644
index 0000000..3c6b2cc
--- /dev/null
+++ b/source/developer/DesignStructure/Overview.rst
@@ -0,0 +1,87 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+OverView of Design Structure
+============================
+
+.. toctree::
+   :maxdepth: 1
+
+   sourceCode
+   clientDesign
+   repositoryStructure
+
+
+This is an overview of WiaB's server structure, provided by Dave in the 
mailing list, and which may not be 100% accurate:
+
+.. image:: wiab_server_structure.png
+
+Wave Server
+-----------
+
+This is a high level view of some classes which make up the Wave Server 
component of WIAB. It isn't a fully detailed diagram.
+
+.. image:: Diagram_WaveServer_Components_01.png
+
+Classes are grouped in funtional areas:
+
+* Server:  classes orchestrating wavelets operations.
+* Wave and Wavelet management: classes representing wave and wavelet entities 
and also the entry point for wave/wavelet storage, the WaveMap class.
+* Wavelet persistence: classes providing persistence for wavelets.
+* Wave Bus: the gateway to WIAB clients.
+
+WaveMap
+-------
+
+It's the component which provides access to wave/wavelet entities, renote and 
local ones. Its only client is the WaveServerImpl component. There is only one 
instance and it has a reference to a WaveletStore implementation in order to 
use the wavelet persistence.
+
+In general, the WIAB server works at wavelet level, almost all interfaces use 
wavelet as basic abstraction for parameters and return values. E.g. WaveMap 
allows to retrieve wavelets by name, but not the whole Wave, which is just an 
internal entity of the Wave class.
+
+Wavelet cache and factories
+---------------------------
+At WaveMap creation, references to all wavelets are got from persistence and 
then put in a caché (see WaveMap.waves:LoadingCache<WaveId,Wave>). So, when a 
Wave is requested from the waves map, the underlying Wave object is created and 
then remote and local wavelets are cached.
+
+A wave object has again cache maps for both remote and local wavelets. These 
cache's rely on factories implemented and injected from the WaveServerModule 
class to load the right wavelets.
+
+Wave Bus
+--------
+
+The Wave Bus is the componet which dispatchs wavelet change notifications to 
its subscribers or clients. The WaveBus interface it's implemented by the 
WaveletNotificationDispatcher.
+Wavelet's notifications are fired from the wavelet containers 
(WaveletContainerImpl) via the WaveletNotificationSubscriber interface which is 
also implemented by the realization WaveBus class 
WaveletNotificationDispatcher. Clients are those implementing the 
WaveBus.Subscriber interface:
+
+* ClientFrontendImpl
+* PerUserWaveViewDispatcher
+* RobotsGateway
+
+Wave Bus Subscribers
+--------------------
+
+:strong:`Client Frontend`
+
+The *ClientFrontendImpl* uses the server injected as a *WaveletProvider* for:
+
+* submit deltas to a wavelet
+* get wavelet's history of deltas
+* get wavelets Ids from a wave
+* get a wavelet snapshot
+
+.. image:: Diagram_WaveServer_ClientFronted_01.png
+
+The ClientFrontend is a proxy between UI clients and the Wave server. UI 
Clients sent  RPC requests to open a communication channels for each 
Wave-Partincipant pair. This happens when the WaveClientRpcImpl component calls 
the method openRequest(). Then, a listener object (of type 
ClientFronted.OpenListener) is created in order to receive asyncronous updates 
for that Wave's wavelets.
+
+First call to the channel listener: it's performed by 
ClientFrontend.openRequest() method and it provides a snapshot of the Wave. 
This is the only time when a full snapshot of a wave is retrieved from the 
server.
+Second and rest calls to the channel listener:  After channel is opened, 
listener is called anytime an update for the wave happens. This is performed by 
the WaveViewSubscription object for that channel. It manages the wave state 
using WaveletChannelState objects, a caché (or queue) of deltas to be 
submitted in a specifc wavelet. The WaveViewSubscription will call the channel 
listener in the method sendUpdate(), where only deltas are sent -no snapshots-.

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/DesignStructure/clientDesign.rst
----------------------------------------------------------------------
diff --git a/source/developer/DesignStructure/clientDesign.rst 
b/source/developer/DesignStructure/clientDesign.rst
new file mode 100644
index 0000000..fced402
--- /dev/null
+++ b/source/developer/DesignStructure/clientDesign.rst
@@ -0,0 +1,69 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Client Design
+=============
+
+This page aim to keep track of the technical and user experience design goals 
for Wave in a Box.
+It is likely that discussions will be held in mailing lists and waves.
+This page will be updated with the current thinking and outcomes of those 
discussions.
+
+
+Current Collaboration Models
+----------------------------
+
+There are a few well established collaboration models that currently exists in 
the electronic frontier. We list them here not because WiaB intends to support 
all of them, replicate them, or replace them. They are discussed here because 
it is important to understand the current communication models that users are 
familiar with, why they work, and why they don't.
+
+Instant Messaging / Chat
+------------------------
+
+:strong:`How it Works`
+
+* Typically involves users communicating in near-real time.
+* Users have presence state (i.e. they are online or offline).
+* Users communicated and send messages typically when they are both online.
+* Communication is linear in that messages are always added to the end of the 
conversation.
+* Historical record of the conversation is typically managed by the client.
+* Once a message is sent it is usually not editable (some protocols support 
this, but it is rare).
+* Some protocols allow you to see that another user is actively typing, but 
generally don't deliver the message until the other user "sends" it.
+* Multi-User Chat Rooms are supported.
+* Private chats between sub groups happens "out of band" in side chat rooms or 
point to point messages.
+* Typically allow sending files between users in the conversation.
+* Limited ability to display files inline.
+* Files are not stored in the chat for future retrieval.
+
+:strong:`Why It's Useful`
+
+The primary alternative to chat was email. With email, users had no 
expectation of when their messages would be received or responded to. Chat's 
use of presence information let users know when another user was available to 
participate in a live conversation. With this there was an expectation that if 
another user responded to your chat you would then engage in a near realtime 
discussion. The social aspects of chat dictated to a degree that conversations 
would have a well defined start and end (i.e. it was rude to walk away from 
your computer and terminate a chat without saying goodbye).
+
+:strong:`What It's Good At`
+
+The linear nature of the conversation makes it very simple to understand for 
one on one conversations that have a reasonable flow. There is a sense of 
active communication between parties that provides instant gratification 
communication. User's are generally online and available or not. This lets 
other users know what to expect in terms of responsiveness before they initiate 
the communication.
+
+The chat service does not typically log conversations and chat clients 
generally only have rudimentary history functionality. Users generally don't 
have an easy way to search for conversations that took place several weeks ago 
to find information. This is a limitation of the clients but has lead to the 
perception that chat conversations are ephemeral, much like a face to face 
conversation. This leads to a much more informal style of communication. Email 
tends to be more formal since there is a perception that emails are forever. 
Part of the success of chat depends on users feeling free to "type without 
thinking". The type, then proof, then edit, then send process often used in 
email would take away from the liveliness of the chat conversation.
+
+:strong:`What It's Bad At`
+
+Chat is not so great at multi user conversations, or even conversations 
between two parties that are multi-topic or rapidly changing. The linear nature 
of chat makes it very difficult to respond to an earlier topic in the chat. For 
example if a remote user sends you two yes or no questions in back to back 
messages and you simply reply "no", it is not clear if you were referring to 
the first question or the second. This problem gets worse in multi user chat 
where side conversations are likely to pop up. Going back through the linear 
history and attempting to decipher the conversation threads is difficult.
+
+Typical chat clients do not have sophisticated history and search 
functionality to allow users to pick up conversations that happened in the 
past. Additionally, once a chat message is sent it is usually not possible to 
edit that message. These two together make chat less than ideal for formal 
conversations and / or decision making.
+
+Email / Mailing Lists
+---------------------
+
+Collaborative Document Editing
+------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/DesignStructure/code_overview.png
----------------------------------------------------------------------
diff --git a/source/developer/DesignStructure/code_overview.png 
b/source/developer/DesignStructure/code_overview.png
new file mode 100644
index 0000000..6c393a9
Binary files /dev/null and b/source/developer/DesignStructure/code_overview.png 
differ

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/DesignStructure/repositoryStructure.rst
----------------------------------------------------------------------
diff --git a/source/developer/DesignStructure/repositoryStructure.rst 
b/source/developer/DesignStructure/repositoryStructure.rst
new file mode 100644
index 0000000..2070b65
--- /dev/null
+++ b/source/developer/DesignStructure/repositoryStructure.rst
@@ -0,0 +1,37 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Repository Structure
+====================
+
+The official Apache Wave repository can be browsed here: 
https://svn.apache.org/repos/asf/incubator/wave/ . Its structure is as follows:
+
+Wave In A Box code:
+
+* /trunk: Holds the most up-to-date code.
+* /branches/wave-<version>-release: Public Apache releases. E.g. 
wave-0.4-release
+* /branches/<author>-<branch name>: Development branches. E.g. 
stenyak-email_bot or alown-federation_fixes
+* /tags/wave-<version>: E.g. wave-0.4-rc2
+
+Experiments code:
+
+* /experiments/<experiment name>: projects independent from Wave In A Box but 
related to wave concept. E.g. p2p
+
+Documentation:
+
+* /site/: contents of the Apache Wave website
+* /whitepapers/: additional documentation about Wave in general (protocols, 
etc).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/DesignStructure/sourceCode.rst
----------------------------------------------------------------------
diff --git a/source/developer/DesignStructure/sourceCode.rst 
b/source/developer/DesignStructure/sourceCode.rst
new file mode 100644
index 0000000..dcac22f
--- /dev/null
+++ b/source/developer/DesignStructure/sourceCode.rst
@@ -0,0 +1,21 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Source Code Organization
+========================
+
+.. image:: code_overview.png
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/DesignStructure/wiab_server_structure.png
----------------------------------------------------------------------
diff --git a/source/developer/DesignStructure/wiab_server_structure.png 
b/source/developer/DesignStructure/wiab_server_structure.png
new file mode 100644
index 0000000..dd106d6
Binary files /dev/null and 
b/source/developer/DesignStructure/wiab_server_structure.png differ

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/Resources/Presentations.rst
----------------------------------------------------------------------
diff --git a/source/developer/Resources/Presentations.rst 
b/source/developer/Resources/Presentations.rst
new file mode 100644
index 0000000..0823a27
--- /dev/null
+++ b/source/developer/Resources/Presentations.rst
@@ -0,0 +1,60 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Presentations
+=============
+
+.. toctree::
+   :hidden:
+
+   talks
+
+2010
+----
+Wave Protocol Summit (November 8-12)
+    :doc:`23 presentations, demos and discussion <talks>`
+
+Google Wave talks at Google IO 2010 (May 19-20)
+    http://www.google.com/events/io/2010/sessions.html#Wave
+
+2009
+----
+
+Google Wave Federation
+    Jochen Beckmann (August) |br|
+    Overview of Wave, OT, data model, and details about Wave federation. |br|
+    Slides 
(http://www.waveprotocol.org/presentations/wave_federation_pub.pdf?attredirects=0)
+Operational Transforms
+    Alex Mah (July 30) |br|
+    In-depth discussion of operational transforms. |br|
+    Slides (http://docs.google.com/present/view?id=dggjrx3s_1573xdhxprd)
+Google Wave Federation Day Intro
+    Dan Peterson (July 21) |br|
+    Announcement of open-sourcing of components, discussion of roadmap for 
open-sourcing |br|
+    Slides (http://docs.google.com/present/view?id=dggjrx3s_112gfkbmsg3) | 
Youtube (http://www.youtube.com/watch?v=9hDZBieh5zg)
+Google Wave Federation Architecture Overview
+    Soren Lassen (July 21) |br|
+    Discussion of the recently open-sourced components of the Google Wave - 
including the data model, operation transforms, various protocol buffers, a 
simple text client. |br|
+    Slides (http://docs.google.com/present/view?id=dggjrx3s_113d5nv3cfr) | 
Youtube (http://www.youtube.com/watch?v=CRZbHpYhZrA)
+Google Wave: Under the Hood
+    Casey Whitelaw, Dan Danilatos, Alex Mah, David Wang (May 29) |br|
+    Explores various aspects of the technology powering Google Wave, including 
operational transforms, data model, and AJAX editor. |br|
+    Slides 
(http://dl.google.com/io/2009/pres/T_0115_Google_Wave_Under_the_Hood.pdf) | 
Youtube (http://www.youtube.com/watch?v=uOFzWZrsPV0)
+
+.. |br| raw:: html
+
+   <br />
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/Resources/readings.rst
----------------------------------------------------------------------
diff --git a/source/developer/Resources/readings.rst 
b/source/developer/Resources/readings.rst
new file mode 100644
index 0000000..f051b0b
--- /dev/null
+++ b/source/developer/Resources/readings.rst
@@ -0,0 +1,37 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Further Readings
+================
+
+Anthony Watkins
+---------------
+Anthony Watkins has written a 5 part series going over the architecture of the 
example code:
+
+    http://www.angleofsight.com/2010/02/google-wave-federation-part-1/
+    http://www.angleofsight.com/2010/02/google-wave-federation-part-2/
+    http://www.angleofsight.com/2010/02/google-wave-federation-part-3/
+    http://www.angleofsight.com/2010/02/google-wave-federation-part-4/
+    http://www.angleofsight.com/2010/02/google-wave-federation-part-5/
+
+Bryce
+-----
+
+    http://blog.wavenz.com/2009/07/introduction-to-operational.html
+    http://blog.wavenz.com/2009/07/operational-transformation-algorithm.html
+    http://blog.wavenz.com/2009/07/operational-transformation-and.html
+    http://blog.wavenz.com/2009/07/operational-transformation-and_19.html

http://git-wip-us.apache.org/repos/asf/incubator-wave-docs/blob/608603b2/source/developer/Resources/talks.rst
----------------------------------------------------------------------
diff --git a/source/developer/Resources/talks.rst 
b/source/developer/Resources/talks.rst
new file mode 100644
index 0000000..86613b9
--- /dev/null
+++ b/source/developer/Resources/talks.rst
@@ -0,0 +1,145 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+..   http://www.apache.org/licenses/LICENSE-2.0
+
+.. Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+Talks
+=====
+
+Wave Summit Talks
+-----------------
+
+Day 1:
+^^^^^^
++------------------------------------------------+------------+------------+
+| Presenter/Topic                                | Slides     | Video      |
++================================================+============+============+
+| WIAB system architecture (Alex North)          | `slide1`_  | `video1`_  |
++------------------------------------------------+------------+------------+
+| Robot and Data APIs (Lennard de Rijk)          | `slide2`_  | `video2`_  |
++------------------------------------------------+------------+------------+
+| Building, and running the code (Joseph Gentle) |            |            |
+| Talk: Setting up wave in a boX                 |            | `video3`_  |
++------------------------------------------------+------------+------------+
+| Wave model deep dive (Alex North)              | `slide4`_  | `video4`_  |
++------------------------------------------------+------------+------------+
+| Development practises (Lennard de Rijk)        | `slide5`_  | `video5`_  |
++------------------------------------------------+------------+------------+
+| Wave Project Governance                        | `slide6`_  | `video6`_  |
++------------------------------------------------+------------+------------+
+
+Day 2:
+^^^^^^
++------------------------------------------------+------------+------------+
+| Presenter/Topic                                | Slides     | Video      |
++================================================+============+============+
+| Wave Server & Store                            | `slide7`_  | `video7`_  |
++------------------------------------------------+------------+------------+
+| Wave Export Options                            | `slide8`_  | `video8`_  |
++------------------------------------------------+------------+------------+
+| Demo: Novell demo                              |            | `video9`_  |
++------------------------------------------------+------------+------------+
+| socket.io (Tad Glines)                         |            | `video10`_ |
++------------------------------------------------+------------+------------+
+| Client authentication (Joseph Gentle)          |            | `video11`_ |
++------------------------------------------------+------------+------------+
+| Local Gov't & Wave (James Purser)              | `slide12`_ | `video12`_ |
++------------------------------------------------+------------+------------+
+| Oracle (Grant Emeny-Smith)                     |            | `video13`_ |
++------------------------------------------------+------------+------------+
+| Outlook (Matt T)                               |            | `video14`_ |
++------------------------------------------------+------------+------------+
+| Federation protocol (Soren Lassen)             | `slide15`_ | `video15`_ |
++------------------------------------------------+------------+------------+
+| Authentication performance (Scott Crosby)      |            | `video16`_ |
++------------------------------------------------+------------+------------+
+| Wave panel and rendering (Dave Hearnden)       | `slide17`_ | `video17`_ |
++------------------------------------------------+------------+------------+
+
+Day 3:
+^^^^^^
++------------------------------------------------+-------------+------------+
+| Presenter/Topic                                | Slides      | Video      |
++================================================+=============+============+
+| Concurrent Data & OT Alternatives              | `slide18a`_ | `video18`_ |
+|                                                | `slide18b`_ |            |
++------------------------------------------------+-------------+------------+
+| Client/server protocol (Alex North)            | `slide19`_  | `video19`_ |
++------------------------------------------------+-------------+------------+
+| Real-time editor & Doodads (Dave Hearnden)     | `slide20a`_ | `video20`_ |
+|                                                | `slide20b`_ |            |
++------------------------------------------------+-------------+------------+
+| Wave API Future (Pamela Fox)                   | `slide21`_  | `video21`_ |
++------------------------------------------------+-------------+------------+
+
+Day 5:
+^^^^^^
++------------------------------------------------+------------+------------+
+| Presenter/Topic                                | Slides     | Video      |
++================================================+============+============+
+| Wave UI Talk (Scott Peterson)                  |            | `video22`_ |
++------------------------------------------------+------------+------------+
+
+
+.. links
+..  slides
+.. _slide1: https://docs.google.com/present/view?id=dggjrx3s_386gn37nngv
+.. _slide2: https://docs.google.com/present/view?id=dggjrx3s_387fmpsrvd4
+.. _slide3:
+.. _slide4: https://docs.google.com/present/view?id=dggjrx3s_388kz759bff
+.. _slide5: https://docs.google.com/present/view?id=dggjrx3s_389cxmgvgfg
+.. _slide6: https://docs.google.com/present/view?id=dggjrx3s_399c9t4k8d9
+.. _slide7: https://docs.google.com/present/view?id=dggjrx3s_390d4665cfd
+.. _slide8: https://docs.google.com/present/view?id=dggjrx3s_392d5v4rgc7
+.. _slide9:
+.. _slide10:
+.. _slide11:
+.. _slide12: 
https://docs.google.com/present/view?id=0AZFPDiThSCjmZG50ZnZuNl84OWdwd3JrNGQ2
+.. _slide13:
+.. _slide14:
+.. _slide15: https://docs.google.com/present/view?id=dggjrx3s_393hhvjstfw
+.. _slide16:
+.. _slide17: https://docs.google.com/present/view?id=dggjrx3s_394dgzq4kfh
+.. _slide18a: https://docs.google.com/present/view?id=dggjrx3s_395fh6mckfb
+.. _slide18b: https://docs.google.com/present/view?id=dggjrx3s_401jmxbs2dg
+.. _slide19: https://docs.google.com/present/view?id=dggjrx3s_396d4qmhmgp
+.. _slide20a: https://docs.google.com/present/view?id=dggjrx3s_397f4m5hhg7
+.. _slide20b: https://docs.google.com/present/view?id=dggjrx3s_398cms8qgc7
+.. _slide21: http://prezi.com/nhuvwmwsv0nj/wave-apis-now-beyond/
+.. _slide22:
+
+..  videos
+.. _video1: http://www.youtube.com/watch?v=pDPBnmRDkag
+.. _video2: http://www.youtube.com/watch?v=Vs4cfvh2Ghg
+.. _video3: http://www.youtube.com/watch?v=AyvQYCv6j34
+.. _video4: http://www.youtube.com/watch?v=6ZqpeFydq4A
+.. _video5: http://www.youtube.com/watch?v=WpBrNUbB4sE
+.. _video6: http://www.youtube.com/watch?v=dBwakZjE76M
+.. _video7: http://www.youtube.com/watch?v=7dbDhmX2v6E
+.. _video8: http://www.youtube.com/watch?v=PKIHAIV_zPU
+.. _video9: http://www.youtube.com/watch?v=ICbBdAciwl0
+.. _video10: http://www.youtube.com/watch?v=X6lTwwzdR9o
+.. _video11: http://www.youtube.com/watch?v=xx0qbXC_uys
+.. _video12: http://www.youtube.com/watch?v=AHG21gGWgms
+.. _video13: http://www.youtube.com/watch?v=Yhsi6mHvqZE
+.. _video14: http://www.youtube.com/watch?v=qvv-YlYcnAE
+.. _video15: http://www.youtube.com/watch?v=z1VBdU38zlk
+.. _video16: http://www.youtube.com/watch?v=b4Xx4zdznio
+.. _video17: http://www.youtube.com/watch?v=76lmWFgnsgk
+.. _video18: http://www.youtube.com/watch?v=zo8uGlqQaCo
+.. _video19: http://www.youtube.com/watch?v=LOdOweJzqlM
+.. _video20: http://www.youtube.com/watch?v=EuXApEulIzc
+.. _video21: http://www.youtube.com/watch?v=pnQ54V1OP6g
+.. _video22: http://www.youtube.com/watch?v=pfqThLudfEg

Reply via email to