A lot of talk at JSConf was on the use of modules: AMD, CommmonJS, or otherwise. Since the server-side JavaScript world has this mostly covered, a more heavily discussed topic was bringing the joys of modularity to the client-side. This, of course, is a tricky thing to do since loading scripts requires some sort of relatively slow and possibly asynchronous network request. How does one balance the issues of perceived latency, JS execution (UI blocking), page weight, and code tidiness? I spent some time looking into this and here's my first stab at a solution (no I'm not releasing some open source project shut up).

Real quick: if you don't agree that splitting files to do asynchronous loading is a good idea you should readmore.

I code most of my projects in MooTools (including my current project, BankSimple, so modularity is a given for me. MooTools is

- configurable keyboard shortcuts for switching between tabs and initiating uploads and video chats
- menubar items for available commands on Mac OS X (ex: there should probably be a “Room” menubar item)
- use color to differentiate the right sidebar, ideally inheriting the default sidebar/source list color from the OS
- cache files and links so they don’t have to awkwardly reload when you bring up the “Files & Links” tab
- make font size configurable
- allow searching in the AIR app
- possibly out of your control, but the AIR client uses a non-trivial amount of CPU when idle (spiking up to 3 – 5%); that’s probably more than it should use, even for polling