Как работят лицензите с отворен код и как да ги добавяте към вашите проекти

Наскоро имаше някои вълнуващи новини за разработчиците по целия свят. Facebook промени лиценза на множество библиотеки, които те разработват. Те преминаха от BSD-3 + патенти към MIT .

Това изглежда добре, но какво означава това? Какви са последиците от различните лицензи с отворен код?

Тази статия ще ви даде бързо разбиране на популярните лицензи. Също така ще ви научи как да ги прилагате към вашите проекти с отворен код в GitHub.

Властта

Най-популярните лицензи с отворен код имат важен общ аспект. Инициативата с отворен код (OSI) ги одобри.

OSI е създадена през 1998 г. с цел популяризиране на софтуер с отворен код. Той създаде Open Source Definition (OSD), за да определи какво означава софтуер с отворен код.

Ето как те се описват:

Инициативата с отворен код (OSI) е корпорация с нестопанска цел с глобален обхват, създадена да образова и защитава предимствата на отворения код и да изгражда мостове между различни избирателни групи в общността с отворен код.

Лицензите

Повечето лицензи с отворен код включват следните изявления:

  1. Софтуерът може да се модифицира, използва търговски и да се разпространява.
  2. Софтуерът може да бъде модифициран и използван насаме.
  3. Съобщението за лиценз и авторски права трябва да бъде включено в софтуера.
  4. Авторите на софтуера не предоставят гаранция за софтуера и не носят отговорност за нищо.

Ще преминем през най-популярните лицензи, от най-ограничителното до най-разрешителното (от гледна точка на потребителя).

Общ публичен лиценз на GNU, версия 3 (GPLv3)

GPLv3 е един от най-ограничителните лицензи. Той предлага висока защита за автора на софтуера.

  • Изходният код трябва да бъде публично достъпен, когато се прави разпространение на софтуера.
  • Модификациите на софтуера трябва да бъдат издадени под същия лиценз .
  • Промените, направени в изходния код, трябва да бъдат документирани .
  • Ако при създаването на софтуера е използван патентован материал, той дава право на потребителите да го използват. Ако потребителят съди някого за използването на патентования материал, той губи правото да използва софтуера.

GPLv2 също е много популярен. Основната разлика от GPLv3 е клаузата за патентни грантове.

Тази клауза е добавена във версия 3, за да попречи на компаниите да таксуват потребителите за използването на техните патенти.

Популярни проекти, използващи GPLv3, са Bash и GIMP . Linux използва GPLv2.

Ezequiel Foncubierta посочи нещо важно за лицензите на GPL:

Лицензът на вашия изходен код трябва да е съвместим с лиценза на отворения код, към който се свързвате. Например, ако вашият код е собственост, няма да ви бъде позволено да използвате библиотека под лиценза GPL. Тук хората са склонни да правят повече грешки.

Лиценз за Apache 2.0

Apache License 2.0 предлага повече гъвкавост на потребителите.

  • Не е необходимо изходният код да бъде публичен, когато се прави разпространение на софтуера.
  • Модификациите на софтуера могат да бъдат издадени под всякакъв лиценз .
  • Промените, направени в изходния код, трябва да бъдат документирани.
  • Той предлага същата защита за използване на патенти като GPLv3.
  • Той изрично забранява използването на търговски марки, намерени в проекта.

Популярни проекти, използващи Apache License 2.0, са Android , Apache и Swift .

Разпространение на софтуер в Бъркли (BSD)

BSD има две основни версии: 2-клауза и 3-клауза. И двамата предлагат по-голяма гъвкавост на потребителите, отколкото Apache License 2.0.

  • Не е необходимо изходният код да бъде публичен, когато се прави разпространение на софтуера.
  • Модификациите на софтуера могат да бъдат издадени под всякакъв лиценз .
  • Промените, направени в изходния код, може да не бъдат документирани.
  • Той не предлага изрична позиция относно използването на патенти.
  • Уведомлението за лиценза и авторските права трябва да бъде включено в документацията на компилираната версия на изходния код (за разлика от само в изходния код).
  • Клаузата BSD 3 гласи, че имената на автора и сътрудниците не могат да се използват за популяризиране на продукти, получени от софтуера без разрешение.

Популярни проекти, използващи BSD лиценз, са Go (3-клауза), Pure.css (3-клауза) и Sentry (3-клауза).

Лиценз за MIT

MIT е един от най-разрешителните лицензи. Той е и най-популярният. Той предлага много ниска защита за автора на софтуера.

  • Не е необходимо изходният код да бъде публичен, когато се прави разпространение на софтуера.
  • Модификациите на софтуера могат да бъдат издадени под всякакъв лиценз .
  • Промените, направени в изходния код, може да не бъдат документирани.
  • Той не предлага изрична позиция относно използването на патенти.

Популярни проекти, използващи MIT, са Angular.js , jQuery , Rails , Bootstrap и много други.

React.js на Facebook имаше лиценз за патенти BSD-3 + до 25 септември. Той комбинира лиценза BSD-3 с допълнителна клауза за използването на патенти.

Накратко, ако съдите Facebook или някоя от неговите дъщерни дружества, вие губите правото да използвате React (или друг софтуер под същия лиценз).

React вече е лицензиран за MIT. Вече можете да съдите Facebook и все още да използвате React. Какво облекчение!

Прилагане на лиценз към вашите проекти с отворен код

Лицензирането на вашите проекти е лесно. Вие трябва да добавите LICENSE, LICENSE.txtили LICENSE.mdв основната директория на хранилище.

GitHub прави още по-лесно:

  1. Отворете хранилището си на GitHub в браузър.
  2. В основната директория кликнете върху Create new file.
  3. Наименувайте файла „ЛИЦЕНЗИЯ“.
  4. Щракнете върху Choose a license template.
  5. Изберете един от лицензите (всички, споменати в тази статия, са там).
  6. След като изберете, кликнете върху Review and submit.
  7. Commit файлът.

В обобщение…

  • Един от най-ограничителните лицензи е GPL .
  • Един от най-разрешителните лицензи е MIT .
  • Други популярни лицензи са Apache License 2.0 и BSD .
  • За да приложите лиценз за вашия проект GitHub, трябва да създадете LICENSEфайл, използвайки шаблоните за лиценз на GitHub.

Вижте моето обяснение как използвах Python, за да намеря интересни хора, които да следвам в Medium!

За повече актуализации, последвайте ме в Twitter.