- Что касается фреймворка, я обычно использую только большие и зрелые фреймворки с множеством предварительно написанных модулей и большим сообществом. Как правило, выбор одного фреймворка вместо другого на самом деле не сильно сократит объем работы, которую вы должны тратить на собственный код, некоторые фреймворки могут поощрять более красивый код, другие могут упростить некоторые операции, но обычно они сводятся к очень небольшая разница в общем объеме разработок. Однако популярные фреймворки будут иметь больше предварительно написанных модулей, которые вы можете использовать, и таким образом вы обычно можете сэкономить гораздо больше времени и усилий.
- Для небольшой библиотеки не-фреймворка, как правило, вы можете вносить изменения самостоятельно, если это необходимо, без особых проблем, поэтому обычно я бы хотел добавить сообщество в качестве дополнительного бонуса. Большинство небольших библиотек управляются только одним человеком, но они все же лучше, чем создавать себя. Тем не менее, для больших библиотек важно иметь зрелое, активное сообщество и документацию, потому что вы вряд ли сможете внести изменения самостоятельно.
- Лицензия необходима. Для библиотек с одним человеком вам, вероятно, потребуется внести изменения в библиотеку, поэтому важно, чтобы их лицензия позволяла вам делать это на условиях, с которыми вы согласились бы.
Для небольших библиотек вы всегда должны предполагать, что вам нужно выполнить форк и что проект уже закрыт. Обычно это не проблема, особенно если проект размещен на Github или BitBucket, потому что они делают глупость в развёртывании чужого проекта. Для небольших библиотек вы всегда можете взять на себя обслуживание проекта самостоятельно, если первоначальный сопровождающий ушел или если он планирует направить проект туда, куда вы не хотите идти.
Меня меньше волнует проектная деятельность, зрелые библиотеки, которые достигли ощущения «совершенства», как правило, должны будут только исправлять ошибки, поэтому их активность замедляется. Активность проекта важна только в том случае, если библиотека включает цель, которая активно развивается, например, оболочка для внешнего сервиса должна постоянно обновляться по мере развития внешнего сервиса, поэтому активная разработка необходима, но математической библиотеке не нужно много новая разработка, как только она имеет все функции, в которых она нуждалась.
Для больших библиотек все становится сложнее. Вступление во владение намного сложнее, к счастью, большие библиотеки, как правило, не двигаются так быстро, как обычно, более зрелые.
Как сказал @Sam в своем ответе, я согласен с тем, что при оценке библиотеки с открытым исходным кодом важнее всего то, насколько она соответствует вашим требованиям. Как только проблема с лицензией решена, использование библиотеки с открытым исходным кодом редко бывает ошибкой, потому что вы всегда можете раскошелиться, если дела пойдут на юг.