- Para el marco, generalmente solo utilizo un marco grande y maduro con muchos módulos preescritos y una gran comunidad. En general, elegir un marco sobre el otro no reduciría mucho la cantidad de trabajo que necesita gastar en su propio código, algunos marcos pueden alentar un código más hermoso, otros pueden facilitar ciertas operaciones, pero en general suman muy poca diferencia con el esfuerzo total de desarrollo. Sin embargo, los marcos populares tendrían más módulos preescritos que puede aprovechar y así es como generalmente puede ahorrar mucho más tiempo y esfuerzo.
- Para una biblioteca pequeña que no sea framework, generalmente podrá realizar modificaciones usted mismo si es necesario sin mucho problema, por lo que generalmente consideraría tener una comunidad como una ventaja adicional. La mayoría de las bibliotecas pequeñas solo son administradas por una sola persona, pero aún así son mejores que construir usted mismo. Sin embargo, para bibliotecas grandes, tener una comunidad madura y activa, y la documentación es esencial porque es poco probable que pueda hacer los cambios usted mismo tan fácilmente.
- La licencia es esencial. Para las bibliotecas de un solo usuario, es probable que deba realizar modificaciones en la biblioteca, por lo tanto, es esencial que su licencia le permita hacerlo bajo los términos con los que estaría de acuerdo.
Para bibliotecas pequeñas, siempre debe suponer que necesitará bifurcar y que el proyecto ya está abandonado. Esto generalmente no es un problema, especialmente si el proyecto está alojado en Github o BitBucket, porque hacen que bifurcar el proyecto de otras personas sea estúpidamente fácil. Para bibliotecas pequeñas, siempre puede hacerse cargo del mantenimiento del proyecto usted mismo, si el responsable original se ha ido o si planean llevar la dirección del proyecto a lugares a los que no desea ir.
Estoy menos preocupado con la actividad del proyecto, la biblioteca madura que ha logrado su sentido de "perfección" generalmente solo necesitaría hacer correcciones de errores, por lo que su actividad se ralentizó. La actividad del proyecto solo es importante si la biblioteca involucra un objetivo que está evolucionando activamente, por ejemplo, un contenedor para servicio externo necesitaría actualizarse constantemente a medida que evoluciona el servicio externo, por lo que el desarrollo activo es esencial, pero una biblioteca matemática no necesitaría mucho nuevo desarrollo una vez que tenga todas las características que necesitaba.
Para bibliotecas más grandes, las cosas se vuelven más difíciles. Tomar el control es mucho más complicado, afortunadamente las bibliotecas más grandes generalmente no se mueven tan rápido, ya que generalmente son más maduras.
Como @Sam dijo en su respuesta, estoy de acuerdo en que lo más importante al evaluar la biblioteca de código abierto es cuánto se ajusta a sus requisitos. Una vez que se resuelve cualquier problema de licencia, el uso de una biblioteca de código abierto rara vez es un error porque siempre se puede bifurcar si las cosas van mal.