- Para o framework, geralmente eu só uso um framework grande e maduro, com muitos módulos pré-escritos e uma grande comunidade. Geralmente, escolher uma estrutura sobre a outra não reduziria muito a quantidade de trabalho que você precisa para gastar em seu próprio código; algumas estruturas podem incentivar um código mais bonito, outras podem facilitar certas operações, mas geralmente somam muito pouca diferença para o esforço total de desenvolvimento. No entanto, as estruturas populares teriam mais módulos pré-escritos que você pode aproveitar e é assim que geralmente você pode economizar muito mais tempo e esforço.
- Para uma pequena biblioteca que não seja de estrutura, geralmente você poderá fazer as modificações sozinho, se necessário, sem muitos problemas; portanto, geralmente consideraria ter a comunidade como um bônus adicional. A maioria das bibliotecas pequenas é gerenciada apenas por uma única pessoa, mas ainda é melhor do que construir você mesmo. No entanto, para bibliotecas grandes, é essencial ter uma comunidade ativa e madura e a documentação, porque é improvável que você possa fazer alterações com a mesma facilidade.
- Licença é essencial. Para bibliotecas individuais, é provável que você precise fazer modificações na biblioteca; portanto, é essencial que a licença deles permita que você faça isso nos termos com os quais você concorda.
Para bibliotecas pequenas, você deve sempre assumir que precisará bifurcar-se e que o projeto já foi abandonado. Isso geralmente não é um problema, especialmente se o projeto estiver hospedado no Github ou BitBucket, porque eles facilitam estupidamente o projeto de outras pessoas. Para bibliotecas pequenas, você sempre pode assumir a manutenção do projeto, se o mantenedor original se foi ou se está planejando levar a direção do projeto para lugares para os quais não deseja ir.
Estou menos preocupado com a atividade do projeto, uma biblioteca madura que alcançou seu senso de "perfeição" geralmente só precisaria fazer correções de bugs, para que sua atividade diminuísse. A atividade do projeto é importante apenas se a biblioteca envolver um destino que está evoluindo ativamente, por exemplo, um wrapper para serviço externo precisaria ser constantemente atualizado à medida que o serviço externo evoluir, para que o desenvolvimento ativo seja essencial, mas uma biblioteca matemática não precisará de muito novo desenvolvimento, uma vez que possui todos os recursos necessários.
Para bibliotecas maiores, as coisas se tornam mais difíceis. Assumir o controle é muito mais envolvido, felizmente as bibliotecas maiores geralmente não se movem tão rápido, pois geralmente são mais maduras.
Como o @Sam disse em sua resposta, concordo que a coisa mais importante na avaliação da biblioteca de código aberto é o quanto ela se adapta às suas necessidades. Depois que qualquer problema de licença é resolvido, o uso de uma biblioteca de código-fonte aberto raramente é um erro, pois você sempre pode bifurcar-se se tudo der errado.