DamonOehlman / damonoehlman.github.io

damonoehlman.github.io
11 stars 2 forks source link

Death by Clientside Package Management #16

Closed DamonOehlman closed 11 years ago

DamonOehlman commented 12 years ago

When it comes to writing and consuming modules for the browser, we are in crisis. It's definitely far from being a simple process and while I believe the answer lies in tooling, it's definitely not in the quantity of tooling but rather the quality that matter.

Don't get me wrong, some of the tools that have been created have been well engineered, but there really is no tool that I would look to for solving some of the package management woes I have experienced when building JS-centric web applications for the browser.

Additionally, the sheer number of tools that we have been provided with that really "don't solve the problem" is quite astounding. This makes picking a tool for someone exploring options for improved clientside app builds an incredibly daunting task. So now we have two problems:

  1. Working out how to better manage dependencies in our JS code; and,
  2. Choosing a tool and generally an approach that will assist us to do this.

It feels like another AMD vs CommonJS discussion / fracture, but possibly worse :/

DamonOehlman commented 12 years ago

Oh, and if anyone wants a list of existing solutions with my opinion on those then let me know and I'll open the can of worms...

liammclennan commented 12 years ago

I would like you to open the can.

DamonOehlman commented 12 years ago

Fine. But be aware that there is no going back... I'll outline the options in this comment (and edit it in parts). Additionally, other folks should feel free to contribute comments to talk about other options also. Additionally, I'll cover these tools from a somewhat chronological perspective (i.e. from the point I started looking and discovering to now).

In a subsequent comment I'll outline the killer features from each that I think should be incorporated in the "one tool to rule them all"...

BPM

http://getbpm.org/

Browserify

Browserify is an interesting beast and while there are parts of the approach I'm not a fan of (shimming out Node specific libraries for the browser) you have to give it credit, it's a tool that works. Browserify is a good choice for anyone who spends more time in Node than anything else, and also tends to think that AMD as a pattern is not for them.

https://github.com/substack/node-browserify

Ender

http://ender.no.de/

JamJS

http://jamjs.org/

Volo

http://volojs.org/

Component

https://github.com/component/component

Bower

http://twitter.github.com/bower/