Чтобы разобраться во всех тонкостях лицензирования программного обеспечения с открытым исходным кодом, важно понять, в чем состоят различия между «постоянными» лицензиями и лицензиями «свободного копирования».
Когда речь идет о программных продуктах, которые являются интеллектуальной собственностью, права разработчика очевидны. Если же вы (или компания, на которую вы работаете) не являетесь обладателем авторских прав на соответствующий код, для вас его просто не существует, вот и весь сказ. Обычно не возникает даже искушения воспользоваться этим кодом, поскольку исходники в таких случаях, как правило, недоступны.
Обращаясь к продуктам с открытым исходным кодом, вы попадаете в абсолютно новый мир, действовать в котором гораздо проще. Вы неожиданно обнаруживаете, что никто не заставляет вас постоянно изобретать велосипед, то есть писать код для процессов, уже освоенных другими программистами. Код есть — бери и пользуйся. В некоторых случаях вы даже можете применять открытый код в рамках «фирменного» проекта.
Впрочем, имеются определенные трудности. Перед тем как приступить к вынужденному копированию кода в свои проекты, вам придется убедиться, что лицензия на код, который вы копируете или повторно лицензируете, совместима с той лицензией, которая будет использоваться применительно к вашему проекту. Вам не обязательно быть экспертом по каждой из широко применяемых лицензий на открытый код, санкционированных организацией Open Source Initiative, которая определяет стандарты лицензирования открытого программного обеспечения. С лицензиями вы сможете по мере необходимости знакомиться в справочной литературе (а если вам с трудом дается юридическая терминология, обратитесь за консультацией к эксперту по интеллектуальной собственности).
На первых порах было бы полезно также разобраться с двумя основными типами лицензий на свободное программное обеспечение, а именно с «постоянными» (permissive) лицензиями и лицензиями «свободного копирования» (copyleft).
Постоянные лицензии
Сегодня постоянные лицензии, такие как лицензии Apache, MIT и BSD, используются в большинстве проектов с открытым исходным кодом, реализуемых для предприятий, главным образом потому, что в большинстве случаев работы, производные от изделия с постоянной лицензией, могут распространяться как интеллектуальная собственность. По этой причине постоянные лицензии, как правило, не предусматривают предоставления права модификации их последующим обладателям. Не подразумевают они и предоставления исходного кода. Это было бы все равно что требовать от компании Coca-Cola обнародования состава секретных ингредиентов напитка.
Однако некоторые ограничения все-таки действуют. В каждой лицензии содержатся определенные положения и условия. Поэтому, перед тем как переводить код одной постоянной лицензии на другую, нужно удостовериться в том, что при этом не нарушаются условия, определенные как в первом, так и во втором типе лицензии. Кроме того, почти все лицензии, как постоянные, так и свободного копирования, предполагают, что в код должно обязательно включаться уведомление. В уведомлении обычно перечисляются такие данные, как сведения по авторскому праву; при этом требования к содержимому и формату в каждой лицензии могут быть свои. Требования к уведомлению включаются в положения и условия лицензий.
В некоторых постоянных лицензиях, обычно классифицируемых OSI как «не допускающие повторного использования», содержится требование использовать только приложение в полном объеме, при этом на модификации накладываются ограничения. Если вы имеете дело с кодом, распространяемым по таким лицензиям, проявляйте осторожность.
Лицензии свободного копирования
В лицензиях свободного копирования, именуемых также «взаимообязывающими» (reciprocal) лицензиями, предусматривается также, что код, включая модификации, должен распространяться свободно и что этот порядок должен будет сохраняться и в дальнейшем. Иными словами, после того как код опубликован по лицензии свободного копирования, он привязан к этой лицензии навсегда; это относится и к вашему собственному коду, который вы добавите и в дальнейшем будете распространять. В большинстве случаев, если речь не идет о проекте, в котором вы обладаете всеми авторскими правами, вы не будете иметь возможность повторно публиковать этот код под другой лицензией свободного копирования. Приведу пример: библиотечный файл в Linux, лицензированный в соответствии со второй версией GPL, не может быть опубликован по третьей версии, поскольку в GPLv3 содержатся ограничения на использование кода, не указанные в GPLv2. Кроме того, в лицензиях свободного копирования содержится требование, в соответствии с которым любые изменения или модификации должны быть применимы к последующему продукту.
Хотя код, распространяемый по лицензии свободного копирования, не может быть использован в проекте, который будет опубликован по постоянной лицензии, обратное не всегда справедливо. Если постоянная лицензия является GPL-совместимой в том смысле, что ни одно из ее условий не нарушает условия GPL, тогда код, распространяемый по этой лицензии, может свободно распространяться в рамках проектов, лицензированных в соответствии с GPL и в продуктах, распространяемых по большинству других лицензий свободного копирования. Полный список GPL-совместимых лицензий можно найти на сайте GNU.
Различия в ограничениях, содержащихся в постоянных лицензиях и в лицензиях свободного копирования, порой влекут за собой любопытные последствия. В 2010 году группа разработчиков комплекта офисных программ OpenOffice.org продублировала проект, который был выпущен по постоянной лицензии, и выпустила его под названием LibreOffice по лицензии GPL. Поскольку лицензия OpenOffice была совместима со стандартами GPL, все усовершенствования, внесенные в OpenOffice, могли свободно использоваться разработчиками LibreOffice, если последние того пожелают. Но условия лицензии GPL сделали все усовершенствования, внесенные в LibreOffice, недоступными для разработчиков OpenOffice. В результате разработчики LibreOffice получили бесспорное преимущество.
На первый взгляд это не очевидно, но, если вы или ваша компания обладаете авторскими правами на весь код, используемый в проекте, и хотите выпустить как бесплатную версию продукта с открытым исходным кодом, так и фирменную оплачиваемую версию, использование двойной лицензии по стандарту GPL вместо постоянной лицензии для версии с открытым исходным кодом может дать вам определенные преимущества. Тем самым вы лишите конкурентов возможности проехаться за ваш счет, то есть создать на основе вашего кода собственные оплачиваемые версии, которые будут отбивать у вас клиентов.