When I got into the web thing back in 2000 or so the world was a vastly different place. We had just got out of the world of manually parsing POSTs using perl scripts and needing to write anything performant in C or C++. On the low end ColdFusion had shown the way, and PHP and classic ASP were coming into their own as web-focused scripting languages. Java servlets were taking over the enterprise spot from C and C++.
But there was still tons of manual work involved in building HTML-based CRUD apps -- which are still all the rage. We started to see the rise of frameworks focused on making it easy to deliver these sorts of apps to the browser. These frameworks took various forms and have had various depths, but as web applications tended to have very common problems -- at least if you are focusing on building CRUD apps for desktop browsers -- an eventual shape won out. By the latter part of the '00s we had a number of frameworks featuring:
- MVC pattern based.
- Feature a built-in object relational mapper and some presumptions about persistance using a SQL-based database
- Typically enable auto-generation of much of the UI from some sort of model object or database table.
- Typically have a built-in authentication mechanisim
Some examples of these sorts of frameworks would be Rails or Django and to a lesser extent things like ASP.NET. They all make large presumptions about the shape and nature of your application and environment. They all were built to make it fast to deliver browser/keyboard based CRUD apps quickly. Moreover, they all have grown pretty thick and complex over the years -- I know I typically spend time removing components I don't need from new projects before every writing a line of code and alot of time worrying about what was included I forgot to remove.
So we are starting to see the rise of much thinner, lighter micro-frameworks that typically focus more on delivering JSON or simple HTML rather than big, thick HTML renderings. Some examples would be sinatra (rails), flask, node.js, twisted or manos de mono (think node for C#). These frameworks feature many fewer presumptions -- most start as pretty raw wrappers around the native web stack on their platforms and add components from there.
This isn't to say there is not a place for HTML -- I'm in the pay TV industry here in the US and just about every single set top box UI coming down the pipe is based on HTML5, oftentimes rendered in "the cloud" and piped back down to the box. Some of the more interesting mobile apps are hybrid HTML5 / native apps. The HTML era is ending, long live HTML.