Nearly two months in, I thought I'd publish 10 realtime web technology predictions for 2014 based on how it developed in 2013 and the trends I've seen so far this year. I've added two additional bonus predictions for good measure.
Note: I came up with most of this list at the start of the year. I've only just got around to expanding upon the details now.
Before I go into the predictions: if you're interested in realtime technologies then you may be interested in the Realtime APIs panel that I'm putting together with Kin Lane as part of the API Strategy Conference 2014 in Amsterdam.
We're seeing increased understanding of the benefits of realtime web tech so it's not surprising that the number of apps using the technology is rapidly increasing. Common functionality includes simple data updates for notifications, dashboards (sports, finance, site analytics and anything that's stat-heavy), realtime news and activity streams. Or more complex functionality for multi-user chat, collaborative applications (like Google Docs, Office Live and numerous online IDEs), multiplayer games, interactive 2nd screen experiences, realtime mapping and GIS (Geographic Information Systems) and - hopefully - much, much more!
I'm making the obvious predication that in 2014 realtime will become a fundamental part of a significant number of new mainstream applications.
Since realtime is becoming so fundamental to application experiences, realtime functionality will make its way into many existing frameworks. This ultimately reduces the uniqueness of existing realtime solutions. This doesn't mean that dedicated realtime solutions aren't valuable, but it may mean that the use of some types of realtime (e.g. Pub/Sub) may diminish in the initial phases of projects.
Dedicated realtime services (hosted or otherwise) will be sought when scaling becomes necessary or tightly coupled architectures result in unwanted complexity. In this situation it's likely a move to loosely coupling architecture using a dedicated piece of realtime infrastructure is will be of benefit.
I'm actually really excited about this development as it means that existing solutions will need to "up their game" in order to present a compelling reason to use them at the start of a project. I'm hoping this will lead to lots of innovation when it comes to new features that meet common use cases and improved developer experiences. All the better for us developers!
With realtime becoming core to so much application functionality we're undoubtedly going to see an increase in the number of frameworks that are built on the foundation of realtime. By this I mean their fundamental functionality is powered by realtime technology; WebSocket, EventSource/Server-Sent Events, HTTP Streaming, WebHooks etc. and the use of Pub/Sub and data synchronisation is core.
If you know of any others, please get in touch.
Collaboration is probably the most powerful use case for realtime right now because it provides the most benefit; it enables and eases communication - absolutely key when working in any form of team - and it's an incredible time-saver.
Right now we're seeing lots of examples of chat, document editing, audio/video communication using WebRTC and proprietary technologies, and some drag n' drop experiences. But I'm very hopeful that we're going to see increasing innovation in the collaboration space.
Data synchronisation solutions appear to provide the best solution when it comes to collaboration because you are collaborating on the same data structure with others e.g. a data structure representing a document. So I'm going to carefully watch for updates to existing solutions and see if any new technologies or ideas surface.
I'm very hopeful that companies who are offering an API as a core part of their business are very aware of the developments of realtime technologies and use cases. As such they should know of the value of exposing and sharing data in realtime. Any event within a system has associated data and there's opportunity to share that and act upon it.
There is no reason why API providers can't start exposing evented data via a realtime API. Whether that's an API powered by WebHooks, HTTP Streaming or WebSockets, this data has the potential to add even more value to the offerings of API providers. Getting data sooner could even be seen as a premium service!
WebHooks have been used for a very long time. But the term "WebHooks" used to define them is comparatively new. The great thing about having a commonly-used term is that it provides a way of communicating understood usage, encourages adoption, and leads to improved practices (and potentially standards).
We're seeing many more uses of WebHooks and it makes sense that the usage is going to increase further. This may be mainly because the web is still very HTTP-focused and the idea of publishing and receiving data via HTTP is understood and development can easily be undertaken.
As mentioned in the "Commoditization of Realtime" prediction, hosted services offer a lot of value when it comes to scaling. Scaling realtime infrastructure is still relatively difficult so in order for API providers to facilitate point 5, "Realtime APIs", I believe it's highly likely that they will consider using existing Realtime Hosted API provides to do so.
Services like DataSift, Firebase, PubNub, Pusher and Superfeedr are in a great position. They already have the Realtime API infrastructure in place and in most cases they also have an authentication mechanism to enable a service to use them as their own infrastructure. The PubNub Access Manager is a very good example.
There are a number of open source realtime solutions for transports like HTTP Streaming, HTTP Long-Polling and WebSocket, WebRTC (not fantastic, but growing) for scenarios like handling web browser connectivity and for common use cases like PubSub, RPC (Remote Procedure Call), RMI (Remote Method Invocation) and PubSubHubbub.
If you know of one, or built one, please get in touch.
Socket.IO has had an amazing influence on the uptake of realtime web technologies. It offered accessible and powerful functionality that demonstrated the benefits of realtime web functionality. It was also part of the Node.JS revolution which really helped it's cause.
However, for a long time the project wasn't maintained. This has picked up recently and I'm hopeful that it means we're going to get an official 1.0 release soon. With so many companies and individuals using Socket.IO I'm surprised that somebody hasn't offered to sponsor development - or maybe they have, but it's just not public knowledge?
This tabloid-like headlined prediction is really to make the point that Socket.IO is a great solution that deserves some love. I can't see how this won't happen either through the original developers giving it more time (as they appear to be starting to do), through additional external contributions or through somebody else taking it on. It is MIT after all.
The Internet of Things (IoT) is a predicatable-predition, and something I've been talking about since at least 2011. In 2014 the usage of realtime web technology and IoT is going to skyrocket. IoT is already in near daily usage by hacking developers and during 2014 the usage is going to quickly increase in consumer technology.
A big deal has been made of WebRTC for audio and video communication. And it is a very big deal which will continue to result in lots of great apps using audio and video without the need to of costly infrastructure. But, the RTCDataChannel API has generally been overlooked, until recently. Dan Ristic gives a good overview of RTCDataChannel which I recommend checking out to get you thinking about how peer-to-peer data could be used within your realtime apps.
With this dramatic increase in development using realtime web technologies there's going to be an increased demand for tools that help the realtime app development process. We have some amazing tooling for request-response HTTP-based logging, debugging and playback. But when it comes to streaming or WebSocket solutions the tooling falls a little short. We instead rely on the libraries of solutions providing the necessary developer help.
I expect logging, debugging and tooling of existing solutions to improve and I also hope that we start to see dedicated tooling being created to help realtime web application development. Maybe RunScope - who are pioneering developer tools as a service - will add WebSocket proxy support?
Realtime is going to be everywhere; from web and mobile apps to IoT consumer products. There are some interesting challenges to be undertaken when it comes to the UX of some of these apps and products, and to the Internet infrastructure which will be put under increasing load - an opportunity for solution providers to start thinking about adding features to help and cope with this.
The next 10 months of 2014 is going to be very exciting for realtime web technology, realtime solution providers, realtime hosted services, and more importantly for us developers. I expect some serious advancements in existing solutions and some new players to come along. Realtime web technology is going to become even easier to integrate into existing applications and we're going to have a much wider range of choice when building realtime apps from the ground up.
If you've seen any other trends, are building anything powering - or being powered by - realtime web technologies, or have predictions of your own please get in touch.
And don't forget, if you're interested in realtime you should consider heading along to API Strategy Conference - March 2014 in Amsterdam and check out the Realtime API Panel.