yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes:

> 新城@筑波大学情報です。
>
> この記事だけでは良く分からないけれど、Xerox PARC の Jupiter
> Collaboration System の技術が使われているみたい。まだ良く分
> かってないけれど、たとえ中央のサーバあっても、末端のクライア
> ントから見た時には矛盾することはありそうなんだけどなあ。たと
> えば、誰かある行を修正していて、だれかがその行を削除したりす
> ると、どうなるんだろう。

こんな記事がありました:
http://www.atmarkit.co.jp/news/200906/01/wave.html
「開発チームが明かす、Google Waveの実装概要」

理解していませんが、目についたところを拾ってみると、

・メールシステムを作り直すとしたらどうやるかという問題意識でスタートした
・矛盾が起こらないようにするため、Waveでは各操作を変換する
  「オペレーション変換」を実装している
・任意の2つの操作を1つの操作に合成する合成関数を実装した。
  任意の2本の操作ストリームをこの合成器に流し込むと、
  合成後の1本の操作ストリームが出てくる。
  これにより、オペレーション変換を軽くすることができる。
・操作の合成に関して、編集履歴の蓄積から任意のバージョンを引き出すときに
  最小限の計算量で済ませるために、「Composition tree」と呼ぶデータ構造
  (2分木?) を採用した。
・クライアントから操作(差分)を送るときに
  サーバから明示的に送信許可(ACK)を受け取る必要がある。
  任意に受け付けるのを行わないことで、状態数を減らせる。

だそうです。

Xerox の論文へのリンクも載ってました:
http://mirrors.ccs.neu.edu/MOO/papers/JupiterWin.ps