Saturday, November 21, 2009

Google Wave, HTML 5 and the Internet

(Please let me no if their are any errors with content, spelling or grammer:)

Google Wave:
"a personal communication and collaboration tool" (Wikipedia)

"If email were invented today.." What does this really mean?

Google Wave is a bundle of technologies working together to change the way we communicate. We use Email, Instant Messages, Blogs, Twitter, Word Documents, Wikis, Social Networks, etc..

Well, each one of these means of communication use a different "Data Model" to organize the data and information.

Google Wave uses a "Data Model" that is very fundamental(simple) and very flexible allowing for a convergence or integration of all these means of communication techniques.

What does this mean?
Email has a problem because it is sequential and you send the whole message each time and not just the new part
Instant Message is Sequential as well and requires your continuous attention.
Wikis have a problem because it is hard to understand who contributed what and at what point in the time line of the article.
Social Networks have a hard time creating an organized and productive means of communication instead of a "just catching up environment"

There is more to this but this is enough to explain where Google Wave fits in...

Google Wave says:

We are going to organize our Threads, our Communication Sessions, our Documents, our Living Documents in the most fundamental way possible.
Instead of using a data model which is just optimized for one means of communication.
Our new way of organizing our data (Our Data Model) will satisfy the complete integration of all the means listed above.

We are going to make lightweight pieces of information that can be connected in a variety of ways and at different points in time to integrate the above applications.


You can start a communication session or thread that can be updated in many different ways. More users can be added to the conversation. you can control what parts of the conversation are seen by what other members. You can update and edit previous parts of the communication messages and be able to easily determine who updated and changed what parts of the messages ("messages" or "pieces" is more accurate because each "session" or "thread" is made up of many "pieces" which can be inserted anywhere and at anytime and can be updated/edited by anyone). You can also do everything in real time with different people editing different parts and have real time keystroke updates from the other members. You can have the message thread or session or "Wave" integrated with external applications. You can also replay the time line of the "Wave" to see a very accurate depiction of what happened (If you were not there the whole time to see what happened when).

Current Limitations:

Currently, it is very difficult to implement applications like Google Wave because of a lack of updated Standards.
HTML 5 will hopefully remedy some of these limitations

Applications like Wave need to keep connections to the server open
(This is different from just being able to send a request, get a response, and be done)
now you have to be able to communicate constantly which eats up server resources very fast.

HTML5 will include new visualization methods (Canvas and 2D modeling & new Video/Media embedding techniques), Drag and Drop Features (to drag and drop media from Local computers to remote application :: Easy upload or download :: Fade the boundary from Web Based Application and Desktop Application), Offline Storage Capabilities (Database for Web App to use while not connected to internet or remote application :: Again Fading the boundary between remote/web based and desktop), and WebSockets which create a more resource efficient means of communicating "upstream" and "downstream" concurrently and continuously (for instant and live updating and stuff:)

How Does this apply to Networks

Well the visualizations and drag and drop features are more for the user.

The Offline Storage Capabilities means that we can lose network connection (which means our dependency on network and connection goes down and fault tolerance goes up :: but this almost means nothing because the amount of time you go without a connection will drop as these technologies become more prevalent :: no BIG deal but kinda a big deal)

The Kicker is the WebSocket. We have probably heard of AJAX (whether or not you know exactly what it is or does, you know it is involved with sending new data from the server to client (Browser).
The other technology less commonly known is Comet (Comet is, more or less, a hack. it is a way of getting data to and from computers on the internet in a seemingly instant or real-time fashion. Also, Comet can easily be misused since it not an actual thing. it is just a way of achieving this seemingly real-time communication connection)

HTML 5 introduces WebSockets which are more fundamental to the Internet, Browsers, and HTML standards. Therefore, it is less commonly viewed as a "hack".

Google Wave uses HTML 5 and I am not sure about its actual implementation of WebSockets... let's just assume they are using these WebSocket things which aren't fully standardized (just like most things in HTML 5 even though most Browsers already support the standards... hopefully this isn't confusing even though it is confusing ..:)

This new implementation more efficiently uses network resources:

"The HTML 5 specification introduces the Web Socket interface, which defines a full-duplex communications channel that operates over a single socket and is exposed via a JavaScript interface in HTML 5 compliant browsers."
(http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket)

This means we use ONE SINGLE SOCKET "full-duplex" connection which reduces the number of concurrent connections and reduces the stress of the servers and network traffic (the last bit on reducing network traffic may not be accurate but I think it's true)

The part of the quote about JavaScript accessible in HTML 5 means that if you are dealing with an HTML5 compliant Browser you can write an application which uses WebSockets by using pure JavaScript. Since this still does not make a whole bunch of sense lets say: Your web developer or the person creating the web application does not need to implement any "hacks" or technologies not fundamental to your normal Web technologies (HTML and JavaScript are the most fundamental technologies :: Flash, JAVA, and Microsoft Silverlight, Comet-ish stuff are NOT fundamental and are viewed more as hacks and just workarounds because of current web limitations; hopefully this make sense)

Google Wave and Future Implications:

Reduce the use of Email (create a more efficient means of communication and improve collaborations and communication).
Force Microsoft Internet Explorer to accept HTML 5.
Increase the movement not to use Microsoft Internet Explorer.
Support the Adoption and Agreement on HTML 5.
Support the Adoption and Development of the new Wave Protocol.
Create an environment where Google really will rule the earth (or just create a more sustainable market for growth).
And more stuff...