GPL2 - это когда ты обязан контрибьютить назад. BSD - когда нет. То есть, ты можешь взять за основу BSD продукт и сделать на его основе что-то закрытое
ну как минимум тем что тот же azul запилил falcon и в случае gpl ему нужно было бы открывать его но у него отдельная лицензия от оракла, так что все ок
в случае java это получается в виде: ты имеешь gpl часть, но если уж так хочешь свою закрытую jvm, то идешь к ораклу и покупаешь отдельно лицензию отличную от gpl
в случае с bsd ты бы просто пилил и потом платил за прохождение jck, всё, никому код не обязан показывать-отдавать
имхо более интересно различие GPL2 и GPL2+ContributorAgreement. GPL2 - это способ честно отдать разработку софта сообществу. Все в равной мере не могут использовать этот код для несвободных решений GPL2+Agreement - это способ для компании или фаундейшена присвоить себе работу массы людей и быть единственными, кто использует это для несвободных решений
да, именно. Если ты улучшаешь openjdk, то обязан отодавать это назад. При условии, что у тебя есть платный коммерческий клиент, хотя бы один, то по условиям GPL2 ты обязан отдать ему код по первому требованию
если же у тебя нет клиентов и вся разработка идет внутри компании ("in-house"), то ты можешь по GPL2 никому назад ничего не возвращать. Нет того, кто потребовал бы с тебя исходник
там же из-за этого CPE вагон тёрок было, можно в тот же андроид затягивать класспас часть или нет после этого такие же вопросы обсуждались для open j9, можно затянуть или нет
с другой стороны, Microsoft выложил .NET Core в BSD и помог создать для этого независимый фаундейшен (правда, тоже с контрибьютор агриментом, но в BSD модели агримент значит гораздо меньше)