As AeroGear.js gets larger and more complex, it makes sense to revisit our build strategy as well as our dependency management strategy since that affects the build.

I was thinking, and after discussing with Luke I believe he agrees, that we should investigate the use of AMD (Asynchronous Module Definition). What this provides for us is:

  1. Better modularization between the pieces of code in AeroGear.js
  2. Better dependency management by specifically defining those dependencies in each module
  3. A better base for our custom build process

I think all of those reasons point to the need for this implementation. That being said, it doesn't come without a cost. We would need to reorganize the repo and modify each file to make it a proper AMD module. This will take time but I think it is time well spent.

I would be glad to hear if anyone has any thoughts or concerns around this.