Para los que ignoran lo que significa CDN, favor de consultar el glosario. Posiblemente escriba una entrada específica al respecto.
Hace poco escribí sobre mis primeras experiencias con ScrollMagic, un framework de animación basado en la posición de desplazamiento de una página web.
Fué divertido, por cierto, aquí un ejemplo de alguna de las cosas que hice, el sitio de un cortometraje en el que fuí productor, en un diplomado que estudié.
Problema
Como todos saben, existe un riesgo al jalar vínculos directamente de un CDN, puesto que en el momento que decidan tumbar o cambiar el link, nuestros proyectos dejarán de funcionar.
<script src="//cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.5/ScrollMagic.min.js"></script>
Éste que acabo de ligar, me parece que es el más actual, no sé si guardé en algún lugar la versión anterior.
Idealmente, un recurso de este tipo, se crea con una especial precaución desde el inicio, para evitar que cambie en un futuro. Que fué lo que sucedió aquí:
Y como obviamente no sigo este proyecto en github (en realidad no sigo a ninguno) en su oscura página que nadie visita nunca [/exageración libera-estrés], pues nunca me enteré de este cambio hasta que entré al sitio. Y debo hacer énfasis en que no entré por casualidad, sino que fué por el mismo cliente quien me solicitaba cotizarle unos cambios, y así ví que no funcionaba.
Por suerte para mí, mi neófito cliente no pareció advertir que el Parallax había dejado de funcionar, pero en cuanto regresé a casa, pude corregirlo.
Dogmáticamente
Lo ideal sería que estos URIs nunca sean borrados ni modificados en lo más mínimo. Si acaso sacan una nueva versión, crear otro URL, independiente del ya existente, por ejemplo:
<!-- versión 1 -->
<script src="//cdn.com/version-1.js"></script>
<!-- versión 2 -->
<script src="//cdn.com/version-2.js"></script>
En el peor de los casos, tendríamos una redirección por parte del servidor hacia el nuevo recurso, pero nunca borraríamos por completo un recurso (o su equivalente redirección) que ya fué publicado.
Para eso deberíamos planearlo correctamente desde el principio y darle un nombre y ubicación que no pensemos cambiar.
Pragmáticamente
Como sabemos que nadie hace las cosas como deberían ser [/exageración libera-estrés], es preferible self-hostear (hospedar uno mismo el recurso). Eso implicaría cargar más nuestro servidor de archivos y dejar de tener la ventaja del caché, osea que generaríamos una consulta que muy posiblemente no esté guardada en el cache del usuario visitante.
Pero es preferible a romper el sitio.
Una excepción podría hacerse en caso de que estemos ligando un recurso de un sitio más confiable, como:
<script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
Por ejemplo: creo que es más factible que quiebre mi compañía de hosting antes que Google, pero incluso aquí hay que hacerlo con precaución. Porque es posible que Google no vaya a ningún lado pronto pero, las compañías ascienden y caen todo el tiempo, así que como dice mi abuela:
No pongas todos los huevos en la misma gallina porque, ¿qué fue primero?
O algo así.