Here are some thoughts on the state of web app development in late 2014.

The web is still the largest open platform of choice for both documents and interactive media (apps). It’s beating out native apps on desktop, on mobile it’s a second-class citizen.

For developing web apps, I’m seeing a trend where everyone is moving to JavaScript. The web presents itself in HTTP as a static document with limited interactivity (think HTML, CSS and little snippets of JS upheld by JQuery selector mess). People have built an interactivity layer on top of this using JS.

Now we’re looking at moving away from developing the HTML view and JS interactivity as two pieces, and instead pushing them as one. Among the plethora of JavaScript MVC frameworks, the late AngularJS 1.x and ReactJS are two which offer a really sweet merging of the composable structure of HTML and the interactivity brought by JS in syntax. I’m very much liking the direction ReactJS is taking with the structuring of web apps into loosely coupled components. I think it’s very nifty and easy to understand. One major thing it does is bundles interactivity with each HTML element, rather than requiring some JQuery to find it and add different functions. You put the event handlers directly in the definition of the HTML, rather than finding it with JQuery using a class selector (which you also have to keep track of) and binding each individual event handler to the element.

The next step in this evolution is undoubtedly the replacement of whatever stack you have server-side (e.g. Rails) with a JavaScript driven one (NodeJS, Meteor.js). It will take a while, but it will make it much easier to develop in a single language, rather than as I have been doing, making my component.js.jsx.erb being pre-processed by Rails to add in all the important bits beforehand (like the URL routes for AJAX etc.).

The alternative, which is much less likely but no doubt still a possibility, is for browsers to include a nicer lower-level language (asm.js is their feeble attempt at this) for those who would rather not have their entire tech stack in JS, an unpredictable language hardly anyone actually understands but nonetheless is the de facto standard (I don’t actually mind that much, I like how casual it is sometimes, esp. with respect to objects/dicts). It’s very unlikely to happen; the fragmentation would be very costly.

On the note of browser innovation, I think sometime soon we’re going to see the concept of tabs fade away completely, and start to have the browser as more of a shared application runtime and sandbox (At least on the desktop, Apple has done a good job making sure Chrome is only an app in their iOS ecosystem) — the W3C has been doing some drafting of proposals around this since 2012.

One last thing, earlier I deliberately chose to refer to these web apps as interactive media. I think it’s important to remember that while we are occupied currently with our linear mostly-textual user interfaces on the web, future developments may completely change this. Virtual reality is stepping up as the next major thing (Oculus Rift, Magic Leap), presenting interfaces in 3D, rather than 2D as we are used to. I’ve noticed though, that out of our five basic senses (touch, sight, hearing, smell, taste), smell and taste have yet to be seen at all in the digital world (digimonde?). This is apparently due to the difficulty of digitizing this information, but as history has shown, it’s not a matter of how but when…

24th November, 2014.