Лицензия GPLv2 несовместима с Apache 2.0, поэтому код под лицензией GPLv2 нельзя объединять с кодом под лицензией Apache 2.0. Но проекты под этой лицензией могут быть использованы в проектах под лицензией GPLv3 (которые впоследствии тоже перейдут под лицензию GPLv3).
Лицензии, соответствующие критериям OSI, позволяют использовать код в коммерческих целях, модифицировать ПО и распространять его с разными ограничениями и требованиями. Все лицензии, перечисленные в табл. 4.5, ограничивают ответственность пользователя и требуют от него помнить об авторских правах и лицензии при любом распространении.
Семейство лицензий | Ограничения | Разрешения | Требования |
---|---|---|---|
BSD | Защитить торговую марку издателя (BSD 3-clause) | Дает гарантию (BSD 2-clause и BSD 3-clause) | — |
MIT (X11 или Expat), ISC | Защитить торговую марку издателя (ISC и MIT/X11) | Разрешает сублицензирование под другой лицензией | — |
Apache версии 2.0 | Защитить торговую марку издателя | Разрешает сублицензирование, использование в патентах | Необходимо указывать изменения, вносимые в исходный код |
GPL | Запрещает сублицензирование под другой лицензией | Дает гарантию и можно (только в GPLv3) использовать в патентах | Необходимо указывать изменения, вносимые в исходный код, и включать исходный код |
Лицензирование ресурсов
Книга Вана Линдберга (Van Lindberg)
• GitHub предоставляет удобное руководство (http://choosealicense.com/), где сравниваются все лицензии в рамках нескольких предложений;
• на ресурсе TLDRLegal[52] (http://tldrlegal.com/) перечислено, что можно и чего нельзя делать под каждой лицензией;
• список лицензий, одобренных OSI (http://opensource.org/licenses), содержит полный текст всех лицензий, прошедших проверку на соответствие Open Source Definition (что позволит свободно использовать, модифицировать и распространять ПО).
Глава 5. Читаем отличный код
Программисты читают много кода. И один из основных принципов, лежащих в основе дизайна Python, — читаемость. Ключ к тому, чтобы стать хорошим программистом, — читать и понимать отличный код. Такой код обычно следует принципам, которые мы перечисляли в разделе «Стиль кода» в начале главы 4, и его предназначение легко понять.
В этой главе приводятся выдержки из наиболее читаемых проектов Python, которые иллюстрируют темы, рассмотренные в главе 4. По мере их описания мы также поделимся приемами чтения кода[53].
Перед вами список проектов, которые продемонстрированы в этой главе, они приведены в том порядке, в котором появляются:
•
•
•