Открытое и свободное программное обеспечение. ПО с открытым кодом (Open source) Программное обеспечение с открытым кодом

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

Итак, что же представляет собой открытое программное обеспечение? Пожалуй, самое распространенное определение этого термина раскрывает его главные особенности. Открытое программное обеспечение (англ. open source software) - это все ПО с открытым исходным кодом, программные продукты, на базе которого, доступны не только для просмотра, но и для изменения, что позволяет использовать уже созданный код для написания новых версий софта, для исправления ошибок и доработки открытой программы. Стоит отметить, что данное определение, по мнению сторонников open source, не в полной мере отображают саму суть понятия. С их точки зрения, открытое программное обеспечение представляет собой, помимо доступного для редактирования исходного кода, еще и целую философию, смыслом которой является создание информационного общества посредством всестороннего применения открытых программных продуктов во всех сферах деятельности человека.

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

Кроме того, ПО на базе открытого кода в основном бесплатно, что особенно привлекает предприятия малого и среднего бизнеса, которые, к примеру, не в состоянии на сегодняшний день обеспечить себя лицензиями коммерческих программных продуктов. Также сторонники идеи открытости исходного кода в качестве преимущества open source software выделяют его безопасность, то есть открытое ПО в силу своей недостаточной популярности практически не подвержено вирусным атакам. А если угроза все же обнаружена, то устраняется она в кратчайшие сроки, так как к исходному коду имеет доступ, как правило, множество профессионалов и любителей, которые поддерживают связь друг с другом. Соответственно, угроза безопасности, будучи уже обнаруженной, быстро устраняется одним из членов сообщества, либо совместными усилиями.

Стоит отметить, что в глобальном представлении открытое ПО включает в себя непосредственно open source software, а также другие разновидности программных продуктов, которые могут распространяться безвозмездно и предоставлять исходный код для внесения изменений. К такому ПО относятся бесплатные (freeware) и свободные (free software) программы.

Итак, термин open source (открытое программное обеспечение) был впервые применен в 1998 году программистами Эриком Реймондом (Eric Steven Raymond) и Брюсом Перенсом (Bruce Perens). Они были уверены в том, что термин free software (свободное программное обеспечение) в английском языке является неоднозначным и в каком-то смысле может даже отпугивать предпринимателей, являющихся потенциальными пользователями такого софта. В настоящее время open source является торговой маркой организации Open Source Initiative, которая занимается распространением ПО с открытым кодом. Кроме того, существует также и специальный комитет, который решает, может ли лицензия той или иной программы носить имя open source.

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

Отличие между open source и free software заключается в приоритетах. Например, сторонники open source делают упор на эффективность работы с открытым исходным кодом в качестве метода разработки, модернизации и сопровождения программ. Сторонники термина "free software" считают, что именно права на свободное распространение, модификацию и изучение программ являются главным достоинством свободного открытого ПО, тем самым, закрепляя авторство на конкретный программный продукт.

Основателем концепции free software является американский программист Ричард Столлмэн (Richard Matthew Stallman). Именно он впервые сформулировал понятие свободного программного обеспечения, в котором отразились принципы открытой разработки программ в научном сообществе, сложившемся в университетах США в 1970-е годы. Столлмэн сформулировал четкие критерии свободного ПО. Эти критерии оговаривают те права, которые автор свободной программы передает любому пользователю. Таким образом, используя свободное программное обеспечение, пользователь получает "четыре свободы": запускать, изучать, распространять и улучшать программу.

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

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

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

Что касается условия распространения и использования программ free software, то зачастую их копирование запрещено, а обратная разработка, изменение, повторное распространение оговариваются в лицензионном соглашении.

Тем не менее, существуют программы, попадающие, по мнению некоторых экспертов, под определение открытых, но не являющиеся свободными. К таким программам относится, к примеру, UnRAR, распаковщик RAR-архивов. Дело в том, что его исходный код находится в открытом доступе, но лицензия запрещает использовать его для создания RAR-совместимых архиваторов.

Безусловно, важен и тот факт, что категории открытого программного обеспечения бывают разные, так как они предполагают различные степени свободы в отношении действий пользователей. При этом порой можно наблюдать значительную разницу между определением свободного и открытого ПО. Открытое ПО, то есть программное обеспечение с (открытым) исходным кодом (Open Source Software) представляет собой способ разработки ПО, при котором создаваемый исходный код программ открыт, то есть, общедоступен для просмотра и изменения. Это позволяет всем желающим использовать уже созданный код для своих нужд и, возможно, помочь в разработке открытой программы. Бесплатность ПО есть право пользователя, но не обязанность производителя, т.к. открытая лицензия не требует, чтобы ПО всегда предоставлялось бесплатно. Однако многие из наиболее успешных проектов open source все же являются бесплатными.

Открытый доступ к исходным кодам программ является также ключевым признаком свободного программного обеспечения, поэтому предложенный позднее Эриком Реймондом термин "Open Source Software" (ПО с открытым исходным текстом) некоторым представляется даже более удачным для обозначения феномена свободного ПО, чем предложенный в свое время Столлмэном "free software".

Заметим, что преимущества свободной разработки для пользователя не следует преувеличивать. Далеко не все свободные программы в равной степени доступны для внесения изменений пользователем, что, с другой стороны, совершенно не связано с лицензией на их распространение. Важную роль при этом играет объем программы: если в ней десятки тысяч строк (как, например, в OpenOffice.org - аналог Microsoft Office), то даже квалифицированному специалисту понадобится довольно много времени, чтобы найти и устранить ошибку. Рассчитывать на разработчиков, которые отреагируют на все замечания и предложения пользователя и немедленно исправят программу, тоже нельзя, так как они не несут перед пользователем никаких обязательств по качеству программы. В этой связи пользователь запатентованной программы может оказаться в лучшем положении.

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

Место свободных программ на сегодняшнем рынке ПО очень значительно, и многие коммерческие и государственные предприятия используют free software прямо или косвенно. Например, все пользователи сети интернет, хоть и опосредовано, задействуют свободную программу Bind, предоставляющую службу DNS. Кроме того, многие организации (в частности предоставляющие услуги через всемирную паутину) используют свободный web-сервер Apache, от работы которого может зависеть непосредственно прибыль предприятия, не говоря уже о серверах на платформе Linux.

Выгода использования свободного и открытого ПО очевидна: за него, как правило, не приходится платить, а если приходится, то стоит оно гораздо дешевле патентованных аналогов. Главный недостаток, с точки зрения коммерческого пользователя, заключается в том, что разработчики свободных программ не несут никаких обязательств, кроме моральных. То есть за качество ПО, они, по сути, не отвечают.

Например, в одной из общественных лицензий (GNU) есть даже стандартная формулировка, закрепляющая отсутствие гарантий: "Настоящая программа поставляется на условиях "как есть". Если иное не указано в письменной форме, автор и/или иной правообладатель не принимает на себя никаких гарантийных обязательств, как явно выраженных, так и подразумеваемых, в отношении программы, в том числе подразумеваемую гарантию товарного состояния при продаже и пригодности для использования в конкретных целях, а также любые иные гарантии".

Кстати, в настоящее время система GNU, более широко известная как GNU/Linux или просто Linux, достаточно распространена, особенно на рынке серверов, и является вполне завершенным программным продуктом. Она состоит из большого количества программ проекта GNU (в первую очередь системных утилит и GNU toolchain), ядра Linux - части системы, отвечающей за выполнение других программ, включающей драйверы устройств и т. п., - и множества других свободных программ.

Поэтому сегодня существует тенденция, когда большие ИТ-корпорации, такие как Intel, Oracle или IBM стараются оказывать поддержку проектам по разработке свободного ПО, оплачивая работу сотрудников этих проектов, чтобы степень ответственности разработчиков была на высоком уровне. Зачем они это делают, ведь открытое и свободное ПО является для них конкурентным? Ответ прост - они видят в этом выгоду, которую стараются не сделать упущенной, так как каждый день на базе ПО с открытым кодом появляется множество программ, некоторые из которых в последствии могут стать сильными коммерческими продуктами.

Существует несколько основных лицензий, которые используются для распространения свободного ПО в настоящее время: AROS Public License, Лицензия BSD, CDDL, Common Public License, GNU Free Documentation License, GNU General Public License, GNU Lesser General Public License, Лицензия MIT, Mozilla Public License, Open Directory License и др. Для всех свободных лицензий, так или иначе, характерно соответствие принципам копилефта (copyleft - это каламбур от слова копирайт). В противоположность традиционному подходу к авторскому праву, при котором ограничивается свобода копирования произведений, принцип копилефта использует законы об авторском праве для обеспечения невозможности ограничить любому человеку права использовать, изменять и распространять, как само произведение, так и произведения, базирующиеся на нем. Идея копилефта заключается в том, что каждый, кто распространяет программу, как с изменениями, так и без них, не вправе ограничивать свободу ее дальнейшего распространения, либо модификации. Копилефт гарантирует, что каждый пользователь свободен в своих действиях.

Количество лицензий, которые соответствуют Определению понятия open source (открытого ПО), на данный момент насчитывается более пятидесяти. Open Source является торговой маркой организации Open Source Initiative. Существует специальный комитет, решающий, может ли лицензия носить имя open source. Одним из самых больших в мире веб-сайтов для разработчиков открытого ПО является всем известный портал SourceForge.net. На этом сайте разработчики могут размещать и совместно разрабатывать свои программные проекты. В настоящее время на SourceForge.net размещено несколько сотен тысяч проектов, а количество зарегистрированных пользователей превышает один миллион.

Безусловно, открытое и свободное программное обеспечение все активнее захватывают аудиторию. Программы на основе открытого кода довольно успешно применяются как частными пользователями, так и коммерческими, государственными и общественными организациями. Софт на базе open source и free software уже используется в качестве предустановочного для некоторых моделей ноутбуков и нетбуков различных производителей. Кроме того, ПО с открытым кодом постепенно завоевывает рынок систем автоматизации для малых и средних предприятий.

Питер Ван Валькенбург, глава отдела исследований Coin Center, член совета директоров Zcash Foundation, объясняет, почему развитие программного обеспечения с открытым исходным кодом важно для построения доверительных отношений и обеспечения безопасности в блокчейн-сетях.

Компьютерный код, лежащий в основе всех крупных криптовалют и проектов открытого блокчейна, разрабатывается как ПО с открытым исходным кодом. Регуляторы и директивные органы, пытающиеся понять, что такое криптовалюты, но не знакомые с таким ПО, могут заблуждаться, считая, что эти системы разрабатываются (и должны разрабатываться) одной или несколькими коммерческими компаниями. Хотя многое известное программное обеспечение действительно разрабатывается подобным образом (например, Windows корпорации Microsoft или RDBMS компании Oracle), с проектами с открытым исходным кодом дела обстоят иначе, и это отличие может и должно формировать общественное мнение. ПО с открытым исходным кодом создаётся в сотрудничестве, бесплатно распространяется, публикуется открыто и развивается в качестве продукта сообщества, а не собственности одной компании или лица. В этом случае нет монополии, нет одной компании или индивидуума, которые бы создавали и продавали ПО, владели бы им. Точно так же, как нет единственной компании, владеющей сетью биткоина, не существует одной-единственной компании, производящей ПО, которое, функционируя на связанных в интернете компьютерах, образует эту сеть. Подобная децентрализация несёт некоторые фундаментальные блага, которые может быть тяжело понять людям, не знакомым с разработкой ПО. Чтобы лучше осознать мощь и характер открытого исходного кода, будет полезно получить некоторое представление об одном особенно успешном образце ПО с открытым исходным кодом. Речь идёт об операционной системе Linux.

Открытый исходный код повсюду

Трудно подсчитать, сколько раз за день вы пользуетесь Linux, ведь именно эта операционная система лежит в основе работы большинства серверов в интернете. Всякий раз, когда вы посещаете Facebook, Google, Pinterest, Википедию и тысячи других крупных сайтов, сервисы, которые предоставляют вам эти (такие разные) сайты, вы имеете дело с компьютерами, которые, скорее всего, работают на операционной системе Linux. Linux можно найти и гораздо ближе; скорее всего, он у вас под рукой. Скажем, операционная система Android-смартфонов основана на Linux. Если у вас есть Chromebook, то вы пользуетесь ноутбуком на основе Linux. Эта операционная система всё чаще используется в телевизорах, термостатах, мультимедийных системах в самолётах, автомобилях и т.д.

Почему это интересно? Потому что Linux - это не продукт одного программиста или даже группы программистов; в отличие от MacOS или Windows, его не разрабатывала одна или даже дюжина корпораций. У Linux есть тысячи соавторов. Как сообщила в 2015 году Linux Foundation (некоммерческая организация, способствующая открытому развитию операционной системы), приблизительно 14 000 разработчиков из более чем 1300 различных компаний внесли вклад в виде фрагментов программного кода. В одном лишь 2015 году в усовершенствовании кода впервые поучаствовали 2355 разработчиков. Таким образом, путём экстраполяции можно подсчитать, что к 2017-му свою лепту внесли приблизительно 18 000 человек, и это число будет расти.

Кто бы мог подумать даже пять лет назад (в 1991 году), что операционная система мирового класса может, словно по волшебству, быть слеплена в единое целое из фрагментов внештатной работы нескольких тысяч разработчиков, разбросанных по всему земному шару и связанных только призрачными нитями интернета?

Преимущества открытого исходного кода

В своей книге Рэймонд рассказывает о том, что открытый исходный код представляет собой революционный метод создания технологий. Linux с тысячами независимых разработчиков, работающих в режиме публичного сотрудничества, служит примером модели открытого исходного кода. Криптовалюты следуют той же модели, но об этом мы поговорим ниже.

Рэймонд выделил несколько преимуществ модели открытого исходного кода. Ключевые в контексте нашей дискуссии - следующие:

  • Каждый достойный образец ПО начинается с удовлетворения личного желания разработчика. Мотивацией большинства разработчиков проектов с открытым исходным кодом служит желание лично использовать создаваемые продукты. Они не связаны контрактом, обязывающим их создать что-то для другого; у них есть личная потребность, которую они удовлетворяют. Таким образом, возникает качественно иная мотивация, порождающая детальное знание проблемы.
  • Хорошие программисты знают, что писать. Великие знают, что переписывать (и использовать повторно). Когда разработка осуществляется открыто, можно избежать избыточности, и проблематичные, усложнённые или излишние коды можно идентифицировать и упростить.
  • Когда вы теряете интерес к программе, то ваш последний долг по отношению к ней состоит в том, чтобы передать её в руки компетентного преемника. Люди приходят в проект с открытым исходным кодом и покидают его в зависимости от своих интересов и компетенции. Никто не застревает в работе над проектами, которые больше не интересны. Появляются свежие головы, предлагающие различные точки зрения на давние проблемы или новые перспективы развития.
  • Восприятие пользователей в качестве коллег-разработчиков - самый лёгкий путь к улучшению кода и эффективной отладке ПО. Многие пользователи открытого исходного кода помогают выявлять проблемы и даже предлагают решения. Грань между потребителем и производителем программ с открытым исходным кодом размыта: работа над ПО прозрачна, она ведётся на глазах у публики, и участие в процессе создания доступно всем.
  • При наличии достаточно большой базы бета-тестеров и разработчиков практически любая проблема будет быстро квалифицироваться, а её решение наверняка окажется для кого-то очевидным. Этот постулат назван Законом Линуса в честь Линуса Торвальдса, создателя ядра Linux, который долгое время оставался главным разработчиком этой операционной системы. Когда процесс разработки кода носит закрытый характер, разработчики рискуют пропустить слабое место или не заметить определённую ошибку. Разработка в среде опытных пользователей с уникальным видением повышает вероятность выявления и устранения багов, что делает ПО с открытым исходным кодом более безопасным и отказоустойчивым.

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

Закон и свободное ПО

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

Некоторые лицензии включают требования, что производные программного обеспечения должны выпускаться на таких же условиях. Благодаря подобной схеме база открытого исходного кода растёт и распространяется. Это явление известно как лицензия свободного программного обеспечения, или LGPL-3 - меньшая стандартная общественная лицензия.

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

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

Программное обеспечение, дающее любому участнику возможность соединяться с сетью, называется клиентом, и это ПО с открытым исходным кодом. Зачастую клиентское ПО разрабатывают несколько не связанных между собой участников в качестве простейшей версии сетевого ПО (то есть так называемого reference client), на основе которого можно выстроить программное обеспечение для майнинга, кошелька, биржи или другое совместимое с сетью ПО.

Клиент Bitcoin Core - результат работы более чем 450 независимых разработчиков, которые в общей сложности внесли свой вклад в развитие кода более 15 000 раз. ПО доступно для свободного использования и модификации в соответствии с лицензией свободного программного обеспечения MIT, а вся история разработки доступна для обозрения в публичном репозитории на Github - облачном сервисе, позволяющем любому создать аккаунт, загрузить новый код и отслеживать изменения. Если созданный вами репозиторий открыт для всеобщего обозрения, комментариев и предложений об изменениях, то вам даже не нужно платить за аккаунт Github.

Публичный репозиторий также отслеживает так называемые форки оригинального клиента. Форк создаёт клон изначального ПО, который затем можно модифицировать с той или иной целью, не изменяя изначальное хранилище. Разработчики без ограничений совершают форки для репозитория Bitcoin Core на Github, чтобы создать либо специфические приложения, совместимые с биткоином (например, кошелёк для смартфонов), либо новую криптовалюту, которая перестаёт быть совместимой с сетью биткоина и подразумевает создание новой криптовалютной сети (например, так было с лайткоином или Zcash). На сегодняшний день оригинальный клиент Bitcoin Core пережил форк более 10 000 раз, и появляющиеся новые репозитории демонстрируют, что создание производных продуктов продолжается.

На эфириум сейчас приходится как минимум 121 репозиторий, каждый из которых фокусируется на определённом аспекте проекта (например, языках программирования для написания смарт-контрактов, графических браузерах для взаимодействия конечного пользователя с сетью эфириума, совместимых клиентах для участия в работе сети и т.д.). Есть не менее восьми проектов, направленных на разработку совместимых с эфириумом клиентов, а над наиболее популярными клиентами (go-ethereum и Parity) трудятся сотни независимых разработчиков. Код эфириума и его полная история, как и код, а также история биткоина, доступны для публичного обозрения на Github и в других сетевых хранилищах, и все коды выпускаются в соответствии с лицензией LGPL-3, требующей выпускать все будущие производные разработки с такой же лицензией.

Даже недавние проекты, реализованные по инициативе коммерческих стартапов, демонстрируют приверженность кредо открытого исходного кода. Zcash Company разрабатывает протокол Zcash посредством публичного репозитория. Несколько ведущих разработчиков не работают на компанию, а специально созданная некоммерческая организация призвана следить за тем, чтобы постепенно произошёл переход от разработки, осуществляемой компанией, к разработке силами сообщества. База исходного кода Zcash выпускается с лицензией Массачусетского технологического института. Protocol labs, разработчик Filecoin, намерен создать аналогичную открытую модель и уже протестировал её в своём проекте IPFS, работая с кодом в открытых репозиториях и выпуская его с лицензией MIT.

Почему открытый исходный код важен

Криптовалюты и открытые блокчейны способны обеспечить функционал, который был бы регулируемым, если бы его источником была одна-единственная корпорация. Централизованные эмитенты цифровой валюты, такие как Liberty Reserve или E-gold, представляли собой финансовые сервисы и должны были регистрироваться в Управлении Министерства финансов США по борьбе с финансовыми преступлениями, а также получать лицензию, позволяющую переводить деньги, в каждом штате. Если такие токены будут продвигаться на рынке для привлечения инвесторов, они могут быть приравнены к ценным бумагам, и в таком случае потребуется регистрация в Комиссии по ценным бумагам и биржам США. Эти ограничения имеют смысл, поскольку централизованные сервисы связаны с риском того, что сторона, находящаяся в центре всей схемы, не сможет выполнить свои обещания, адекватно протестировав продукт и сделав его безопасным.

Однако технологии вроде биткоина способны предложить аналогичный функционал, будучи открытыми и никому не принадлежащими сетями. Здесь нет никакой корпорации. К этим сетям присоединяются пользователи, а открытое программное обеспечение стимулирует их стремление к сотрудничеству. В конечном счёте все участники приходят к согласию относительно каждого фрагмента данных, необходимых для создания валюты. Децентрализация держится на двух столпах: открытых механизмах консенсуса и программном обеспечении с открытым исходным кодом. Если бы код не был открытым, то как бы участники (не знакомые друг с другом люди в интернете) сумели бы понять систему, к которой они присоединяются, и довериться ей?

На самом деле токен-проекты, основанные на патентованном коде, могут оказаться просто централизованными сервисами, которые прячутся за профессиональным сленгом и «абракадаброй блокчейна». Однако у «истинных» проектов код, создающий децентрализованную сеть, позволяющий участникам доверять друг другу, иметь общую мотивацию и наказывать мошенников, и сам по себе децентрализован. Его разрабатывают у всех на глазах сотни энтузиастов, он доступен всем в мире для использования и модификации и совершенно независим от корпоративных интересов.

Программное обеспечение с открытым исходным кодом (OSS) - это компьютерное программное обеспечение, распространяемое с его исходным кодом, доступным для модификации. Обычно программное обеспечение включает лицензию для программистов на изменение программного обеспечения любым способом. Они могут исправлять ошибки, улучшать функции или адаптировать программное обеспечение в соответствии со своими потребностями. Инициатива с открытым исходным кодом (OSI) является ведущим органом в области OSS; их определение программного обеспечения с открытым исходным кодом соответствует правилам по 10 критериям.

К ним относятся:

  • Распространение программного обеспечения
  • Доступность исходного кода
  • Распространение лицензий
  • Свойства лицензии
  • Антидискриминация

Лицензии

Различные лицензии позволяют программисты для изменения программного обеспечения с различными условиями. OSI утверждает лицензии, соответствующие их определению программного обеспечения с открытым исходным кодом. 5 из самых популярных лицензий в соответствии с базой знаний Black Duck:

  1. Лицензия MIT
  2. Общая публичная лицензия GNU (GPL) 2. 0
  3. Лицензия Apache 2. 0
  4. GNU General Public License (GPL) 3. 0
  5. Лицензия BSD 2. 0 (3-пункт, новый или пересмотренный)

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

Разница между открытым исходным кодом и коммерческим программным обеспечением

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

В результате пользователи часто платят за это.

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

Программное обеспечение с открытым исходным кодом Vs. Бесплатное программное обеспечение

Вопреки распространенному мнению, ни одно из них не фокусируется на стоимости или недостатке этих программ.

Open Source влечет за собой бесплатную доступность исходного кода и дистрибутива. Бесплатное программное обеспечение, таким же образом, включает в себя модификацию кода, но подчеркивает, что пользователям, которым нравится свободное программное обеспечение, нравится делать то, что им нравится. Фонд свободного программного обеспечения излагает 4 условия для того, чтобы программное обеспечение считалось полностью бесплатным.

Кроме того, программное обеспечение можно классифицировать как бесплатное. Это означает, что пользователи бесплатно загружают программное обеспечение, но не могут внести никаких изменений в его исходный код.

Преимущества программного обеспечения с открытым исходным кодом

В то время как стоимость является движущей силой, OSS имеет несколько дополнительных преимуществ:

  • Высокое качество результатов, когда исходный код передается, тестируется и исправляется.
  • Это ценная возможность обучения программистов. Они могут учиться и применять навыки для самых популярных программ, доступных сегодня.
  • Многие считают программное обеспечение с открытым исходным кодом более безопасным, чем проприетарное программное обеспечение, потому что ошибки идентифицируются и исправляются быстро.
  • Поскольку программное обеспечение с открытым исходным кодом находится в общественном достоянии, мало шансов, что он может стать недоступным. Это важно для долгосрочных проектов, которые полагаются на эти инструменты в течение всего проекта.
  • Большая часть программного обеспечения бесплатна. Однако затраты могут возникнуть позже, например, подписки или платы за поддержку.

Популярные типы программного обеспечения с открытым исходным кодом

Технологии с открытым исходным кодом помогли создать большую часть Интернета.

Кроме того, многие из программ, которые вы и я используем каждый день, основаны на технологиях с открытым исходным кодом. Например, Android OS и Apple OS X основаны на ядре и Unix / BSD с открытым исходным кодом, соответственно.

Другое популярное программное обеспечение с открытым исходным кодом:

  • Веб-браузер Mozilla Firefox
  • Почтовый клиент Thunderbird
  • Язык сценариев PHP
  • Язык программирования Python
  • Сервер веб-сервера Apache
  • > Open Source и разработчики

Проекты OSS - это возможности сотрудничества, которые улучшают навыки и создают связи в этой области. Разработчики должны владеть стандартными инструментами разработки с открытым исходным кодом.

Коммуникационные средства

  • - электронная почта, обмен сообщениями в реальном времени, форумы и вики помогают разработчикам находить решения или отскакивать идеи друг от друга. Системы управления распределенными версиями
  • - Когда несколько разработчиков в разных географических точках изменяют данные и файлы, эти системы управляют различными версиями и обновлениями. Отслеживание ошибок и списки задач
  • - Разрешить крупномасштабным проектам контролировать проблемы и отслеживать их исправления. Инструменты тестирования и отладки
  • - Автоматизация тестирования во время интеграции системы и отладки других программ. Заключение

Тысячи проектов с открытым исходным кодом являются альтернативой проприетарному программному обеспечению. Работа над проектом OSS как путь к созданию карьеры в разработке программного обеспечения. Кроме того, программисты могут оттачивать свои навыки, работая над крупнейшими программными продуктами в мире. Facebook, Google и LinkedIn в качестве Open Source, поэтому разработчики могут делиться знаниями, внедрять решения и вносить вклад в стабильные, функциональные продукты.

Нет простого способа узнать, какая из них - лучшая модель разработки программного обеспечения для вашего бизнеса, с открытым исходным кодом или запатентованная.

В Open-Source есть множество разработчиков и программистов, которые в наименьшей степени запуганы идеей коммерциализации программного обеспечения, но это создает угрозу для индустрии коммерческого программного обеспечения, которой больше всего угрожает понятие программного обеспечения с открытым исходным кодом.

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

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

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

Что такое ПО с открытым исходным кодом?

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

Сообщество людей, работающих с программным обеспечением, позволит любому изучать и изменять код с открытым исходным кодом для любых целей, которые они хотят. Движение с открытым исходным кодом нарушило все барьеры между разработчиками / программистами и поставщиками программного обеспечения, которые побуждают всех открывать сотрудничество. Наконец, ярлык «программное обеспечение с открытым исходным кодом» был официально опубликован на стратегической сессии в Пало-Альто, штат Калифорния, в 1998 году, чтобы способствовать принятию во всем мире этого нового термина, который сам по себе напоминает академическую свободу.

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

Это знак сертификации, принадлежащий Инициативе с открытым исходным кодом (OSI). Термин «программное обеспечение с открытым исходным кодом» относится к программному обеспечению, которое разрабатывается и тестируется посредством открытого сотрудничества, что означает, что любой обладающий необходимыми академическими знаниями может получить доступ к исходному коду, изменить его и распространить собственную версию обновленного кода.

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

Что такое проприетарное программное обеспечение?

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

Владелец или издатель программного обеспечения исключительно прав интеллектуальной собственности на исходный код. Мы называем это программное обеспечение «проприетарным программным обеспечением», потому что только первоначальный владелец (ы) программного обеспечения юридически разрешен для проверки и изменения исходного кода.

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

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

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

Примеры проприетарного программного обеспечения включают iTunes, Windows, macOS, Google Earth, Unix, Adobe Flash Player, Microsoft Word и т. Д.

Разница между открытым исходным кодом и проприетарным программным обеспечением

Контроль открытого и проприетарного программного обеспечения

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

Безопасность открытого и запатентованного программного обеспечения

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

Поддержка драйверов открытого и запатентованного программного обеспечения

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

Удобство использования программного обеспечения с открытым исходным кодом и проприетарного программного обеспечения

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

Непрозрачность открытого и запатентованного программного обеспечения

Ограничения на просмотр запретили конечным пользователям изменять код, не говоря уже о его отладке, без контроля над возможными обходными решениями. Внутренняя структура проприетарного программного обеспечения строго закрытого доступа означает, что им не хватает прозрачности, что делает практически невозможным для пользователей даже предлагать модификации или оптимизации программного обеспечения. С другой стороны, Open Source способствует открытому сотрудничеству, что означает меньшие ошибки и более быстрые исправления ошибок с меньшим количеством сложностей.

Программное обеспечение с открытым исходным кодом и проприетарным программным обеспечением: сравнительная таблица

Сводная информация о программном обеспечении с открытым исходным кодом

Open-source относится к программному обеспечению, чей исходный код доступен для всех, кто имеет доступ и модифицирует, в то время как проприетарное программное обеспечение относится к программному обеспечению, которое принадлежит исключительно физическому лицу или издателю, который его разработал. В отличие от программного обеспечения с открытым исходным кодом проприетарное программное обеспечение управляется отдельным лицом или организацией, которая держит исключительно права интеллектуальной собственности на исходный код, и никто за пределами круга не может просматривать этот код, а не проверять его. Основное различие между ними заключается в том, что проекты с открытым исходным кодом обладают способностью развиваться, поскольку их могут повторять миллионы разработчиков, расположенных по всему миру.

Программное обеспечение с открытым исходным кодом (Open source) - способ разработки ПО, при котором создаваемый исходный код программ открыт, то есть, общедоступен для просмотра и изменения. Это позволяет всем желающим использовать уже созданный код для своих нужд и, возможно, помочь в разработке открытой программы.

«Открытая» лицензия не требует, чтобы ПО всегда предоставлялось бесплатно. Но многие из наиболее успешных проектов «открытого» ПО, тем не менее, бесплатны.

Подавляющее большинство открытых программ является одновременно свободными (GNU GPL) и наоборот, ибо определения открытого и свободного ПО близки, а большинство лицензий соответствуют обоим.

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

ОС Microsoft Windows

Рис. 39. Логотип OC Windows.

MS Windows (произносится Ви́ндоуз) - семейство операционных систем компании Microsoft (Майкрософт). Глава корпорации Microsoft – Билл Гейтс .

Начиная с 1995 года Windows - самая популярная операционная система на рынке персональных компьютеров – стандарт де-факто. К 2005-му году Microsoft Windows была установлена более чем на 89% персональных компьютеров.

Однако многие пользователи сделали выбор в пользу ОС Windows так как совсем не знакомы с альтернативами, такими как MacOS, Linux, BSD. В России до начала 2000-х годов почти все персональные компьютеры продавались с предустановленной операционной системой Windows. Борьба с распространением пиратских версий программных продуктов привела к появлению интереса к другим операционным системам. Так, например, стало возможным приобрести персональный компьютер с предустановленной бесплатной ОС Linux .

Хронология выпусков версий Windows


· Windows 1.0 (1985)

1. Windows 2.0 (1987)

2. Windows/386 (1987)

3. Windows 3.0 (1990)

4. Windows 3.1 (1992)

5. Windows NT 3.1 (1993)

6. Windows NT 3.5 (1994)

7. Windows 95 (1995)

8. Windows NT 4.0 (1996)

9. Windows 98 (1998)

10. Windows 2000 (2000)

11. Windows Me (2000)

12. Windows XP (2001)

13. Windows 2003 (2003)

14. Windows Vista (2007)

15. Windows рабочее название Vienna (2010)


Интегрированные программные продукты и прикладное ПО

Операционная система Microsoft Windows включает в себя стандартные приложения, такие как браузер Internet Explorer , почтовый клиент Outlook Express , проигрыватель Windows Media Player .

Вокруг факта включения таких стандартных продуктов в ОС Windows разгорается много споров и дискуссий, поскольку это создает серьезное препятствие для распространения конкурирующих продуктов.

Рис. 40. Логотип пакета MS Office.

Для MS Windows существует очень удобный и освоенный большинством пользователей пакет прикладных программ Microsoft Office , включающий:

Текстовый процессор MS Word ,

Табличный процессор MS Excel ,

Органайзер MS Outlook ,

Приложение для подготовки презентаций MS PowerPoint ,

Приложение для управления базами данных MS Access .

Не стоит забывать, что и ОС Windows и абсолютное большинство популярных прикладных программ под Windows имеют лицензию copyright, т.е. являются проприетарным ПО. Соответственно каждая копия такой программы должна приобретаться за деньги. Например, на конец 2006 года цена на Windows XP Home Edition Russian BOX (SP2) - $185, Office 2003 Russian CD – $322.

Используя нелицензионное (пиратское) ПО, защищенное лицензией copyright, вы нарушаете законодательство о защите авторских прав.

ОС GNU/Linux

Рис. 41. Логотип ОС GNU/Linux – пингвиненок Tux.

Операционная система GNU/Linux (произносится «гну ли́нукс») - свободная UNIX-подобная операционная система. Обычно, по историческим причинам и для краткости, эта система называется просто «Linux». Это самая мощная альтернатива MS Windows, популярная в качестве серверной и резко набирающая популярность в качестве настольной (desktop) операционной системы в последние годы, в связи с усилением контроля за соблюдением лицензионного использования ОС Windows со стороны Microsoft в версиях XP и Vista.

К операционной системе GNU/Linux также часто относят программы, дополняющие эту операционную систему, и прикладные программы, делающие её полноценной многофункциональной операционной средой.

В отличие от большинства других операционных систем, GNU/Linux не имеет единой «официальной» комплектации. Вместо этого GNU/Linux поставляется в большом количестве так называемых дистрибутивов , в которых программы GNU соединяются с ядром Linux и другими программами. Самые распространённые в мире дистрибутивы:

Американский Red Hat и его наследник Fedora Core ;

Немецкий SuSE ;

Французский Mandriva (бывший Mandrake );

Не имеющий национальной принадлежности международный дистрибутив Debian GNU/Linux ;

Один из самых старых дистрибутивов Slackware ;

Сравнительно молодой и активно развивающийся дистрибутив Gentoo ;

Молодой, но перспективный дистрибутив Ubuntu Linux .

Создатель ядра Linux - Линус Торвальдс . GNU/Linux не имеет географического центра разработки. Нет и организации, которая владела бы этой системой; нет даже единого координационного центра. Программы для GNU/Linux - результат работы тысяч проектов. Некоторые из этих проектов централизованы, некоторые сосредоточены в фирмах, но большинство объединяют программистов со всего света, которые знакомы только по переписке. Создать свой проект или присоединиться к уже существующему может любой и, в случае успеха, результаты работы станут известны миллионам пользователей. Пользователи принимают участие в тестировании свободных программ, общаются с разработчиками напрямую, что позволяет быстро находить и исправлять ошибки и реализовывать новые возможности.

На рынке серверных операционных систем Австралии Linux уже заняла около 30%. За австралийцами последовали и бразильцы. Бразильское правительство решило отказаться от расходования средств на программное обеспечение и перейти с продуктов Microsoft на системы с открытым кодом, в частности, ОС Linux. Главная причина изменений – экономическая. В нашей стране рынок Linux пока невелик.

Файловая система

Вся информация в компьютере хранится в файлах, с которыми и работает операционная система.

Файл (file) - это поименованная последовательность байтов , место постоянного хранения различных видов информации.

Файлы организованы в каталоги, также называемые директориями (directory) или папками (folder). Каталог - это файл, который хранит сведения о других файлах: имя, размер, дату создания, адрес файла на диске.

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

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

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

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

Все файлы условно можно разделить на две части - текстовые и двоичные .

Текстовые файлы - наиболее распространенный тип данных в компьютерном мире. Для хранения каждого символа чаще всего отводится один байт, а кодирование текстовых файлов выполняют с помощью специальных кодировочных таблиц.

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

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

Каждый файл на диске имеет обозначение (полное имя ), которое состоит из 2 частей: имени и расширения , разделенных точкой.

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

В ранних операционных системах длина расширения была ограничена тремя символами, в современных операционных системах это ограничение отсутствует.

Операционная система или менеджер файлов могут устанавливать соответствия между расширениями файлов и приложениями.

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

Драйверы

C ПК могут сопрягаться разнообразные устройства: видеокарта, звуковая карта, принтер, сканер, манипуляторы, дисководы, цифровые фотоаппараты, сотовые телефоны… Каждое из них имеет свой набор команд – свой «язык». Чтобы конкретная операционная система могла управлять конкретным устройством, прибегают к помощи программ–«переводчиков», знающих с одной стороны язык команд конкретного устройства, а с другой – язык конкретной операционной системы, под управлением которой должно работать это устройство.

Такая программа называется драйвером (driver) и поставляется вместе с устройством его производителем. Производители аппаратного ПО, как правило, также размещают драверы, созднных ими устройств, на своих web-сайтах.