Урок #2. О Linux, GNU и проблемах с программами
Linux — это ядро операционной системы, то есть это своеобразный мотор, вокруг которого строится операционная система и который движет всеми процессами в ней.
Если рассматривать ядро, то можно сказать, что оно само по себе бесполезно для конечного пользователя, также как и двигатель сам по себе бесполезен, если его изъять из автомобиля.
Можно провести еще одну параллель с двигателем внутреннего сгорания. Также как и двигатель имеет один и тот же принцип работы, но используется десятками автомобильных компаний в своих разработках, так и ядро Linux было заимствовано программистами десятков стран, для создания своих операционных систем.
Именно поэтому операционных систем основанных на ядре Linux тысячи! А более-менее известных несколько сотен!
Linux в отличии от Windows не имеет какого-то одного головного центра, который руководит разработкой. Практически вся разработка лежит в руках энтузиастов. Кто-то разрабатывает свою операционную систему чисто из альтруистках побуждений, кто-то имеет спонсоров, которые вносят свой финансовый вклад в развитие того или иного дистрибутива.
GNU и/или Linux. Как правильно. История возникновения.
Кстати, стоит сразу внести это понятие, если кто-то не знает.
Дистрибутив — это установочный файл или файлы какой-либо программы. Дистрибутив создан таким образом, чтобы программа корректно установилась на вашем компьютере с учетом всех его особенностей. То есть говоря о дистрибутиве операционной системы я имею в виду некоторую программу, которая позволяет установить операционную систему на любой компьютер, учитывая все особенности именно этого компьютера, чем обеспечится наиболее оптимальная работа операционной системы после ее установки.
Итак, в отличии от Windows, исходный код практически любого дистрибутива Linux является открытым. Это означает что любой программист может вносить в него исправления или дополнения.
Также в состав разных дистрибутивов могут входить разные программы. Это означает, что установив операционную систему на компьютер вы сразу получите некоторых набор программ, и он будет отличаться в зависимости от дистрибутива.
Ну и скажу пару слов о проекте GNU, который внес особый вклад в развитие операционной системы LINUX. Целью этого проекта было создание свободной полноценной операционной системы и свободного программного обеспечения. Разработка производилась на основе операционной системы UNIX, которая была очень популярна в 80-е года прошлого века. К слову сказать, UNIX стала прародителем не только Linux, но и операционной системы Mac OS, которая устанавливается на компьютеры Apple. Ну а достаточно популярная в настоящее время операционная система Android, базируется на ядре Linux.
В общем, не углубляясь в исторические детали скажу, что ядро Linux совместно с разработками проекта GNU превратилось в полноценную операционную систему, которой и посвящен данный курс. Поэтому логичнее называть операционную систему не просто LINUX, а GNU/LINUX, что вы можете достаточно часто видеть на различных сайтах или в других источниках, посвященных Линукс.
Что такое GNU/Linux — легкий способ стать свободным
Есть еще один нюанс, который с одной стороны никак не касается нас, как обычных пользователей, но с другой стороны я хочу о нем упомянуть, чтобы показать откуда появляются некоторые проблемы у пользователей Linux.
Итак, в рамках проекта GNU возникла свободная лицензия GPL, то есть это некоторый документ, описывающий правила создания и распространения программ. Этой лицензией пользуется множество программистов и данная лицензия дает полную свободу пользователям и разработчикам. Согласно лицензии GPL любой человек может разрабатывать программы и распространять их как бесплатно, так и за деньги, НО В ОБЯЗАТЕЛЬНОМ порядке все программы и компоненты должны иметь открытый исходный код, то есть любой другой программист может посмотреть как эта программа была написана.
Само собой такой нюанс не нравится многим разработчикам, которые желали бы скрыть свои ноу-хау. Именно поэтому имеются некоторые проблемы с программами под Linux и вы не сможете найти такие программы, как, например, Photoshop или Microsoft Office под Linux. Эти программы являются коммерческими продуктами с закрытым исходным кодом и они вряд ли когда-нибудь официально станут доступными пользователям Linux.
Также у пользователей периодически возникают проблемы с драйверами для некоторых устройств и все по той же причине. Производители устройств, стремясь скрыть какие-то свои разработки от конкурентов, просто не выпускают драйвера под Linux. Но эти проблемы обычно решаются энтузиастами, которые создают или модернизируют драйвера самостоятельно, а потом делятся ими со всеми желающими.
Ну и в заключении хочу сказать о бесплатности Linux.
Многие считают, что Linux полностью бесплатна, что вроде бы как заложено в саму ее лицензию. Это не так. Под «свободностью» понимается не бесплатность, а свобода действий! Так как все исходные коды, как самой операционной системы, так и программ под нее написанных, являются открытыми, то любой программист может брать их за основу, для создания своих собственных разработок.
Именно это, а не что-то другое лежит в основе Линукса и именно это объясняет такое разнообразие ее дистрибутивов, число которых исчисляется тысячами. При желании каждый может создать свой личный дистрибутив и распространять его хоть за деньги, хоть бесплатно…
Безусловно, большинство программ и дистрибутивов Linux являются бесплатными, но есть и платные разработки, поэтому говорить что Linux является по умолчанию бесплатной операционной системой не совсем корректно.
На этом у меня все, а в следующий раз я расскажу о дистрибутивах Linux и мы выберем один из них для себя.
Источник: pc-azbuka.ru
Программы GNU
Программы GNU — это программы, выпускаемые под эгидой проекта GNU. Если программа является программой GNU, мы также говорим, что это — пакет GNU. Это должно быть указано в руководстве пользователя или файле README пакета. Кроме того, все пакеты GNU отмечены в Каталоге свободных программ.
Большинство программ GNU выпускается с авторским левом, хотя некоторые программы выпускаются без него; однако все программы GNU должны быть свободными.
Некоторые программы GNU были написаны персоналом Фонда свободного программного обеспечения, но большинство программ GNU поступило от многочисленных добровольцев. (Работа некоторых из этих добровольцев оплачивается компаниями или университетами, но для нас они — добровольцы.) Авторские права на одни из поступивших программ принадлежат Фонду свободного программного обеспечения, авторские права на другие остаются за теми, кто предоставляет эти программы.
Нужно заметить, что преимущества свободной разработки для пользователя не следует преувеличивать. Не все свободные программы в равной степени доступны для изменения пользователям, и это совершенно не связано с лицензией на их распространение.
Важный фактор здесь — объем программы: если в ней десятки тысяч строк (как, например, в OpenOffice.org), то даже квалифицированному пользователю потребуется слишком много времени, чтобы разобраться, что к чему. А если при этом еще нет толковой документации. Рассчитывать же на то, что разработчики ответят на все замечания и предложения пользователя немедленным исправлением программы тоже нельзя, поскольку они не несут перед пользователем никаких обязательств по качеству программы. В этом отношении пользователь патентованной программы может быть даже в лучшем положении.
Свободное программное обеспечение (СПО) (англ. free software, opensource software) — программное обеспечение, в отношении которого права пользователя на неограниченную установку, запуск, а также свободное использование, изучение, распространение и изменение юридически защищены авторскими правами при помощи свободных лицензий. Сотни тысяч компаний в России и по всему миру используют в своей деятельности операционную систему Linux, интернет-браузер Mozilla Firefox, офисный пакет OpenOffice.org, веб-сервер Apache и другое программное обеспечение, не подозревая, что именно оно является свободным. Другие подходят к внедрению в своей компании СПО обстоятельно, изучив преимущества и возможные сложности. А многие до сих пор не торопятся воспользоваться возможностями СПО. Причиной такого настороженного отношения, как правило, являются не только технические нюансы, но и неопределенность с юридическим статусом СПО в России.
Для большинства пользователей привычной и стандартной является схема использования проприетарного ПО — на каждую устанавливаемую копию программного продукта приобретается лицензия, часто также ограниченная по сроку действия. СПО предоставляет пользователям право устанавливать сколько угодно большое число копий программы, работать с ней без каких-либо ограничений, без необходимости платить при этом за лицензии. Такой порядок использования СПО является вполне легальным и регулируется специальными свободными лицензиями.
Возможность взять и пользоваться программным обеспечением без необходимости тратить огромные деньги на лицензии, масштабировать ИТ-решения с развитием компании без дополнительных затрат — эти черты СПО являются весьма привлекательными для многих российских компаний. Но здесь есть и свои подводные камни, в том числе и в юридической сфере.
Источник: studwood.net
Программа gnu что это
Свобода программы означает, что у пользователей есть свобода выполнять, копировать, изучать, править и улучшать программу.
Понятие “свободная программа” относится к свободе, а не к стоимости. Чтобы верно воспринимать эту концепцию, слово “свободный” следует понимать в том смысле, который заключается в выражении “вольная речь”, а не “бесплатное пиво”.
- Свобода выполнять программу, как вам угодно и в любых целях (свобода 0).
- Свобода изучать, как работает программа, и править ее так, чтобы она выполняла ваши вычисления, как вы желаете (свобода 1). Это предполагает доступ к исходному тексту.
- Свобода передавать копии, чтобы помогать другим (свобода 2).
- Свобода передавать копии своих измененных версий другим (свобода 3). Этим вы можете дать всему сообществу возможность получать выгоду от ваших изменений. Это предполагает доступ к исходному тексту.
Подробнее о GNU
GNU — операционная система типа Unix. Это значит, что она представляет собой собрание множества программ: приложений, библиотек, средств разработки и даже игр. Многие программы в GNU выпускаются под эгидой проекта GNU; их мы называем пакетами GNU.
Название “GNU” — это рекурсивное сокращение фразы “ GNU’s Not Unix! ” (“GNU — не Unix!”). “GNU” произносится как гну, одним слогом, как глагол “гнуть” в первом лице, единственном числе настоящего времени изъявительного наклонения.
Работы над собственным ядром GNU, GNU Hurd, начались в 1990 году (до начала работ над Linux). Добровольцы продолжают развивать Hurd, поскольку это представляет технический интерес.
Пользуясь великими благами от чужих изобретений, мы должны радоваться случаю служить другим всеми собственными изобретениями, и делать это с охотой и великодушием.
— Бенджамин Франклин
Проект GNU настоятельно призывает сообщество общаться дружелюбно, приветливо и доброжелательно. См. Рекомендации GNU по общению в проекте.
GNU на планете:
Вышел LilyPond 2.24.0 : Мы с гордостью объявляем о выпуске GNU LilyPond 2.24.0. LilyPond — программа верстки музыки.
успех эфемеров : Добрый вечер, терпеливые хакеры 🙂 Сегодня завершается мой ряд выпусков о реализации.
Действуйте!
Не могли бы вы помочь GNU с каким-нибудь из этих проектов?
- Приоритетные проекты GNU по улучшению
- Свободная программа удаления фоновой музыки
Могли бы вы помочь с сопровождением какого-нибудь пакета GNU? Следующие пакеты нуждаются в сопровождающих:
Кроме того, для следующих пакетов нужны дополнительные разработчики:
- aspell, bison, gnuae, gnubik, metaexchange, powerguru, xboard.
Подробности см. на страницах сайтов пакетов.
Mediagoblin
GNU MediaGoblin — свободная платформа для публикаций. Она работает на федерализованный манер, освобождая пользователя от централизованных служб Всемирной паутины. Она поддерживает изображения, звук и видео. (док)
Источник: www.gnu.org
GNU или Linux?
Просматривая статьи для перевода на translated.by я наткнулся на предложение перевести статью GNU or Linux? за авторством David Chisnall. Автор предлагает разобраться чего же больше в ОС — GNU или же Linux? Собственно перевод этой статьи и предлагается Вашему вниманию.
GNU или Linux?
Ни одна другая система не испытывала таких споров вокруг своего имени. Огромное количество флейм войн началось после заявления FSF о том, что такие дистрибутивы как Ubuntu и Fedora должны называться GNU/Linux, вместо Linux. Пытались ли они просто заработать на чужом труде, или их аргументы небезосновательны?
Чтобы разобраться в этом вопросе давайте взглянем на то, что происходит, когда вы запускаете GNU/Linux систему — сколько используется GNU кода, а сколько Linux кода. Разработчик использует огромное количество GNU кода, к примеру GCC и GNU Make, но насколько это справедливо и для конечного пользователя?
Что делает Ядро?
Перед тем как начать разбираться где же GNU биты, а где Linux, важно понять, что именно делает ядро. Ядро выполняет две главные задачи:
* Освобождает разработчиков от необходимости изучать низкоуровневую архитектуру. Для этого необходимо наличие большого количества драйверов к устройствам и единых интерфейсов к этим драйверам. Хорошим примером служит Сокет-интерфейс. Когда вы пишете сетевой код, вы просто открываете сокет и пишите в него данные. Вам не надо заботится о типе сетевого оборудования пользователя и низлежащих протоколах.
* Изолирует запущенные программы друг от друга. Изолировать процессы платформо-независимым методом просто: Позволить процессам использовать только непривилегированные инструкции процессора. К сожалению, такой подход сделает невозможным любые операции ввода/вывода для программ, что делает все программы бессмысленными. Для снятия этого ограничения существует системный вызов — механизм, который позволяет запущенному процессу запрашивать ядро для совершения привилегированной операции от имени запрашивающего процесса. Обычные примеры — запись в файл (виртуальный диск), выделение памяти, или доступ к экрану или клавиатуре.
Механизм, который используется системным вызовом, платформо-зависим. На x86 платформе распространенным методом был вызов исключения, хотя новые процессоры от AMD и Intel предоставляют инструкции, позволяющие выполнить это еще быстрее. При этом управление переходит к ядру, которое решает, как интерпретировать значения в регистрах и на стеке, а также, какие действия предпринять.
Взгляд со стороны разработчика.
Важным стандартом при программировании для *NIX или в *NIX является единая спецификация UNIX — супермножество POSIX, которое включает всё, что должно быть в UNIX системе. Код, написанный согласно этому стандарту, переносим среди ряда UNIX-подобных систем.
Стандарт не описывает системные вызовы. Наоборот, он описывает Cи-функции, которые служат оберткой для системных вызовов. Когда программист хочет вызвать функцию open (), ему не надо знать, что он поместит указатель в EBX и значение 2 в EAX, а затем вызовет прерывание 80h; стандартная библиотека Cи реализует все эти функции.
Любая нетривиальная программа на Linux будет обращаться к библиотеке Си (libc, для краткости). Существует несколько вариантов реализации стандартной библиотеки Си. У каждого члена семейства BSD есть своя реализация, впрочем как и у любой коммерческой UNIX системы. Какой вариант стандартной библиотеки С используется в Linux зависит от использования; существует несколько версий для встроенных систем, но большинство декстоп дистрибутивов Linux используют GNU libc.
По количеству кода ядро и libc практически равны. На двоих они предоставляют интерфейс разработчика к системе. Поскольку стандарт определяет только Cи-интерфейсы, а не системные вызовы, то и большинство кода написано с использованием стандартной библиотеки Cи.
Это правило справедливо и для других языков; если вы, к примеру, запускаете некий java или python код, то он будет получать доступ к ядру через библиотеку Cи. Для некоторых языков существует своя стандартная библиотека от GNU Project. Например, любой С++ код будет использовать GNU libstc++ на GNU/Linux платформах. Некоторые дистрибутивы также включают GNU-реализации для Java библиотек, хотя такая практика уже не так популярна, учитывая, что Sun-версии стали open source. Даже если вы используете Sun Java библиотеки, вы по-прежнему используете GNU libc на этих платформах для любого Java приложения.
C C++ нюансов еще больше, чем с другими языками. Когда вы линкуете два модуля (к примеру, исполняемый файл и библиотеку), то сразу несколько стандартов описывают модель взаимодействия этих двух модулей. При вызове функции из другого модуля необходимо явно определить порядок аргументов на стеке и в регистрах, кто очистит память впоследствии и так далее.
В С++ много чего должно быть явно определено для использования классов в различных модулях. Этот набор стандартов называется Бинарный Интерфейс Приложений (Application Binary Interface, ABI). В Linux, С++ ABI определен в GCC, который является пакетом GNU, как упоминалось ранее. Скомпилированный С++ код, независимо от того, какой компилятор использовался, должен подчиняться стандартам GNU, в противном случае такой код не сможет быть повторно использован другим С++ кодом.
Загрузка системы.
Современные GNU/Linux дистрибутивы начинают процесс загрузки с GRUB (GRand Unified Bootloader), который также является частью проекта GNU. (Хотя, технически, загрузка начинается в BIOS или другой прошивке, и это применимо для всех систем, которые запускаются на аппаратной платформе.) GRUB не создавался специально для Linux. Он может запускать и другие ОС и является стандартом для запуска некоторых систем на архитектуре x86, включая OpenSolaris и гипервизор Xen.
Затем GRUB передает управление ядру, которое продолжает инициализировать систему и конфигурирование драйверов. Ядро в свою очередь передает управление процессу init. Этот процесс отвечает за создание других процессов.
На Linux системах, init это очень маленькая программа, которая делает нечто большее, чем просто запуск скрипта. В некоторых дистрибутивах init заменен на Upstart, программу, которая не является ни частью Linux, ни частью GNU, и имеющая более сложную управляемую событиями модель. Скрипты, запущенный init’ом или Upstart’ом — это просто набор команд, интерпретируемых командной оболочкой (shell).
Спецификация POSIX содержит описание минимальной функциональности оболочки. Если вы хотите писать портативные shell-скрипты, то можете оставаться в рамках данной ограниченной функциональности, и, в итоге, получите скрипты, которые будут идти на всех UNIX-подобных системах.
Однако, большинство init скриптов не портируемы. Они используют расширенную функциональность командной оболочки, присутствующей в большинстве Linux дистрибутивов — Bash, командная оболочка от GNU.
Что в стандарте?
Единая Спецификация UNIX содержит намного больше, чем просто набор Cи-функций. В частности, стандарт определяет набор пользовательских утилит, которые обязаны присутствовать в UNIX-подобных системах. Многие программы используют эти утилиты через shell-скрипты или другие вызовы. Большинство из них содержатся в пакете корневых утилит GNU. Опять-таки, сравнивая количество строк кода, размер корневых утилит сравним с размером ядра.
Можно предположить, что эти утилиты не столь важная часть системы, однако это не так. Без утилит большинство init скриптов просто не запустятся (даже при наличии Bash), а система будет непригодна к использованию. Большинство инсталляторов также не запустятся, а это значит, что вы не сможете установить ни одной программы. Даже базовая функциональность, такая как копирование файлов использует корневые утилиты.
Единая UNIX Спецификация предоставляет список из 175 программ, которые должны присутствовать в каждой UNIX системе. Большинство из которых (с некоторыми исключениями, типа vi) созданы GNU и присутствуют в большинстве Linux дистрибутивов. Часть из них никогда не используются обычными пользователями; к примеру, стандарт предписывает наличие c99 и fort77 утилит для компилирования программ написанных на C и Fortran (обе утилиты предоставляются GNU).
На что еще следует обратить внимание?
Ранее я говорил, что у ядра две роли. Главная роль в предоставлении программам пользователя доступ к аппаратной части. Поэтому большинство Linux кода (и кода большинства других ядер) состоит из драйверов устройств. Но, отдельно стоит упомянуть о графике.
Старая модель драйвера XFree86 слабо зависела от ядра. Х-сервер запускался как привилегированный процесс и получал прямой доступ к аппаратной части. Я сам видел живой пример этого при попытке использования бинарного Linux драйвера Matrox под FreeBSD. Хоть драйвер и был написан для Linux, он прекрасно встал на FreeBSD, т.к. он напрямую взаимодействовал с Х-сервером и железом, а вовсе не с ядром FreeBSD.
Новые драйвера используют Инфраструктуру прямого рендеринга (Direct Rendering Infrastructure (DRI)). Эта система состоит из двух компонентов, называемых DRI и DRM. DRI — это драйвер пользовательского окружения, который снабжает командами аппаратную часть и предоставляет API другим пользовательским программам. DRM, в свою очередь, является маленьким модулем ядра, который проверяет команды и передает их аппаратной части.
Часто при холиварах на тему «готов ли Linux для десктопа» люди спрашивают, а как хорошо работает 3D в Linux? Вообще-то, обработка 3D это не задача Linux на большинстве системах. Linux всего-лишь предоставляет прямой интерфейс к аппаратной части, а уже X.Org пишет драйвера. Эти же драйвера могут быть запущены на FreeBSD, OpenBSD и еще ряде систем. В мире GNU/Linux систем Linux не занимается разработкой драйверов для одной из сложнейших частей аппаратной составляющей современного дектопа/лэптопа.
С изобретением FUSE, которая также работает на FreeBSD, NetBSD, and Mac OS X, ядро часто перестает предоставлять все драйвера для файловых систем, что еще больше умаляет роль «Linux» в системе.
Удаление GNU или Linux.
Возможно самый правдивый тест на важность того или иного компонента системы состоит в том, насколько просто обойтись без данного компонента в системе. Некоторые Linux платформы используют не так много GNU программ; например использование busybox для утилит командной строки и uclibc для стандартной библиотеки. Часть GNU платформ, такие как Nexenta или Debian GNU/kFreeBSD не используют ядро Linux.
Чтобы оценить важность Linux, давайте взглянем на Linux совместимое окружение в FreeBSD. При запуске Linux программ на FreeBSD, происходит установка модифицированного обработчика системного вызова, который вызывает функции ядра FreeBSD, в ответ на системные вызовы Linux. Этот поход позволяет запускать программы, написанные под Linux, без их изменения.
Для того чтобы данный метод работал, часто устанавливают урезанную версию Linux в отдельном окружении. Программы написанные под Linux в итоге смогут найти все необходимые библиотеки и утилиты, включая GNU утилиты, GNU grep, Bash и другие пакеты.
О чем это говорит? Это говорит о том, что если вы хотите запустить GNU/Linux программу на другой системе, то это легко выполнимо без Linux, а вот без GNU обойтись не так-то просто.
Безусловно, большинство программ успешно запустятся без всяких режимом совместимости, если вы их перекомпилируете. В этом случае они не будут использовать GNU libc, GNU утилиты или bash. Некоторые программы для успешной компиляции требуют GNU компилятор или GNU Make, однако, после компиляции эти программы больше не потребуют никаких GNU утилит, кроме:
- программ, использующих С++, которые скорее всего будут использовать GNU libstdc++.
- программ, явно использующих одну из многих GNU библиотек.
Так что удаление GNU из GNU/Linux видится намного более сложным, нежели удаление Linux. PC-BSD или Nexenta — это хорошие десктопные ОС без капли Linux кода внутри, но с большим количеством GNU кода. Те Linux системы, которые не так сильно зависят от GNU кода — это сплошь интегрированные системы, названия которых не знакомы пользователям десктопных и серверных вариантов Linux.
Так как же стоит говорить, Linux, GNU или GNU/Linux? Я называю GNU, потому что, как программист и пользователь, я пользуюсь, в большинстве своем, теми инструментами, которые разработаны GNU. Когда я портирую код из FreeBSD, проблемы возникают только в корневых утилитах или в стандартной библиотеке Си. Если бы я хотел запустить этот же код на HURD или любой другой GNU системе, то я бы использовал те же самые интерфейсы.
В общем, я предпочитаю выделять дистрибутивы, типа Fedora или Ubuntu, и не упомянать GNU или Linux. Система включает в себя огромное количество кода из различных источников. Среди самых больших поставщиков кода фигурируют Проект GNU и X.org, но Ubuntu GNOME/X.Org/GNU/Linux звучит слегка длинновато. А включая в названия системы такую небольшую и без проблем удаляемую часть, как Linux, поступают несправедливо по отношению к множеству разработчиков, чей код также присутствует в системе.
— translated.by/you/gnu-or-linux/into-ru/trans
Оригинал (английский): GNU or Linux? (http://www.informit.com/articles/article.aspx? p=1339466)
Источник: habr.com
Программа gnu что это
Фонд свободного программного обеспечения (FSF — Free Software Foundation) представляет собой очень интересное и во многих отношениях исключительное явление в современном мире программирования. Многим отечественным программистам приходилось иметь дело с программами из FSF (особенно хорошо известна система программирования GCC), однако отсутствие публикаций на русском языке затрудняет понимание идеологии и целей FSF, а также не дает возможности оценить имеющийся задел. Задача этой короткой статьи — хотя бы частично устранить этот пробел. Статья целиком опирается на материалы FSF и поэтому, в соответствии с общими принципами этой организации, может свободно перепечатываться, копироваться или распространяться каким-либо другим способом (с сохранением этого замечания).
1. Идеология FSF и общие цели проекта GNU
FSF — это программистская организация, основанная и возглавляемая Ричардом Столлманом (Richard Stallman). В самой общей постановке задачей FSF является устранение ограничений по копированию, распространению, изучению и модификации программ для компьютеров. Для достижения этой общей задачи FSF стимулирует разработку и использование свободного программного обеспечения, ориентированного на широкий класс применений.
В своем «Манифесте GNU» [1], написанном еще в 1985 г., Р. Столлман в качестве основной идеи, приведшей к возникновению FSF и проекта GNU, выдвигает свое неприятие права собственности на программы. Особенности взаимоотношений в сообществе программистов часто ставят людей перед выбором следования естественному чувству дружбы и взаимопомощи или подчинения препятствующего этому закону о собственности. При использовании свободного программного обеспечения необходимость такого обременительного выбора исчезает.
Создание интегрированной свободной программной системы позволяет избежать дублирующей работы программистов (которая часто требуется только по причине наличия программ в чьей-либо собственности). Свободное распространение исходных текстов программ облегчает их сопровождение и приспособление к нуждам конкретного пользователя (не требуется прибегать к услугам только компаний — владельцев лицензий на исходные тексты). Появляется дополнительная и очень важная возможность использования хорошего программного обеспечения в учебных целях.
Как утверждает Р. Столлман, при переходе к свободному программному обеспечению программисты не вымрут от голода (хотя, видимо, будут зарабатывать несколько меньше). Ограничение на копирование программ — это не единственный способ зарабатывать деньги. Основная идея Столлмана состоит в том, что нужно продавать не программы, а труд программиста. В частности, источником дохода может быть сопровождение программных систем или их настройка для использования на новых компьютерах и/или в новых условиях, преподавание и т.д.
«Манифест» Столлмана написан очень эмоционально и местами слишком утопичен. Тем не менее, как кажется, идеи свободного программного обеспечения исторически близки традиционным (за исключением самых последних лет) отношениям в среде советских программистов. Возможно, именно линия FSF — наиболее естественный путь к глубокой интеграции отечественного и мирового сообществ программистов.
Более конкретно, FSF ведет разработку программ в рамках проекта GNU (аббревиатура GNU раскрывается рекурсивно — GNU’s Not Unix). Целью проекта GNU является создание полной интегрированной программной системы, средства которой совместимы с возможностями среды ОС Unix (как правило, возможности программ GNU шире возможностей аналогов среды Unix).
Программное обеспечение FSF является «свободным» в двух смыслах. Во-первых, любую программу можно свободно копировать и передавать кому угодно. Во-вторых, наличие исходных текстов программ обеспечивает возможность свободного изучения программ, их улучшения и распространения доработанных вариантов.
Подобно тому, как права обычных компаний, производящих программное обеспечение, охраняются их знаком авторских прав (copyright), «свобода» программных систем FSF защищается «copyleft» — комбинацией copyright и присутствующим во всех текстах FSF документом с заголовком «GNU General Public License» [2]. В этом документе говорится о правах, которыми располагает любой текущий владелец данного текста, и о невозможности лишения этих прав у любого другого субъекта.
Основная деятельность FSF состоит в разработке новых составляющих свободного программного обеспечения в рамках проекта GNU. Большей частью проект GNU развивается плановым образом (см., в частности, разд. 3 этой статьи), но FSF принимает для свободного распространения и программы, разработанные фирмами и частными лицами по собственной инициативе. Кроме того, FSF занимается производством и продажей лент со свободным программным обеспечением, подготовкой, публикацией и распространением руководств по различным компонентам программного обеспечения GNU, а также поддерживает и распространяет справочник услуг — список фирм и частных лиц, которые оказывают платные услуги пользователям программ и систем GNU.
Финансовой основой FSF является продажа лент и документации, а также спонсорство коммерческих фирм и частных лиц.
2. Доступное программное обеспечение GNU
В настоящее время готовы далеко не все компоненты программного обеспечения проекта GNU. Тем не менее, FSF распространяет много программ, часть которых написана непосредственно программистами FSF, а часть передана в FSF для свободного распространения другими организациями и лицами. Коротко перечислим программные продукты, распространяемые FSF сейчас [3].
Emacs — расширяемый, настраиваемый на разные типы терминалов и потребности пользователей редактор. Расширяемость редактора основана на использовании встроенного в редактор интерпретатора языка Лисп (диалекта Common Lisp). Одновременно с исходными текстами редактора распространяются руководства по использованию Emacs и справочное руководство по программированию на языке Лисп в среде Emacs.
Bison — замена стандартного генератора синтаксических анализаторов Yacc с некоторыми расширениями. Руководство также распространяется.
Две реализации упрощенного диалекта языка Лисп — Scheme: одна из MIT (написана на языке Си), вторая из университета г. Yale (написана на Scheme).
Утилита texi2roff, предназначенная для преобразования текстовых файлов в формате TeX в текстовые файлы стандартного для ОС Unix формата [nt]roff (распространяемая FSF на машинных носителях документация оформлена в формате TeX).
Утилиты упаковки/распаковки текстовых файлов.
Шахматная программа GNU.
GNU CC — переносимый оптимизирующий компилятор языка Си. Полностью поддерживает Си стандарта ANSI. Содержит средства полуавтоматического построения генераторов кода для новых компьютеров. Распространяется вместе с руководством.
Однопроходный переносимый ассемблер GAS, почти вдвое пре- вышающий по скорости стандартный ассемблер ОС Unix.
Свободные варианты утилит для работы с объектными файла- ми: ar, ld, nm, size, gprof, strip и ranlib. Распространяется также новая утилита динамической загрузки dld.
GNU make включает почти все средства утилит make из BSD, System V и стандарта POSIX, а также содержит ряд расширений. Распространяется вместе с руководством.
Отладчик GDB может быть использован для отладки программ, написанных на языках Си, Си++ и Фортран. Распространяется вместе с руководством.
BASH (Bourne Again SHell) — GNU Shell совместим со средствами стандартной команды sh ОС Unix и включает ряд расширений, почерпнутых из других вариантов Shell.
GAWK — версия GNU стандартной утилиты AWK ОС Unix.
flex — замена GNU стандартного генератора лексических анализаторов lex. flex позволяет получать более эффективные по сравнению с lex сканеры.
GNU tar — расширенный вариант стандартной архивной утили- ты tar.
Часть файлов из BSD 4.3-tahoe, не содержащих исходные тексты AT нужны также некоторые доделки для возможности использования GDB при отладке программ, написанных на языках, отличных от Си.
3.5. Новые компиляторы
Требуется реализация компиляторов ряда языков программирования (Алгол, Алгол-68, ПЛ/1, Ада и т.д.) с выходом на кодогенератор GCC. (Такие работы для языков Фортран, Паскаль и Модула-2 уже ведутся.)
3.5. Масса других проектов
В текущем списке ближайших задач проекта GNU находится множество других разнообразных работ. Упомянем желание иметь свободные аналоги систем Page Maker, Ventura Pablisher, dbase2 или dbase3 и т.д. Требуется ряд программ для X-Windows. И т.д. и т.п.
4. Как получить более подробную информацию и/или программы GNU
Литература.
- Richard M. Stallman. The GNU Manifesto.
- GNU General Public License // Free Software Foundation, 1989.
- GNU’s Bulletin // Free Software Foundation, 1991.
- GNU Task List (периодически обновляемый файл, доступный по e-mail; мы основывались на версии от 24 июля 1991 г.)
- 21.12 — «Роскосмос» намерен выпустить облигации, чтобы построить два завода для массового выпуска спутников
- 21.12 — Учёные из России и Южной Кореи нашли способ уменьшить светодиоды micro-LED — это позволит повысить разрешение дисплеев
- 21.12 — Разработана «куриная ножка» для посадки дронов на ветки и конструкции
- 21.12 — Европейские регуляторы изучат мнение конкурентов Microsoft по поводу сделки о покупке Activision Blizzard
- 21.12 — Учёные научились выявлять проблемы с дыханием по изменениям в сигналах Wi-Fi
- 21.12 — С нового года Nokia и Ericsson полностью уйдут из России — в будущем это может ухудшить мобильную связь
- 19.12 — Google научила ИИ читать сложный почерк врачей
- 19.12 — В России с февраля сочинения школьников начнёт проверять нейросеть
- 19.12 — Apple, Google и Mozilla совместно разработают новый бенчмарк для браузеров
- 19.12 — Пользователи проголосовали за уход Илона Маска с поста главы Twitter
- 19.12 — Microsoft рассматривает возможность показа «ненавязчивой» рекламы в играх
- 19.12 — Google начала тестировать шифрование электронной почты на стороне клиента
- 16.12 — В России утверждён план импортозамещения ПО, на которое потратят более 200 млрд руб.
- 16.12 — С февраля Роскомнадзор зафиксировал утечку 600 млн записей о россиянах
- 16.12 — В России зарегистрировано объединение, которое займётся поддержкой разработчиков видеоигр
- 16.12 — Microsoft без лишнего шума запретила майнинг криптовалют в облаке Azure
- 16.12 — «Яндекс» представил карты нового поколения
- 16.12 — Безос и Гейтс инвестировали в прямого конкурента Neuralink Маска
- 14.12 — Представлен релиз Firefox 108
- 14.12 — Amazon не стала оспаривать назначенные в России штрафы на сумму в 4 млн рублей
Источник: citforum.ru