Исходный код что значит в программировании

Определение Свободного программного обеспечения

У вас есть вопрос о лицензировании свободного программного обеспечения. На который здесь нет ответа? Ознакомьтесь с другими нашими лицензионными ресурсамии при необходимости свяжитесь с Лабораторией соответствия требованиям FSF по адресу licensing@fsf.org.

“Свободное программное обеспечение” означает программное обеспечение. Которое уважает свободу и сообщество пользователей. Грубо говоря, это означает. Что пользователи имеют свободу запускать, копировать. Распространять, изучать. Изменять и улучшать программноеобеспечение . Таким образом, “свободное программное обеспечение” — это вопрос свободы, а не цены. Чтобы понять эту концепцию. Вы должны думать о “свободном” как о “свободном слове”. А не как о “бесплатном пиве”. Иногда мы называем это “свободным программным обеспечением”. Заимствуя французское или испанское слово. Означающее “свободный”. Чтобы показать. Что мы не подразумеваем. Что программное обеспечение является бесплатным.

Мы выступаем за эти свободы. Потому что каждый их заслуживает. Обладая этими свободами. Пользователи (как индивидуально. Так и коллективно) контролируют программу и то. Что она делает для них. Когда пользователи не контролируют программу. Мы называем ее “несвободной” или “проприетарной”. Несвободная программа управляет пользователями. А разработчик управляет программой; это делает программу инструментом несправедливой власти.

Четыре основные свободы

Программа является свободным программным обеспечением. Если пользователи программы имеют четыре основные свободы: [1]

  • Свобода запускать программу так. Как вы хотите. Для любых целей (свобода 0).
  • Свобода изучать. Как работает программа. И изменять ее. Чтобы она выполняла ваши вычисления так. Как вы хотите (свобода 1). Необходимым условием для этого является доступ к исходному коду.
  • Свобода распространять копии. Чтобы помочь другим (свобода 2).
  • Свобода распространять копии ваших измененных версий другим (свобода 3). Сделав это, вы можете дать всему сообществу шанс извлечь выгоду из ваших изменений. Необходимым условием для этого является доступ к исходному коду.

Программа является свободным программным обеспечением. Если она адекватно предоставляет пользователям все эти свободы. В противном случае она несвободна. Хотя мы можем различать различные несвободные схемы распределения с точки зрения того, насколько они далеки от свободы, мы считаем. Что все они одинаково неэтичны.

В любом конкретном случае эти свободы должны применяться к любому коду. Который мы планируем использовать или заставляем использовать других. Например, рассмотрим программу A. Которая автоматически запускает программу B для обработки некоторых случаев. Если мы планируем распространять A в его нынешнем виде. Это означает. Что пользователям понадобится B. Поэтому нам нужно судить. Свободны ли и A. И B. Однако. Если мы планируем изменить А так. Чтобы оно не использовало В. Только А должно быть свободным; В не имеет отношения к этому плану.

“Свободное программное обеспечение” не означает “некоммерческое”. Напротив, бесплатная программа должна быть доступна для коммерческого использования. Коммерческого развития и коммерческого распространения. Эта политика имеет фундаментальное значение—без этого свободные программы не могли бы достичь своих целей.

Мы хотим пригласить всех использовать систему GNU. Включая предприятия и их работников. Это требует разрешения коммерческого использования. Мы надеемся. Что бесплатные программы замены вытеснят аналогичные проприетарные программы. Но они не могут этого сделать. Если предприятиям запрещено их использовать. Мы хотим, чтобы коммерческие продукты. Содержащие программное обеспечение. Включали систему GNU. И это представляло бы собой коммерческое распространение по определенной цене. Коммерческое развитие свободного программного обеспечения уже не является чем-то необычным; такое свободное коммерческое программное обеспечение очень важно. Оплачено, профессиональная поддержка свободного программного обеспечения удовлетворяет важную потребность.

Таким образом. Чтобы исключить коммерческое использование. Коммерческое развитие или коммерческое распространение будет тормозить сообщество свободного программного обеспечения и препятствовать его пути к успеху. Мы должны сделать вывод. Что программа. Лицензированная с такими ограничениями. Не может считаться свободным программным обеспечением.

Свободная программа должна предоставлять четыре свободы любому потенциальному пользователю. Получившему копию программного обеспечения. Который до сих пор соблюдал условия свободной лицензии. Охватывающей программное обеспечение в любом его предыдущем распространении. Ограничение некоторых свобод для некоторых пользователей или требование. Чтобы пользователи платили за их осуществление деньгами или натурой. Равносильно отказу от предоставления соответствующих свобод и. Таким образом. Делает программу несвободной.

Вы можете заплатить деньги. Чтобы получить копии бесплатной программы. Или вы можете получить копии бесплатно. Но независимо от того. Как вы получили свои копии. У вас всегда есть свобода копировать и изменять программное обеспечение. Даже продавать копии.

Уточнение границы между свободным и несвободным

В остальной части этой статьи мы более точно объясним. Как далеко должны простираться различные свободы по различным вопросам. Чтобы программа была свободной.

Свобода запускать программу. Как вы хотите

Свобода запуска программы означает свободу для любого человека или организации использовать ее в любой компьютерной системе. Для любой общей работы и цели. Без необходимости сообщать об этом разработчику или какой-либо другой конкретной организации. В этой свободе важна цель пользователя, а не цель разработчика; вы как пользователь свободны запускать программу для своих целей. И если вы распространяете ее кому-то другому. Она свободна запускать ее для своих целей. Но вы не имеете права навязывать ей свои цели.

Свобода запускать программу так. Как вы хотите, означает. Что вам не запрещено или не запрещено запускать ее. Это не имеет никакого отношения к тому. Какой функционал имеет программа. Способна ли она технически функционировать в какой-либо конкретной среде или полезна ли она для какой-либо конкретной вычислительной деятельности.

Например. Если код произвольно отвергает определенные значимые входные данные—или даже безоговорочно терпит неудачу—это может сделать программу менее полезной, возможно. Даже совершенно бесполезной. Но это не лишает пользователей свободы запускать программу. Поэтому она не конфликтует со свободой 0. Если программа бесплатна. Пользователи могут преодолеть потерю полезности. Потому что свободы 1 и 3 позволяют пользователям и сообществам создавать и распространять модифицированные версии без произвольного неприятного кода.

“Как пожелаете” включает в себя, по желанию. “вовсе нет”. Если вы этого хотите. Так что нет никакой необходимости в отдельной “свободе

Свобода изучать исходный код и вносить изменения

Для того чтобы свободы 1 и 3 (свобода вносить изменения и свобода публиковать измененные версии) были значимыми. Вам необходимо иметь доступ к исходному коду программы. Поэтому доступность исходного кода является необходимым условием свободного программного обеспечения. Запутанный “исходный код” не является реальным исходным кодом и не считается исходным кодом.

Свобода 1 включает свободу использовать измененную версию вместо оригинала. Если программа поставляется в виде продукта. Предназначенного для запуска чужих модифицированных версий. Но отказывающегося запускать ваши — практика. Известная как “тивоизация” или “блокировка”. Или (в извращенной терминологии ее практиков) как “безопасная загрузка”. — свобода 1 становится пустым притворством. А не практической реальностью. Эти двоичные файлы не являются свободными программами. Даже если исходный код. Из которого они скомпилированы. Является бесплатным.

Одним из важных способов модификации программы является объединение доступных свободных подпрограмм и модулей. Если лицензия программы говорит. Что вы не можете объединиться в соответствующий лицензированный существующий модуль — например. Если она требует. Чтобы вы были правообладателем любого добавляемого вами кода. — то лицензия слишком ограничительна. Чтобы квалифицироваться как бесплатная.

Является ли изменение улучшением — это субъективный вопрос. Если ваше право на изменение программы ограничено по существу изменениями. Которые кто-то другой считает улучшением. Эта программа не является бесплатной.

Одним из особых случаев свободы 1 является удаление кода программы. Чтобы он вернулся после того. Как ничего не сделал. Или вызов какой-то другой программы. Таким образом. Свобода 1 включает в себя “свободу удалять программу.”

Свобода перераспределения. Если вы хотите: основные требования

Свобода распространения (свободы 2 и 3) означает. Что вы можете распространять копии. С изменениями или без изменений. Бесплатно или взимая плату за распространение, кому угодно и где угодно. Быть свободным делать эти вещи означает (среди прочего). Что вам не нужно просить или платить за разрешение делать это.

Вы также должны иметь свободу вносить изменения и использовать их в своей собственной работе или игре. Даже не упоминая о том. Что они существуют. Если вы публикуете свои изменения. Вы не должны уведомлять кого-либо конкретно или каким-либо особым образом.

Свобода 3 включает в себя свободу выпускать ваши измененные версии в качестве свободного программного обеспечения. Свободная лицензия может также разрешать другие способы их выпуска; другими словами. Она не обязательно должна быть лицензией авторского лева. Однако лицензия, требующая. Чтобы модифицированные версии были несвободными. Не может считаться свободной лицензией.

Свобода распространения копий должна включать двоичные или исполняемые формы программы. А также исходный код как для модифицированных. Так и для немодифицированных версий. (Распространение программ в работоспособном виде необходимо для удобной установки свободных операционных систем.) Это нормально. Если нет способа создать двоичную или исполняемую форму для определенной программы (поскольку некоторые языки не поддерживают эту функцию). Но вы должны иметь свободу распространять такие формы. Если вы найдете или разработаете способ их создания.

Авторское лево

Определенные правила о способе распространения свободного программного обеспечения приемлемы. Если они не противоречат основным свободам. Например, авторское лево (очень просто сформулированное) — это правило. Согласно которому при распространении программы вы не можете добавлять ограничения. Чтобы лишить других людей основных свобод. Это правило не противоречит основным свободам. А скорее защищает их.

В проекте GNU мы используем авторское лево. Чтобы законно защитить четыре свободы для каждого. Мы считаем. Что есть важные причины, по которым лучше использовать авторское лево. Тем не менее, свободные программы без лева тоже этичны. См. Категории свободных программ для описания того. Как “свободные программы”. “программы с авторским леметром” и другие категории программ соотносятся друг с другом.

Правила упаковки и распространения

Правила о том. Как упаковать модифицированную версию, приемлемы. Если они существенно не ограничивают вашу свободу выпускать модифицированные версии или вашу свободу создавать и использовать модифицированные версии в частном порядке. Таким образом. Лицензия может потребовать. Чтобы вы изменили название модифицированной версии. Удалили логотип или идентифицировали свои модификации как свои. До тех пор. Пока эти требования не будут настолько обременительными. Что фактически помешают вам опубликовать ваши изменения. Они приемлемы; вы уже вносите другие изменения в программу. Так что у вас не будет проблем с внесением еще нескольких.

Правила, гласящие: “если вы делаете свою версию доступной таким образом. Вы должны сделать ее доступной и таким образом”. Также могут быть приемлемы при том же условии. Примером такого приемлемого правила является правило, гласящее. Что если вы распространили модифицированную версию и предыдущий разработчик попросил ее копию. Вы должны ее отправить. (Обратите внимание. Что такое правило все еще оставляет вам выбор. Распространять ли вашу версию вообще.) Правила. Требующие предоставления исходного кода пользователям для версий. Которые вы предоставляете в публичное пользование. Также приемлемы.

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

Экспортные правила

Иногда правительственные правила экспортного контроля и торговые санкции могут ограничить вашу свободу распространения копий программ на международном уровне. Разработчики программного обеспечения не имеют права устранять или отменять эти ограничения, но то. Что они могут и должны сделать. — это отказаться навязывать их в качестве условий использования программы. Таким образом. Ограничения не будут затрагивать деятельность и людей за пределами юрисдикции этих правительств. Таким образом. Лицензии на свободное программное обеспечение не должны требовать соблюдения каких-либо нетривиальных правил экспорта в качестве условия осуществления любой из основных свобод.

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

Юридические соображения

Чтобы эти свободы были реальными. Они должны быть постоянными и безотзывными до тех пор. Пока вы не сделаете ничего плохого; если разработчик программного обеспечения имеет право отозвать лицензию или задним числом добавить ограничения к ее условиям. Без того чтобы вы не сделали ничего плохого. Чтобы дать повод. Программное обеспечение не является свободным.

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

Допустимо, чтобы свободная лицензия указывала. В какой юрисдикции применяется закон. Или где должен быть проведен судебный процесс. Или и то, и другое.

Лицензии на основе контрактов

Большинство лицензий на свободное программное обеспечение основаны на авторском праве. И существуют ограничения на то. Какие требования могут быть наложены через авторское право. Если лицензия. Основанная на авторском праве. Уважает свободу описанными выше способами. У нее вряд ли возникнут какие-то другие проблемы. Которых мы никогда не ожидали (хотя иногда это случается). Однако некоторые лицензии на свободное программное обеспечение основаны на контрактах. А контракты могут накладывать гораздо больший диапазон возможных ограничений. Это означает. Что существует множество возможных способов. Которыми такая лицензия может быть неприемлемо ограничительной и несвободной.

Мы не можем перечислить все возможные варианты. Если лицензия. Основанная на контракте. Ограничивает пользователя необычным способом. Который лицензии. Основанные на авторском праве, не могут. И который не упоминается здесь как законный. Нам придется подумать об этом. И мы, вероятно. Придем к выводу. Что он несвободен.

Используйте правильные слова когда говорите о свободном программном обеспечении

Говоря о свободном программном обеспечении. Лучше избегать использования таких терминов. Как “отдать” или “бесплатно”. Потому что эти термины подразумевают. Что речь идет о цене. А не о свободе. Некоторые распространенные термины. Такие как “пиратство”. Воплощают мнения. Которые. Как мы надеемся. Вы не поддержите. См. Запутанные слова и фразы. Которых стоит избегать для обсуждения этих терминов. У нас также есть список правильных переводов “свободного программного обеспечения” на различные языки.

Как мы интерпретируем эти критерии

Наконец. Обратите внимание. Что критерии. Подобные тем. Которые изложены в этом определении свободного программного обеспечения. Требуют тщательного обдумывания для их интерпретации. Чтобы решить. Является ли конкретная лицензия на программное обеспечение лицензией на свободное программное обеспечение. Мы оцениваем ее на основе этих критериев. Чтобы определить. Соответствует ли она их духу. А также точным словам. Если лицензия включает в себя недобросовестные ограничения. Мы отклоняем ее. Даже если мы не предвидели проблему в этих критериях. Иногда требование лицензии поднимает вопрос. Который требует тщательного обдумывания. Включая обсуждение с адвокатом. Прежде чем мы сможем решить. Приемлемо ли это требование. Когда мы приходим к выводу о новой проблеме. Мы часто обновляем эти критерии. Чтобы легче было понять. Почему определенные лицензии подходят или не подходят.

Получите помощь с бесплатными лицензиями

Если вас интересует. Является ли конкретная лицензия лицензией на свободное программное обеспечение. Обратитесь к нашему списку лицензий. Если лицензия. Которая вас интересует. Там не указана. Вы можете спросить нас об этом. Отправив нам электронное письмо по адресу .

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

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

За пределами программного обеспечения

Руководства по программному обеспечению должны быть свободнымипо тем же причинам . По которым программное обеспечение должно быть свободным, и потому. Что руководства фактически являются частью программного обеспечения.

Те же аргументы имеют смысл и для других видов работ практического применения — то есть работ. Воплощающих полезные знания. Таких как учебные и справочные работы. Википедия-самый известный пример.

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

С открытым исходным кодом?

Другая группа использует термин “открытый исходный код” для обозначения чего-то близкого (но не тождественного) к “свободному программному обеспечению”. Мы предпочитаем термин “свободное программное обеспечение”, потому что. Как только вы услышали. Что он относится к свободе. А не к цене. Он напоминает о свободе. Слово “открытый” никогда не относится к свободе.

Время от времени мы пересматриваем это Определение Свободного программного обеспечения. Вот список существенных изменений. А также ссылки. Чтобы показать. Что именно было изменено.

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