Skip to content

Instantly share code, notes, and snippets.

@shannonmoeller
Last active October 18, 2022 15:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shannonmoeller/3f212ca98829f4f1f7df02e9df763063 to your computer and use it in GitHub Desktop.
Save shannonmoeller/3f212ca98829f4f1f7df02e9df763063 to your computer and use it in GitHub Desktop.
Why I won't be merging that TypeScript PR.

Goodbye Frontend Tooling

I started learning web development around 1999. We got a coupon in the mail for one free day class at a just-opened New Horizons computer training center. I chose "HTML 4.0 for Windows 98" from the brochure at random because I didn't know what any of it meant. When my dad picked me up at the end of the day I told him, "I know what I want to do for a living." The next time we went to Borders I picked up a copy of Sam's Teach Yourself Web Publishing with HTML 4 in 21 days with my paper route money and read it cover to cover in a week. We didn't have a computer with internet access at home, so I'd head to the library or use a spare computer at my dad's office and practice building pages with Notepad and keep my work with me on floppy disks.

The web and how we access it has changed a lot over the past two decades and I've had the pleasure of growing with it; from PHP and table-based layouts to full-stack JavaScript and CSS grid. I was the first person I knew to start using CSS, JavaScript, and Macromedia Flash (you read that right). I jumped feet first into the world of DHTML, XHTML, Node, CoffeeScript, 6to5 (you might know it as Babel), Sass, Less, PostCSS, jslint, jshint, jscs, eslint, grunt, gulp, yeoman, backbone, angular, polymer, prettier, browserify, rollup, webpack, you name it. Any time I learned something new, I'd abstract it and crank out an npm module.

Then something happened.

I realized that along the way I'd stopped building web pages. All of the time and effort I wanted to spend building something new I now spent trying to manage the tooling I'd used to build old things. Dependencies needed updating, vulnerabilities needed patching, breaking changes needed fixing, the new shiny needed to be dropped in instead of that old crap I had been using.

All of my dwindling free time was now focused on chores. Most of my projects over two years old could no longer be run as written. Even though I'd gone to great lengths to make them "future proof" and perfect.

You know what still works though? Those old sites. The ones I carried around on floppy disks. From when I wrote the bytes I intended to ship.

Browsers make a wild promise: Don't break the web. With very rare exceptions, any website built with web standards will always work in the browser. What other platform makes that promise? Browsers and Node have only gotten better. All of the pain in modern web development and Node module maintenance I'd been experiencing was the result of self-inflicted tech debt. I am become magpie.

No more.

I'm done with build tools.

Back to the future

For the foreseeable future, all projects I maintain will target vanilla development. Web projects shall consist of HTML, CSS, JavaScript, and SVG. Node projects shall consist of JavaScript. Any pull requests that add or edit build tools or convert files to other languages will be closed without merging. The use of linters and formatters is acceptable and encouraged.

What about TypeScript

I do not support TypeScript as a language in my projects for the same reason I don't support Flow, Closure, Elm, OCaml, CoffeeScript, Rust, C#, C++, C, or FORTRAN. If it can't run in browsers or Node.js without being compiled, it's tech debt. No, thank you.

I do rather like TypeScript as a linter with JSDoc comments as they can be added to plain JavaScript files. When TypeScript is replaced by the next big thing, projects will be left with some helpful docs and that's just dandy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment