After observing the JS “community” for a while and its various skirmishes I have come to the conclusion that, due to their capacity in attracting loud voices, these are the areas that JavaScript developers seem to care most about:
- Automatic Semi-colon Insertion
- eval is evil
- ES5 shimming (e.g. partial/incomplete shims)
- Browser support
- JSLint, JSHint, i.e. anything that judges your JS
- JavaScript vs. CoffeeScript
- JavaScript vs. Dart
- ES5/6 features (e.g. the fat arrow)
- Coding conventions (white-space, curly-braces)
- MV* frameworks (Backbone, AngularJS, Knockout, Ember, etc.*1000)
- Node.js
- Millisecond performance differences
- OLD: jQuery vs. Dojo vs. YUI vs. Prototype vs. Mootools vs. ExtJS
- OLD: Native prototype augmentation
To clarify, there are a lot of really valuable discussions that occur surrounding the above topics, but there is also a lot of passionate rhetoric defending various sides with little basis in fact or pragmatism.
On the other side of the coin we have areas that are still cared about but are rarely fought over with such passion and rhetoric:
- Minification tools
- JavaScript engines
- Build tools
- Web inspectors / profilers
- API naming conventions
- …
Somewhere in between these two extremities lies AMD.
This is just an obvervation… and I thought it worth posting. Did I miss anything?
Thanks for reading! Please share your thoughts with me on Twitter. Have a great day!
I feel the fact that neither testing nor application design appears on the list should be of concern to the community.
No skirmishes over tooling? Clearly you haven’t met me yet! 😉
“Somewhere in between these two extremities lies AMD.”
What? That seems like the most random thing you’ve ever written… It’s like taking out on washing machines and coin dryers for two paragrahs and then going “okay, and this is why light bulps give off light”.
I was like “wait, what? huh? AMD is between JSLint and minification??” AMD is a CPU/GPU/APU manufacturerer and has very little to do with the javascript communities.
Please explain yourself. I’m confused.
Lol, Martijn, not AMD the hardware company, AMD the javascript pattern. https://github.com/amdjs/amdjs-api/wiki/AMD
@Martijn:
AMD = Asynchronous Module Definition (see http://addyosmani.com/writing-modular-js/)
I would definitely say there’s a lot of discussion around Modules and how to define/load. Some people ridicule the JS community for this but i think it’s a sign that the language is maturing. JS apps in general have a sync/async complexity that some other areas lack, that’s why it took us longer to get here and we will see more discussion before we’re finished.
Martijin: Agree.. and as a side note, JS definitely runs faster on Intel!
What about CommonJS?
Kelvin: between minification and Nvidia, so not worth mentioning.
Closures, anon functions, craptastic MVC implementations and coding at a monkey level but not caring about it because the minify-GOD will make it good, you left those out. Oh, and node.js, because that is V8 and that’s like assembler for the web and stuff…
Martijn: AMD is also the acronym for Asynchronous Module Definition, which is mostly used in RequireJS. See requirejs.org/docs/whyamd.html for more information.
There is somewhat of a discussion going on, esp. about AMD vs. CommonJS or whatever, although I think it has calmed down a bit. I didn’t really follow it at the time.
@Martijn You gave me a great laugh.
And for all this arguing about what color stripes every JS dev has, the only thing that REALLY matters to me is that Javascript remains a pain in the butt to test and debug compared to almost any other modern language. At least Chrome keeps getting better and better dev tools, but it’s still a long way off from a real IDE.
So even AMD I think falls into the flame war category. This is a pretty epic thread on the matter https://github.com/h5bp/html5-boilerplate/issues/28
I got one for the second or middle category: embedding of 3rd party Javascript, i.e. “widget based” web pages.
I think this is often overseen and passed off to the ditch of the trivial (in contrast to automatic semi-colon insertion). I mean, who doesn’t think it’s pretty natural to add a WhateverConvenientService button to your site these days? But the mechanism of said addition is done pretty much ad-hoc onver and over. Possible issues are asynchronous loading, not interfering with neighbouring embedees, versioning, what the embed code should look like, etc. There are libraries starting to emerge for this – see for example http://lightningjs.com/. Also I have written a blog post about it: http://www.shootitlive.com/2012/07/developing-an-embeddable-javascript-widget/
But – I’d like to see web standards for this – since it’s becoming such a common practice.