James Halliday, alias substack (
https://twitter.com/substack), es muy
conocido en el mundo de node.js. Escribió muchísimas librerías, todas
chicas, eficientes, y a diferencia de lo que ocurre en el mundo Ruby,
los proyectos simples de Node.js son muy usados. Recién mandó por
twitter su respuesta a una pregunta similar a la que proponía Ernesto
hace un tiempo, y es sobre qué criterio utilizar para elegir una
librería.
http://www.reddit.com/r/javascript/comments/2378xo/the_best_frontend_interview_question_i_got_when/cgv9oky
Como está en inglés, les pego acá una traducción:
Estos son los criterios que uso:
* Que pueda instalar la librería con npm
* Que el código que se muestra en el README use require(). De un
vistazo tengo que darme cuenta cómo se integraría la librería en el
proyecto que tengo entre manos.
* Que tenga una idea y un propósito claros y específicos
* Que sepa cuánto delegar funcionalidad en otras librerías, que no
quiera satisfacer demasiados requerimientos.
* Que sea escrito o mantenido por autores cuya opinión sobre diseño de
software, modularidad e interfaces concuerda con la mía. Esto es más
rápido que inspeccionar detenidamente la documentación y el código.
* Que las dependencias cumplan con estos mismos requisitos.
Cuando un proyecto intenta hacer demasiadas cosas, algunas de sus
partes van a sufrir cierto abandono ya que el costo de mantenimiento
puede resultar prohibitivo. Cuanto más intenta resolver un proyecto,
más fácil es que esté completamente equivocado sobre alguna premisa y
esto también puede desembocar en cierto abandono ya que es muy difícil
modificar las premisas más adelante.
Las mejores librerías, las que más perduran, son las pequeñas piezas
de código que son difíciles de escribir, pero que pueden ser
fácilmente verificables. Las librerías muy matemáticas abundan en esta
categoría, como la función gama o un ecosistema de librerías para
manipulación de matrices como ndarray.
Cuando una librería es embebida en un ecosistema con otras librerías
de una forma desacoplada, el resultado es una dinámica en donde la
librería principal no necesita crecer para satisfacer más casos de
uso, y en cambio se puede perfeccionar para librarla de los bugs más
sutiles, mientras que las librerías dependientes pueden ofrecer
excelente interoperabilidad para encajar en una estructura informal de
mayor escala.
Estos son unos factores que no son importantes:
* Número de estrellas o forks. Por lo general esto es una señal
inversa, porque los proyectos que cubren muchos casos de uso tienen a
llamar más la atención, pero también a la larga necesitan más
mantenimiento y pueden quedar abandonados. Sin embargo, algunas
librerías están completamente erradas, pero hizo falta escribirlas
para que eso fuera evidente.
* Actividad. A partir de cierto momento, algunas liberías están
terminadas y continúan funcionando siempre que el ecosistema que las
rodea funcione.
* Una página web linda. Esto es muchas veces (aunque no siempre) un
signo de que la librería tiene muy buen marketing, pero el alcance es
demasiado amplio y es muy probable que sea abandonada.