¿Relación entre CommonJS, AMD y RequireJS?

Todavía estoy muy confundido acerca de CommonJS, AMD y RequireJS. Incluso después de leer mucho.

Sé que CommonJS (anteriormente ServerJS) es un grupo para definir algunas especificaciones de JavaScript (es decir, módulos) cuando el idioma se usa fuera del navegador. La especificación de los módulos CommonJS tiene alguna implementación como Node.js o RingoJS, ¿verdad?

¿Cuál es la relación entre CommonJS, la definición de módulo asíncrono (AMD) y RequireJS? ¿RequireJS es una implementación de la definición del módulo CommonJS? Si es así, ¿qué es AMD entonces?

Respuestas a la pregunta(5)

Su respuesta a la pregunta