Открытый исходный код - нюансы бесплатной модели распространения

Чем не является программирование с открытым исходным кодом

Давайте сразу проясним ситуацию: простое присутствие на GitHub в открытом репозитории не делает ваш код открытым. Почти во всех странах авторские права включаются автоматически, когда продукт фиксируется на носителе, без необходимости каких-либо действий со стороны автора. Для любого кода, который не был лицензирован автором, только автор может осуществлять права, связанные с владением авторским правом. Нелицензионный код, независимо от того, насколько он общедоступен, является бомбой замедленного действия для тех, кто достаточно глуп, чтобы его использовать.

Автор из лучших побуждений может подумать: "Ну, это очевидно, что его можно использовать бесплатно", и у него нет планов подавать в суд на кого-либо, но это не означает, что код безопасен для использования. Независимо от того, что, по вашему мнению, будет делать кто-то, этот автор имеет право подать в суд на любого, кто использует, модифицирует или встраивает этот код где-либо еще без явно предоставленной лицензии.

Очевидно, что вы не должны публично публиковать свой собственный код без лицензии и ожидать, что другие будут его использовать или вносить в него свой вклад. Я также рекомендую вам избегать использования (или даже просмотра) такого кода самостоятельно. Если вы создадите очень похожую функцию или процедуру для части нелицензированной работы, которую вы проверяли в какой-то момент в прошлом, вы можете подставить себя или своего работодателя под судебный иск.

Допустим, Джилл Шмилл пишет AwesomeLib и помещает ее на GitHub без лицензии. Даже если Джилл никогда ни на кого не подаст в суд, она может в конечном итоге продать все права на AwesomeLib EvilCorp, которая впоследствии это и сделает.

Выбор правильной лицензии

Итак, вы решили, что хотите написать новую программу, и хотите, чтобы люди имели права на открытый исходный код, чтобы использовать ее. Следующий шаг – выяснение, какая лицензия лучше всего соответствует вашим потребностям. Вы можете начать работу с курируемой GitHub choosealicense.com. Сайт имеет вид простой викторины, и большинство людей должны сделать максимум один или два клика, чтобы найти подходящую лицензию для своего проекта.

Небольшое предостережение: не становитесь чрезмерно горделивыми и важными. Если вы выберете широко используемую и широко известную лицензию, такую как Apache License или GPLv3, люди смогут легко понять, каковы их права и каковы ваши права, не нуждаясь в команде юристов для поиска ловушек и проблем. Однако чем дальше вы отклоняетесь от проторенного пути, тем больше проблем вы открываете себе и другим.

Самое главное, не пишите свою собственную лицензию! Создание вашей собственной лицензии является ненужным источником путаницы для всех. Не делай этого. Если вам абсолютно необходимо иметь свои собственные особые условия, которые вы не можете найти ни в одной из существующих лицензий, напишите их в качестве дополнения к уже понятной лицензии. Также держите основную лицензию и свое приложение в четком разграничении, чтобы все участники знали конкретные части, с которыми они должны быть особенно осторожны.

Я знаю, что некоторые люди упрямы и говорят: "Мне нет дела до лицензий и я не хочу думать о них – это общественное достояние". Проблема в том, что "общественное достояние" не является общепризнанным термином в юридическом смысле. Он может иметь разное значение в зависимости от страны. В некоторых странах вы даже не можете разместить свои собственные работы в открытом доступе, потому что правительство оставляет за собой контроль над этим.

Как воспользоваться лицензией

После того, как вы выбрали лицензию, вам необходимо четко и однозначно привести ее в действие. Если вы публикуете что-то вроде GitHub, GitLab или BitBucket, у вас будет то, что равно структуре папок для файлов вашего проекта. В корневой папке вашего проекта у вас должен быть текстовый файл с именем LICENSE.txt, который содержит текст выбранной вами лицензии.

Помещение LICENSE.txt в корневую папку вашего проекта – не совсем последний шаг. Вам также нужен блок комментария с объявлением лицензии в заголовке каждого значимого файла в вашем проекте. Это один из тех случаев, когда полезно использовать устоявшуюся лицензию. Комментарий, который говорит: # this work (c)2018 myname, licensed GPLv3—see https://www.gnu.org/licenses/gpl-3.0.en.html намного, намного сильнее и полезнее, чем блок комментариев, который просто делает загадочную ссылку на полностью пользовательскую лицензию.

Если вы самостоятельно публикуете свой код на своем собственном сайте, вам нужно следовать тому же процессу. Поместите в LICENSE.txt полную копию своей лицензии и укажите ссылку на свою лицензию в сокращенном блоке комментариев в начале каждого значимого файла.

Открытый исходный код уникален

Большая разница между проприетарным и открытым исходным кодом заключается в том, что открытый исходный код предназначен для просмотра. За время своей работы я написал много разного кода, в большинстве случаев он был проприетарным. Для себя я начал писать код, чтобы упростить свою работу и избавиться от недостатков моих творений. Цель такого кода проста: все, что ему нужно сделать, – это работать точно так, как планировал его создатель.

Открытый исходный код очень отличается. Когда вы пишете открытый исходный код, вы знаете, что он должен не просто работать, он должен работать в ситуациях, о которых вы никогда не мечтали и, возможно, не планировали. Возможно, у вас был только один очень узкий вариант использования для вашего кода, и каждый раз он вызывался абсолютно одинаково. Люди, с которыми вы делитесь им... Они придумывают другие варианты использования, смеси аргументов и применят странные мыслительные процессы, которые вы никогда не рассматривали. Ваш код не обязательно должен удовлетворять всем им, но, по крайней мере, он должен изящно обрабатывать их запросы и терпеть неудачи предсказуемым и логичным образом, когда он не может их обслуживать (например: "Division by zero on line 583"не является приемлемым ответом на невозможность предоставить аргумент командной строки).

Вы пишете не только для себя

Истинным сердцем открытого исходного кода является вовсе не код: это сообщество. Проекты с сильным сообществом выживают дольше и принимаются гораздо лучше, чем те, которые этого не делают. Имея это в виду, хорошей идеей станет не только принятие, но и активная планировка сообщества, которое вы надеетесь построить вокруг своего проекта.

Зайдите в Twitter, Reddit или какие-нибудь сервисы рассылок, относящиеся к сфере вашего проекта, и объявите, что вы думаете о создании нового проекта. Поговорите о своих целях и о том, как вы планируете их достичь. Попросите комментариев, прослушайте похожие (но, возможно, не идентичные) варианты использования и внедрите эту информацию в ваш процесс, когда вы пишете код. Вам не нужно принимать каждое предложение или просьбу, но если вы знаете о них заранее, вы можете избежать ловушек, которые позже потребуют серьезных капитальных "ремонтов".

Этот процесс не заканчивается первоначальной повесткой. Если вы хотите, чтобы ваш проект был принят и использован другими людьми, вам нужно развивать его таким же образом. Это не барьер для входа, это просто шаблон для использования. Так что не просто отсиживайтесь в одиночестве на своей машине с текстовым редактором – запустите реальный, общедоступный проект на одном из крупных литейных заводов и относитесь к нему, как будто сообщество уже там и наблюдает.

Все это звучит довольно объемно и утомительно, и для этого есть веская причина – это все правда. Но это полезная работа, на которуой вы можете заработать множеством способов. Работа с открытым исходным кодом оттачивает ваши навыки такими способами, которые вы никогда не понимали и были скучными – от написания более чистого, более понятного кода до обучения тому, как правильно общаться и работать в команде. Это также лучший из возможных составителей резюме для работающего или начинающего профессионального разработчика; потенциальные работодатели могут попасть в ваш репозиторий и посмотреть, на что вы способны, а разработчики, с которыми вы работали над проектами сообщества, могут захотеть привлечь вас на оплачиваемые проекты.

Наверх
Меню