During the development of my project management software I've learned one thing: realtime is not always as good as it seems. Theoretically an application which updates every single component in realtime sounds delicious and fun - but in fact this would be pretty annoying.

An example

Let's take a look at my specific case: updating projects. Every project has different modules (tickets, files, etc.) which can be en- or disabled. And, of course, the project itself contains some information (title, description, etc.). Now imagine the following scenario: during your lunch the project leader decides to rename the project and disable some modules without telling anyone. We're ignoring the obvious lack of communication here; just assume the project leader is a very selfish and spontaneous guy. Before you went off for lunch you've opened the project - and during your break the following is happening:

As soon as you come back from lunch you're probably like "Wtf?!". Or just imagine you're actively looking at the project (trying to understand the descriptive description) and all of a sudden everything changes. You'll probably be like:

The good news: this is realtime. Realtime is mostly awesome. The bad news: this is extremly annoying and confusing. No one wants to use annoying and confusing tools (since we're already using a lot of annoying and confusing tools).

Notifications

But there's one additional problem: how to handle such things in a Single Page Application?

Just imagine a module is disabled while you're using it. You're trying to create a ticket but the module is offline as soon as you hit the save button. The server knows that and declines creating a new ticket - but the client has no idea what's happening and just shows errors. That would be pretty annoying too.

My very own solution to this problem: notifications. If anyone updates a project the following is happening:

This should do the job.

So, what's the conclusion? Not every component should be realtime. Some things, like a chat or notifications, need to be realtime (otherwise they'd be pretty useless) - and other things, mostly content, should not update automatically. Realtime components are powerful - but should be used in moderation.

P.S. I cheated on the first animation. I've never implemented this behaviour - I just switched the window.

P.S.2. Don't take these animations too serious. They're from a version I don't even want to call "Alpha". It'd be more like a "pre-alpha-Alpha".