# gEDA FAQ

## gEDA - что это за проект?

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

Проект gEDA начал Ales Hvezda весной 1998 г., чтобы улучшить состояние свободного аппаратного обеспечения и открытого аппаратного обеспечения1). За последние десять лет программное обеспечение и сообщество gEDA значительно выросли. Несколько человек участвуют в разработке исходных программ, в то время как другие разрабатывают свои собственные. “gEDA” теперь относится не только к исходным программам (они теперь самостоятельны), но и ко всем свободным проектам, которые как-либо связаны с этой веб-страницей или со списками рассылки gEDA. При присоединении к gEDA авторы свободного программного обеспечения не только ничуть не теряют управления над своими программами, но и усиливают сообщество, которое заботится о качественных и свободных2) программах САПР электроники.

gEDA может произноситься “ги-да” (рифмуется с Лида) или “г-да” (короткое г)3).

## Что такое gEDA/gaf и как это относится к gEDA?

gaf означает “gschem and friends” (gschem и друзья). Это подмножество большого набора программных средств, собранных под названием gEDA. gEDA/gaf — это набор программ, в который в настоящее время входят:

- gschem: программа разработки принципиальных схем
- gnetlist: программа создания списков соединений
- gsymcheck: программа проверки символов электрических схем
- gattrib: программа электронной таблицы для изменения свойств символов в электрических схемах
- libgeda: библиотеки для gschem, gnetlist и gsymcheck
- gsch2pcb: средство прямой трансляции изменений принципиальной схемы в топологию печатной платы для pcb
- несколько второстепенных утилит

Программы gEDA/gaf совместно используют общий формат файла (`.sch`), а также общую библиотеку (libgeda.so). Дистрибутив исходных текстов gEDA/gaf можно найти на сайте http://www.geda-project.org.

Хотя gaf и является наибольшей частью gEDA, название gEDA не относится только лишь к gaf — программные средства, собранные под названием “gEDA”, включают и многие другие программы. На самом деле gEDA относится к любым программным средствам САПР электроники под лицензией GPL, которые решили присоединиться к веб-сайту/списку рассылки gEDA. Важными примерами программных средств gEDA являются программа разработки печатных плат pcb, компилятор Verilog Icarus Verilog, программа моделирования аналоговых схем gnucap и программа SPICE-моделирования с открытым исходным кодом ngspice. gEDA включает и множество других программ.

По историческим причинам на freshmeat gaf известен как пакет “gEDA”.

## Что такое gEDA Suite?

gEDA Suite является набором различных программных средств, которые являются частью, связаны или просто работают с программным обеспечением проекта gEDA. В настоящее время в gEDA Suite входят следующие программы:

- gEDA/gaf – редактирование схем и создание списков соединений
- ngspice – SPICE-моделирование
- gnucap – аналоговое моделирование
- gspiceui – графическая оболочка для ngspice/gnucap
- pcb – разработка печатных плат
- gerbv – программа просмотра Gerber-файлов
- Icarus Verilog – программа моделирования Verilog
- GTKWave – программа просмотра временных диаграмм цифровых сигналов
- wcalc – анализ передающих линий и электромагнитной структуры

## Зачем? Чем gEDA так отличается от других САПР электроники?

Программные средства в gEDA Suite и связанные с gEDA имеют следующие характеристики:

- Бесплатность.
- Все форматы файлов и исходные тексты доступны под лицензией GPL. Эта лицензия даёт особые права авторам и пользователям программного обеспечения.
- Независимость от любого поставщика. Все программы gEDA поставляются с полным набором исходных текстов. Их можно свободно распространять, изменять, улучшать и переносить на другие архитектуры. Можно также распространять и свои изменения, если следовать условиям лицензии GPL.
- Нет никакого механизма ограничения использования данных программ (таких как использование серийных номеров жёстких дисков или ethernet-адресов для принуждения запускать программное обеспечение только на одной машине).
- Никаких специальных ограничений, установленных торговцами. Свободные версии коммерческих программных средств обычно включают особые ограничения (т. е. ограниченный размер проекта, невозможность печати, невозможность экспорта списков соединений и т. д.), уродующие программу и заставляющие серьёзных пользователей покупать полные версии. В противоположность этому программы gEDA полнофункциональны и специальных ограничений на проекты, чтобы выжимать из вас деньги, не накладывают.
- Защита старых версий проектов. Так как программное обеспечение всегда будет доступно и всегда может быть обновлено для работы с обновлённой операционной системой или библиотеками, всегда будет возможность просмотра и редактирования файлов проектов gEDA.
- Открытый процесс разработки. Это означает, что программы взаимодействуют друг с другом с помощью известных и документированных средств (файлов/API). Если хочется, программы можно легко заменить другими или новыми. gEDA Suite — это набор инструментальных средств САПР электроники. Отдельные части слабо связаны друг с другом и конечные пользователи сами вольны настраивать или менять компоненты маршрута проектирования.
- Стабильность. Ошибки, вызывающие отказы, обнаруживаются немедленно и исправляются настолько быстро, насколько это возможно.
- Минимизация размера и ненужных возможностей.
- Работа на большом количестве платформ. Для gEDA/gaf: GNU/Linux, разные другие системы Unix.
- Разрабатываются открытым образом (без секретов).
- Прикладываются усилия по разработке документации.

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

## Почему gEDA Suite кажется набором случайных программ, а не единым интегрированным приложением?

gEDA Suite всё же представляет собой конфедерацию в какой-то степени независимых программ. Это случилось по историческим причинам: Ales Hvezda начал проект gEDA в большей мере самостоятельно. Исходное намерение состояло в том, чтобы произвести полный набор программ для создания печатных плат, чтобы любители робототехники могли проектировать свои собственные платы. Однако, когда проект gEDA развивался, стала видна внушительность этой задачи, и написание многих задуманных приложений даже не началось!

Тем временем другие разработчики программного обеспечения, имеющие свои собственные независимо написанные приложения, не смогли устоять перед таким видением проекта gEDA. Авторы таких приложений присоединились к Ales и помогли проекту своими программами. Одним из таких вкладов была pcb, десятилетняя (на данный момент) программа разработки печатных плат. При добавлении pcb позорно сбежала исходно планируемая в gEDA программа gpcb. В то же самое время другие разработчики добавили средства аналогового и цифрового моделирования, программы просмотра сигналов и так далее.

Таким образом программы gEDA Suite объединились. gEDA Suite отличается не совместно используемым кодом и не общим пользовательским интерфейсом. Скорее, воедино проект связывает общее видение окружения САПР электроники с открытым исходным кодом. Сегодня gEDA Suite является большим набором различных программ, привнесённых разными авторами. Приложения стараются работать вместе и обычно им это удаётся. Но разное происхождение программ в наборе всё же заметно. Несмотря ни на что, небольшое приложение усилий делает различные компоненты набора способными к взаимодействию, и многие выполнили с помощью gEDA Suite довольно сложные проекты плат.

В конце концов, gEDA Suite лучше всего представить как набор инструментальных средств САПР электроники. Такой инструментальный подход даёт конечному пользователю больше свободы. Для своих задач конечные пользователи могут менять или полностью замещать отдельные этапы маршрута проектирования.

## Так что же лучше, набор программ (т. е. конфедерация) или интегрированное приложение?

Это, в конечном счёте, вопрос религии. Здесь я приведу некоторые за и против (как мне это видится) обоих подходов.

### За набор программ (конфедерацию):

- Для каждой стадии проектирования можно использовать приложения “высшего сорта”. Например, для создания печатной платы можно использовать стандартный маршрут проектирования в gEDA: gschem → gsch2pcb → pcb. Однако, если вы на дух не переносите приложение с открытым исходным кодом pcb, можно, например, использовать последовательность: gschem → gnetlist → Protel. Вспомните, что gnetlist может производить более двадцати различных форматов списков соединений! Более того, если вам не нравится какой-то из компонентов маршрута проектирования, вы можете написать другую программу для его замены. Это правда, что в настоящий момент для каждой отдельной задачи есть, как правило, только одно приложение. Но со временем, вероятно, такое положение дел изменится, свидетельством чему являются разветвление проекта pcb, добавление генератора списка соединений gnetman, а также проект HEC. Самое главное, что такой подход, когда используются разные программы, даёт пользователю наибольшую свободу выбора.
- В процессе разработки много естественных точек останова. Например, при завершении работы программы и выдаче выходного файла (т. е. когда gschem выдаёт .sch-файл, или gnetlist — список соединений SPICE). В этой точке процесс разработки легко прервать и написать скрипты для обработки и/или преобразования данных проекта. Для больших, передовых проектов — это большое преимущество “комплектного” подхода. Это преимущество, возможно, нравится только “опытным пользователям”, но отметьте его важность: программные комплексы САПР электроники профессионального класса (Synopsys, Xilinx) работают таким же образом.
- Использование набора приложений можно автоматизировать с помощью Makefile, или даже скрипта на Perl. Разработчики ASIC постоянно занимаются этим в своих средствах проектирования и синтеза. Некоторые пользователи gEDA утверждали в списке рассылки, что они тоже так делают, и отмечали это как важную возможность в gEDA Suite.

### Против набора программ (конфедерации)

- Больше сбивает с толку новых пользователей, так как без посторонней помощи они не могут узнать, что дальше делать. То есть фактически им необходимо прочитать документацию, чтобы узнать, какую программу запускать следующей. В этом случае выручает хорошая документация (поэтому, видимо, вы это и читаете), но документации всегда отдаётся меньший приоритет, нежели разработке интуитивного интерфейса приложения.
- Для разных программ соглашения по интерфейсу различны. То есть организация меню, привязки клавиш клавиатуры и кнопок мыши не соответствуют друг другу. Это может быть неудобно даже тем, кто хорошо знаком с этими программами.
- Так как заранее предположений об используемом маршруте проектирования сделать нельзя, символы для схем обязательно должны быть лёгкими. Это заставляет пользователя тратить больше времени, например, на добавление в свой проект атрибутов посадочных мест. Более того, ещё больше времени уходит на самом деле на то, чтобы разобраться, какие файлы посадочных мест собственно использовать.
- Некоторые разработчики более энергичны, чем прочие, или у них просто больше свободного времени. Поэтому некоторые программы комплекта будут разработаны лучше других (и будут содержать меньше ошибок). К сожалению, одна ненормальная программа может несправедливо исказить представление нового пользователя о наборе в целом.

### За монолитное приложение:

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

### Против монолитного приложения:

- Не бесконечно масштабируемо. Один разработчик не может сделать всё, вне зависимости от того, насколько он умён. Поэтому монолитное приложение никогда не достигнет размера или мощи набора, разработанного конфедерацией программистов.
- Отсутствие выбора. Если разработчику не нравится ваш метод работы, выбора у вас нет. Даже если вы предложите заплаты, чтобы получить возможность использовать свой метод решения задачи, есть вероятность, что основной разработчик проигнорирует или отклонит их. Это, возможно, не вопрос для новичков, но для опытных пользователей это проблема.
- Риск. Если разработчик уйдёт, код останется брошенным и пострадают пользователи. Это в самом деле случилось с программой XTrkCAD, САПР моделей железных дорог. Автор этой программы оставил её разработку, хотя и любезно поместил своё детище на Sourceforge, чтобы программа просто не пропала. К сожалению, без участия исходного разработчика код завял. Предлагаемые проекту заплаты уходили в /dev/null. Наконец коалиция интересующихся пользователей и разработчиков создала ветку кода, чтобы можно было продолжить дальнейшую разработку. Однако работа над веткой несогласована и случайна. (Надеюсь, это когда-нибудь изменится.) Тем временем для обычных пользователей тот факт, что исходный разработчик ушёл, стал катастрофой.

## В программе XXX отсутствует крайне необходимая возможность YYY! Что я могу сделать?

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

Если вы хотите, чтобы новая возможность была реализована в одной из программ gEDA, вот что можно сделать:

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

- Вежливо попросить в списке рассылки gEDA. Если запрашиваемая вами возможность проста или интересна кому-то из разработчиков, возможно кто-нибудь её воплотит. Если она сложна, вероятно, что эта возможность уже обсуждается среди разработчиков, но ни у кого нет достаточного количества свободного времени, чтобы её реализовать. (Также можно запросить возможность через систему отслеживания ошибок Launchpad). Не надоедайте криком или руганью в списках рассылки, так как, вероятно, вы сами будете обруганы и вообще не получите своей возможности. Зачем тратить своё время?

- Если вышеуказанные варианты вам не подходят, наймите разработчика программ с открытым исходным кодом, чтобы он написал нужную вам особенность программы! Удивительно, как часто такая возможность игнорируется. Люди, собирающиеся платить $25000 – $100000 за коммерческие средства САПР электроники упрутся, чтобы заплатить ловкому подростку-программисту $10/час, чтобы он воспроизвёл такие же возможности в gEDA Suite. Почему?.. Если вы преподаватель, рассмотрите наём некоторых студентов для проекта UROP4), чтобы они работали над gEDA. Если у вас свой бизнес, наймите подростка или кого-то, свободного от школы! А если вы хотите компетентной помощи, можете (быстро) обратиться к какому-нибудь из основных разработчиков gEDA, который даст совет.

## Какую лицензию использует gEDA?

Все программные средства и связанные файлы в gEDA будут выпускаться под Стандартной Общественной Лицензией GNU версии 2 (GPL) от Free Software Foundation.

Из лицензии:

“Когда мы говорим о свободном программном обеспечении, мы говорим о свободе, а не о цене. Наши Стандартные Общественные Лицензии разработаны так, чтобы обеспечить вам свободу распространения копий свободного программного обеспечения (и, если хотите, назначать цену за эти услуги), чтобы вы получили исходный код или могли получить его, если вы этого захотите, чтобы вы могли изменять программное обеспечение или использовать его части в новых свободных программах, и чтобы вы знали, что вы можете всё это сделать.”

Яснее не выразить: gEDA — это программное обеспечение под лицензией GPL. Поэтому ничего проприетарного, как например библиотеки электронных компонентов из проприетарных продуктов САПР электроники, вместе с gEDA распространяться не может. Программы конверсии для проприетарных библиотек будут доступны, но все преобразованные файлы, являющиеся частью проприетарных продуктов, никогда не должны попасть в gEDA. Для добавляемых в проект файлов должна быть возможность их распространения под лицензией GPL (или под другой свободной лицензией). Имейте это в виду, если хотите что-то добавить в проект.

Хотя gEDA и фокусируется на GPL, для существующего программного обеспечения более чем приветствуется сочетать с ней и другие, совместимые с GPL лицензии.

Более подробную информацию насчёт используемой проектом gEDA лицензии можно найти на странице про лицензирование.

## Где найти больше информации и откуда загрузить gEDA?

Официальная веб-страница проекта gEDA: http://geda-project.org/.

Есть несколько списков рассылки. Чтобы узнать, как подписаться на них и посылать свои сообщения, посмотрите страницу про списки рассылки.

Вы можете загрузить всё программное обеспечение со страницы загрузки.

Последний комплект документации можно найти на главной странице документации.

## Хорошо, с чего начать освоение gEDA?

Самое важное, что следует сделать, это прочитать один из двух или оба интерактивных учебника и разобраться в них:

- Превосходный учебник gschem -> gsch2pcb -> pcb от Bill Wilson.
- Введение в pcb от DJ Delorie тоже включает основы использования gschem.

Непременно посмотрите и другую документацию gEDA. В этой Wiki содержится руководство по установке и некоторая общая информация по использованию программ. Потратьте немного времени, пролистайте документацию, затем загрузите набор gEDA Suite и попробуйте самостоятельно с ним поработать!

1) Что такое свободное и открытое аппаратное обеспечение, смотрите, например, на веб-странице http://www.opencollector.org/Whyfree/. — Прим. перев.
2) Имеется в виду свобода, а не бесплатность. — Прим. перев.
3) Насчёт произношения даже у основных разработчиков нет единого мнения, так что произносите, как нравится, главное — пишите правильно. — Прим. перев.
4) Undergraduate Research Opportunities Program — программа поддержки студенческих исследовательских работ. — Прим. перев.