The worlds worst stack.

An Open Letter to the Web

Joey Clover
4 min readJan 23, 2016

Dear Web,

I love you, I honestly do. You make my life a pleasure and provide me with endless opportunity. You’ve been like both a father and mother to me. You’ve made me into the person who I am today (a guy who writes a letter to a non-physical entity). However, our relationship is flawed. It’s not me, it’s you. You are so full of broken style rules and browser fragmentation that it makes it a poor experience when I try to get intimate and write applications for you.

You’ve evolved so much over the years but there are a few traits that you shouldn’t have kept. You’re full of transpilers, dependencies, preprocessors and template engines. No, I’m not saying you’re the only platform that has its faults but yours are the largest. You’re probably going to want to end our relationship after this but here goes:

CSS

Cascading Style Sheets. Initial release: December 17, 1996. Can we just take a moment to absorb this. Nineteen years ago! I understand sentiment but I think it’s time to move on. Iterations of CSS are patches that attempt to enhance the markup language. However, it’s riddled with vendor prefixes because browsers refuse to agree on a standard and implement it. It results in you being a mess. It’s so bad, we need preprocessors to translate a vaguely readable (SASS, SCSS, etc) markup into a messy minimised file.

HTML

Hypertext Markup Language. Initial release: 1993. Twenty three years old. Are you starting to see the pattern? You’re stuck in your old ways. You refuse to move on in fear of change. I hate HTML and you force it upon me. Some great people have created template engines (Jade, Handlebars, etc) so that, once again, it’s less of a pain to write applications for you. Why would you make it so painful for people who appreciate you to make applications.

Javascript

We all know who this is. I normally don’t contest the existence of a language for mainstream use. Everybody has a right to use any language and every language is designed to solve a different problem. However, if that language was created in 10 days as an experiment, it concerns me how it is used as the core of the largest platform in the world.

I like Javascript for prototyping, that’s about as far as the capabilities of the language stretch for me. It’s not a language that you should be dependent upon on. It’s 2016 and developers have only just started testing their applications for you and even that’s cumbersome. Browser support for ES6/ES2015 and even ES7 is so poor that we need transpilers, shims and polyfills (yet more dependencies) to ensure that Javascript runs across multiple browsers. Here is an example of my core “stack” when building a complex client-side web application:

WebPack + React + React Router + Mocha + Karma + Expect + PhantomJS + Babel

It takes ~100 lines to write a boiler-plate application that renders “Hello World” to your browser window. Sure, we can write it in a single line with vanilla JS but good luck maintaining and testing a complex web application with that approach.

It’s Time To Change

I know it can appear rude to suggest that something be changed but when it’s for the greater good, it’s worth considering. HTML, CSS and Javascript are all inappropriate technologies for you. I have a few suggestions. It’s a lot to ask and it’s from my heart.

HTML should be replaced, not iterated upon. The only reason these technologies have survived is because they arrived first, not because we want them. We’ve become dependent on them.

These technologies are like parasites. They’ve infected you and they just won’t leave. The angle-brackets style of HTML is unreadable and awkward. It’s long overdue to be replaced. There are alternative proposals to HTML such as AXR (http://spec.axrproject.org/). I’m not saying this should be the new specification, I’m just saying that you can move on.

CSS is your cheap, trashy makeup. It’s hard to apply and it takes a true patience and wizardry to make yourself look good. Apple have adopted a system called the “Cassowary Constraint Solver” for their auto-layout framework. It defines the visual structure of the view whilst keeping the logic and semantics separated. There is a working implementation of this over at http://gridstylesheets.org/guides/ccss/. The term CCSS is controversial because CSS needs to be gone, not incrementally patched.

Javascript it a big topic. It’s your brain, it ensures all of your internal components work together and without it, you’d be dead. Everything has a lifetime and I believe that it’s time to replace your core.

Javascript is hard to test, terrible to maintain and is not built to scale.

I don’t have much to suggest here, other that another language be substituted. Javascript is a sub-par language that was created in 10 days. It creates an unnecessary need for hundreds of package managers and every day there seems to be a new framework. It’s not necessarily Javascript I have the largest problem with given that ES6/ES2015/ES7 are massive improvements. However, it’s the fragmentation and dependencies that are intrusive and painful to work with.

Conclusion

I’m sorry, I did not want to talk about your flaws but you’re full of major ones. I appreciate you and you remain one of the most important entities in my life.

Please change your ways and have a better future for yourself. I don’t know how but something needs to be done. Note: to anyone that says “want it done, do it yourself”, this article clearly went over your head.

Joey Clover

--

--