You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

A Wavy Future - Project Brief

 

Overview

Apache Wave is a successor to Google Wave -> FedOne > Wave In A Box. Wave is a real-time communication tool. Wave is a server that hosts and federates waves, supports extensive APIs, and provides a rich web client. This project aims to rewrite the original implementation of Wave that is currently available at www.github.com/apache/incubator-wave. This rewrite is to ensure a scalable and universal OT server implementation to allow Apache Wave to be used for much more than just a communication-tool that is its only service available at the time. The client implementation of the currently available tool will be extended across multiple platforms to show solutions to OT editor implementations on varying devices.

please note the project proposal for a rewrite was given here: https://docs.google.com/document/d/1YnhcupFtReZyq5Y5QheIbYFO2epEhXGucNZE04r_oA4/edit.

Server:

The Apache Wave server is to be designed as such to be a authenticated server with inbuilt data redundancy to perform OT operations on Wave data structures. Wave data structures are customised xml-like documents in which custom tags can be made to allow for differnt uses of data manipulation in this video (https://www.youtube.com/watch?v=6ZqpeFydq4A) the decisions behind the xml-like language is explained. These structures are not exclusive to the conversational structure which can be viewed here: http://wave-protocol.googlecode.com/hg/spec/conversation/convspec.html but some projects outside wave have developed additional data structures like the Swellrt project. The development of these data specifications outside the servers implementation allow for a more general use OT (operational transform) server back end and allows clients to handle the implementations. This makes the server responsible for storage, authentication and consistency only.

Client:

Note: This will address the original use of Google Wave only.

Clients for Apache wave need some level of OT implementation to accept OT instructions from the server and change the document on the clients end. The current client is deeply intertwined in the server to reduce the duplication of code for this however it limits the possibility of native implementations on other clients. The goal is to produce a Rich text multi user panel & editor to allow display of read only documents and full read/write access documents that does not know OT and a OT layer which sits below the editor. In doing this it also allows mobile clients to match the compatibility of the web client, a desktop client could also be developed if needed.  

With the client wave data structure being decoupled from the server this does open up other uses for wave outside the current client which with proper levels of documentation can allow many different applications be developed on top of the Wave server. 

Project Background

Note: The project background will cover most of the original implementation of Google Wave and some of the developments outside of Apache and how the project has evolved inside Apache.

Note: Basic knowledge of OT is assumed.

 

 

Project Objectives/Outcomes

Incubator Related:

The Apache Incubator is a place where young projects with basis can be further grown into top level projects at Apache, all new projects must go through the incubator before becoming top level. Most restrictions the incubator puts around graduation is about having a stable project with a community of developers and users. 

  • Build a community of developers and users, this is to ensure growth after the project has left the incubator and that the project doesn't lose traction.
  • Have a stable source code repository.
  • JIRA issues dealt with timely manner.
  • Well documented, If no one can learn how to use Wave then how will it get used.
  • License compliant. This refers to the legal issues with opensource licensing requirements. 

Server:


Client:

 

Project Scope

Project Organisation

Timeframes

Project Approach

Major Deliverables

Constraints

Risks

Recommendations

  • No labels