work 1 min read

Apps, Not Clients

Words by gga

Thanks to the mobile explosion, for the first time in 15 years, as an industry, we’re writing rich, complex, stateful client applications. But I don’t believe we’re yet looking at this as part of a broader trend. When I sample the general vibe of the tech world, I see grudging acceptance that we need better tools to write the complex front-end apps we now write, and genuine excitement about new technologies and approaches to back-end systems.

Grudging acceptance of tools such as AngularJS and iOS. Excitement about MongoDB and data science.

With mobile apps running on sophisticated devices and complex JavaScript single-page apps, I think we’re on the verge of seeing a shift in system architecture. A possible future would have inter-connected heterogeneous apps, communicating directly around a collection of central systems-of-record.

In the last 15 years I’ve written my fair share of .NET WinForm apps, MacOS X desktop apps, command line apps and even some Win32 apps. As, I’m sure, have most of you reading. When I say ‘as an industry’, I mean where the world of software engineering is devoting its group-thinking, -writing and -problem-solving. We’ve got a pretty great shared pattern language for web and back-end systems, but we’re having to re-discover knowledge from sometime ago to build apps.

Which is, interestingly, what the Plan9 fans said about REST when it became big news.

A possibility is that this is just a temporary glitch as a result of most people currently having high-powered client devices in their pockets. Maybe as the pendulum swings back, we’ll revert to writing the sort of systems typified by most web apps.

But I don’t think it’s going to smoothly swing back to the world we were familiar with. Or it doesn’t have to. Apps can be more than just clients.

This might just be a long-winded way of saying ‘The Internet of Things could be closer than we think.’

What will these systems look like? Central RESTful systems-of-record storing data with applications consuming these services and sharing events and changes directly across peer-to-peer and event sourced ad-hoc networks, using protocols such as XMPP.

Personally, I’m quite excited about what’s possible with these new architectures.