I've been using Google Wave for about a week now, thanks to an invite from everyone's favourite Linux monster qedi (who still hasn't updated his website to work properly in Chrome, by the way). From this week of use I have come to my conclusion about Wave: it's weird.

Wave is designed to be a replacement for a lot of communication technologies: e-mail, chat, forums, wikis and blogs. To that end, Google has come up with its own protocols and whatnot to deliver the basis for other companies and nerds to create their own Wave-based applications and websites. But Google hasn't released this yet, and what we're given (for now), is a web application that demonstrates all of the different functions that other apps can take advantage of later.

So we're given a web application, which itself almost resembles an e-mail client, with a list of saved searches (which are effectively directories), a list of contacts, a listing of active "waves" (the Google Wave word for "thread") and a big area to actually view the waves. The listing of waves is a lot like an inbox in an e-mail client, and indeed one of the views is called an inbox. When waves are created, the creator can attach participants to the wave. Those participants will see that wave appear in their inboxes, very much like e-mail.

The difference from e-mail comes from the real-time wiki-like aspect of Google Wave. Waves can be appended to and edited by any participant. When edits are being made, all other participants who happen to be watching will see those edits being made in real time. This allows the wave to both look like a wiki to offline participants and as a chat client to people who are online. That's where most of the weirdness comes from. Google Wave tries very hard to be everything, and the compromises it makes to accomplish this makes it unfamiliar no matter how you think of it. Hence, it's weird.

And it's laggy. Oh man is it ever laggy. Forgetting that the web wasn't designed to handle non-trivial, responsive applications, Google Wave bites off way more than it can chew. Even when used with a light-weight browser that is designed to take advantage of multi-core processing to deliver snappy performance for Ajax applications (Chrome), Wave can take several seconds just to respond to local keyboard inputs, let alone input from other users. (Remember, Ajax is a kludge on top of a kludge afterall.) Hell, Wave even takes several seconds just to scroll around; using up 100% of several CPU cores in the process.

The lag problem probably would go away if Google Wave were a client-side application rather than a web application, if only because client-side applications can actually be designed to do this from the ground up, instead of relying on a browser's Ajax framework and layout engine to do it for you. The problem isn't apparent in small waves, but once a wave gets a couple dozen participants making changes all at once, you quickly get up to hundreds of posts in the wave and its sub-waves (which Google calls "wavelets"). Hundreds of posts take a long time to load into the browser, and Wave seems to load them up one at a time instead of all at once. That makes everything else take a lot longer to load.

Contributing to the lag problem is gadgets. Don't get me wrong, Google Wave gadgets are pretty cool. You can have voting gadgets, collaborative drawings and maps, uploaded pictures and attachments, etc. A lot of them are at least somewhat useful and the concept, I think, shows a lot of potential. But they're slow. I don't know if it's the gadgets themselves that are slow or if it's how Google Wave loads them or what, but gadgets increase the loading time of a wave almost twofold which is a massive issue for larger waves.

Wave also has a lot of custom keyboard shortcuts and user-interface components that most users have never seen before. It has the usual things like bold text and links and images and stuff, but it also has concepts like "follow/unfollow" which determines whether a wave will appear in your inbox if it updates. It has four different waves of moving an item out of your inbox: unfollow, archive, trash and spam. Figuring out the differences between these methods and how to undo them if you accidentally press the wrong one is a frustration for many new users. Accidentally clicking them is a big problem since the "spam" button is right next to the "read" button, which you press to make a wave no longer appear as being "new" in your inbox. "Read" is something you press often and, because Google Wave is currently invite-only, "spam" you press never. Why are they next to each other?

But nothing is as confusing as Google Wave's scroll elevator (as seen in this screenshot of my Wave contacts list). The concept of a scroll elevator was part of the Open Look Unix GUI specification in the '80s. Its scrolling functionality eventually died and was replaced by the now-ubiquitous scroll bars we see on Windows and Macs. The scroll bars we have today won over the scroll elevator because of a number of reasons, including the fact that with a scroll elevator the damned buttons are always in a different place.

When I first saw the Wave implementation of the scroll elevator, I wasn't sure if I liked it or not. I was leaning toward liking it. Then, I had a few conversations with other Wave users including fellow UW alumnus Paul Tomblin. They were all telling me roughly the same thing: it's weird, scary and confusing. (And it's got shifty eyes.) The fact that so many people found it confusing means that Google really failed at the principle of user-interface consistency: everyone is familiar with a normal scroll bar and people become confused when they see a similar-but-fundamentally-different scroll elevator.

I'm pretty sure the guys at Google made their own scroll functionality for performance reasons, but I don't see that as an excuse to confuse so many people unnecessarily. They could have saved on performance, saved on horizontal space and added new functionality using a regular scroll bar instead of making an elevator.

Weirdness, lag and poor usability aside, I find myself using Google Wave a lot. In fact, I'm using it right now to draft this post. I also use it to hold discussions about other topics and sites that don't have discussion functionality built in. Some of my contacts on Google Wave have been using it for blogging and as a make-shift content backup for volatile information. Google made Wave to replace everything; I don't think it will, but it's definitely got potential and it's already being used by a lot of people in a lot of creative ways. Once Google fixes the lag issues I can definitely see it being used more seriously in the future.

By the way, my Google Wave ID is welbog at googlewave • com if you want to drop me a line on that medium. My contact list can always grow larger. And no, I don't have any invites so don't ask me about them.