Введение

Бесплатный и открытый мультиплатформенный клиент мгновенных сообщений

Мгновенный мессенджер

Pidgin (ранее известный как Gaim) – это бесплатный и открытый мультиплатформенный клиент мгновенных сообщений, основанный на библиотеке libpurple, поддерживающей множество протоколов мгновенных сообщений. Это позволяет пользователю одновременно подключаться к различным сервисам из одного приложения, используя единый интерфейс как для популярных, так и для устаревших протоколов (от AIM до Discord), избавляя от необходимости использовать различное программное обеспечение для каждого устройства и протокола. По состоянию на 2007 год количество пользователей Pidgin оценивалось более чем в три миллиона. Pidgin широко используется благодаря плагину Off the Record Messaging (OTR), обеспечивающему сквозное шифрование. Именно поэтому он включен в операционную систему Tails, ориентированную на конфиденциальность и анонимность.

История

Программа была первоначально написана Марком Спенсером, студентом второго курса Университета Оберна, как эмуляция программы AOL Instant Messenger на Linux с использованием инструментария GTK+. Самый ранний архивный релиз состоялся 31 декабря 1998 года. Соответственно, она была названа GAIM (GTK+ AOL Instant Messenger). Эмуляция не основывалась на обратной разработке, а использовала информацию о протоколе, опубликованную AOL в сети Интернет. В разработке помогали некоторые технические специалисты AOL. Вскоре после этого была добавлена поддержка других протоколов обмена мгновенными сообщениями. Проект получил высокую оценку за шифрование сообщений при передаче, шифрование сообщений ключами, недоступными провайдерам (сквозное шифрование), возможность для пользователей независимо проверять личность своих корреспондентов, обеспечение безопасности переписки в случае кражи ключей (прямая секретность), открытый исходный код, позволяющий проводить независимую проверку, хорошо документированные принципы безопасности и недавние независимые аудиты безопасности. 6 апреля 2007 года команда разработчиков проекта объявила об урегулировании спора с AOL, которое включало в себя ряд изменений названий: Gaim стал Pidgin, libgaim стал libpurple, а gaim text (версия с интерфейсом командной строки) стала Finch. Название Pidgin было выбрано в связи с термином "pidgin" (лингва франка), описывающим общение между людьми, не владеющими общим языком. Название "purple" отсылает к "prpl" – внутреннему обозначению IM-протокола в libgaim. Из-за юридических проблем версия 2.0 программного обеспечения была заморожена на стадии бета-тестирования. После урегулирования было объявлено, что первый официальный релиз Pidgin 2.0.0 ожидается в течение двух недель с 8 апреля 2007 года. Однако Pidgin 2.0 не был выпущен в запланированный срок; разработчики Pidgin объявили 22 апреля 2007 года, что задержка связана с каталогом настроек ".gaim". Pidgin 2.0.0 был выпущен 3 мая 2007 года. В этой версии были внесены другие визуальные изменения в интерфейс, включая обновленные значки.

Особенности

Pidgin предоставляет графический интерфейс для libpurple, использующий GTK+. Libpurple поддерживает множество протоколов мгновенных сообщений. Pidgin работает на различных операционных системах, включая Windows и многие Unix-подобные системы, такие как Linux, BSD и AmigaOS. Он предустановлен в операционных системах Tails, Trisquel и Xubuntu.

Подключаемость

Программа разработана с возможностью расширения посредством плагинов. Плагины зачастую создаются сторонними разработчиками. Их можно использовать для добавления поддержки протоколов, что особенно полезно для сервисов вроде Skype или Discord, имеющих проблемы с лицензированием (однако данные пользователей и их взаимодействие всё равно регулируются политикой этих сервисов и могут подвергаться прослушиванию). Они также могут добавлять другие значительные функции. Например, плагин "Off the Record Messaging" (OTR) обеспечивает сквозное шифрование. Система шифрования TLS имеет модульную структуру, позволяющую легко заменять различные TLS-библиотеки. GnuTLS используется по умолчанию, также поддерживается NSS. Некоторые порты операционных систем, например OpenBSD, по умолчанию используют OpenSSL или LibreSSL.

Контакты

Контакты, использующие несколько протоколов, могут быть объединены в один контакт вместо управления ими по отдельности, а контактам можно присваивать псевдонимы или объединять их в группы. Для автоматического уведомления пользователей при входе в систему или изменении статуса (например, с "Не на месте" на "Доступен"), Pidgin поддерживает автоматические скрипты, выполняемые при определенных событиях, называемые Buddy Pounces, для автоматического обращения к пользователю различными настраиваемыми способами.

Передача файлов

Pidgin поддерживает передачу файлов по множеству протоколов. Прямая передача файлов между пользователями поддерживается через такие протоколы, как XMPP.

Голосовой и видеочат

Начиная с версии 2.6 (выпущенной 18 августа 2009 года), Pidgin поддерживает голосовые и видеозвонки с использованием Farstream. Начиная с 2015 года, звонки можно инициировать только через протокол XMPP.

Разное

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

Критика

Как отмечалось в Wired в 2015 году, кодовая база libpurple "известна обилием уязвимостей в системе безопасности". В 2011 году уязвимости безопасности уже были обнаружены в популярных плагинах OTR, использующих libpurple. Начиная с версии 2.4 и более поздних, возможность ручного изменения размера поля ввода текста в окне чата была удалена. Это привело к созданию форка Carrier (первоначально названного Funpidgin). Пароли хранятся в файле в открытом виде, который может прочитать любой пользователь или программа, имеющая доступ к файлам пользователя. Версия 3.0 Pidgin (дата выпуска не объявлена) будет поддерживать хранение паролей в системных хранилищах ключей, таких как KWallet и GNOME Keyring для Linux, Keychain для macOS и winCred API для Windows. В настоящее время Pidgin не поддерживает приостановку или повторную попытку передачи файлов. Pidgin не позволяет отключить сортировку контактов по группам в списке контактов.