Относительно недавно прочитал одновременно в нескольких блогах и форумах высказывания о том что, мол, Миранда уже не та что была раньше — из легковесного, простого клиента — легенды начала века она превратилась в тяжелого, глюкавого, увешанного рюшечками монстра.
В этом топике я постараюсь рассказать о том с чего все начиналось; в каком именно направлении развивается клиент, для кого, как и кем это делается, а главное — чего ждать дальше
Хронологию развития можно почитать в википедии, поэтому здесь я покажу ее виденье «изнутри».
Миранда родилась в 2000 году как легковесный клон аськи. Действительно простой и легковесный — никаких плагинов, профилей, истории, фишек и сладостей. Ее автор, кстати — один из ведущих разработчиков ACDSee, FigBug, вскоре бросил проект и его подобрали другие люди. С 2001го до 2005й год основной девелоперский состав неоднократно менялся, дополнялся и утрясался. В 2005 ушла на золото 0.4я ветка. Это уже была та самая миранда, которую мы привыкли видеть. За это время появились развитая модульная система, сервисно-событийная модель, многопротокольность, знаменитый clist_modern, отвечающий за внешний вид главного окна и дающий потрясающие возможности для его оформления. Количество плагинов в аддонсах стало исчисляться сотнями, кроме того появился mBot, позволяющий писать скрипты на php, что дало возможность расширять функционал прямо на ходу. Всеми любимый альтернативный ISee, модуль ICQ, довольно шустро работающий с серверами и поддерживающий расширенное меню видимости, а так же проверку на невидимость, за что он и ценился многими. Правда вскоре он умер, в связи с отсутствием времени и интереса у автора.
В вышедшей год спустя пятой ветке появилось разделение на юникодные и ансишные билды, в ядре и протоколах появилась поддержка хранения и передачи сообщений в юникоде. Модуль icq научился работать с прямыми (p2p) соединениями и поддерживать MD5 логин. Уже можно было найти кучу красивой графики и разнообразных сборок. Была доступна Secured модификация стандартной базы данных, позволяющая зашифровывать файл профиля.
В декабре этого же года появляется релиз 0.6. Основным его нововведением считается поддержка UPnP — прямые соединения протоколы могут устанавливать и за NAT роутерами, с поддержкой этой технологии. Базы данных поддерживают хранение данных в utf8, однако оно необязательно. API для плагинов предоставил работу с памятью. Кроме того, к моменту завершения работы над версией 0.5 возникла угроза, что разные куски миранды расползутся слишком далеко. Это не означает что с гибкостью нужно бороться, но ключевые вещи должны быть унифицированы и одинаковы, в связи с чем шестая ветвь по большей части была связана с рефакторингом ядра и началом разработки новых интерфейсов. В частности появился интерфейс модуля контакт листа, в нем сведены в одну систему многие вещи, и весь общий код перенесен в ядро
Рожденная чуть больше года назад, 7я версия принесла много изменений. Это переписанная система меню, внесение FontService и IcoLib в ядро. В базовую поставку стали входить плагины для работы с изображениями и менеджер аватаров. Модульный интерфейс был изменен, и теперь плагины должны идентифицировать себя и предоставляемые функции с помощью уникальных идентификаторов (UUID). Хранение строк в базе принудительно переведено на UTF8, что вызвало много проблем со старыми заброшенными плагинами и поврежденными базами, но со временем эти плагины были залатаны добровольцами, а базы — пофикшены. Протокол Jabber перешел в стадию активного развития, его интерфейс качественно переработан и пригоден для каждодневного комфортного использования.
Появилась модификация memory-mapped базы, позволившая совместить автобакап профиля и шифрование с преимуществами высокой скорости этой технологии.
Вообще версии 0.6 и 0.7 были целиком посвящены рефакторингу ядра. При этом, несмотря на то, что размер ядра постоянно увеличивался, суммарный размер дистрибутива постоянно уменьшался. Все стандартизированные интерфейсы миранды появились именно в них.
Сейчас над Мирандой постоянно трудится наша команда слегка помешанных на ней программистов-добровольцев, делающих клиент своей мечты. Это:
ghazan, он присоединился к проекту в 2002 году. Изначально работал над MSN`ом, со временем перешел на Jabber, а сейчас активно занимается ядром и модулями хранящимися в центральном svn. Пожалуй самый опытный наш разработчик, общепризнанный лидер
FYR помешан с апреля 2004го. Он занимается модулем clist_modern, это самый объемный (порядка двух мегабайт сишного кода) и самый красивый модуль, заставляющий дизайнеров интерфейса других IM клиентов нервно вздыхать. Еще он написал модуль AniSmiley, используемый для анимации смайлов в Emoticons
nullbie в 2004м начал работу над модификацией модуля всплывающих окон PopUp, широко известного сейчас PopUp+. Именно он ввел в Jabber новый человекоприятный интерфейс и продолжает работу над этим протоколом. Так же занимается проблемой нового интерфейса опций
mlu, в прошлом довольно известный асечник, возненавидев ее, пришел к нам весной 2007го и активно занимается развитием внутренней части жаббера. Во многом за развитие и свежие идеи для модуля стоит благодарить именно его
Vasilich интересуется протоколом IRC, и в последнее время тоже не мало сделал для него. Его руке принадлежит модуль UseActions позволяющий добавить запрограммированное с помощью ActMan в любую часть миранды.
theMIROn с 2006 года развивает эргономичный модуль работы с историей History++
Joe довольно давно работает над протоколом ICQ, поддерживая его на должном уровне, благодаря чему он так популярен в миранде
Awkward известен плагином WaTrack (сентябрь 2005го), собирающем информацию о воспроизведении практически из любого проигрывателя; QuickSearch для быстрого поиска по контактам; менеджер программируемых действий ActMan и альтернативный движок хоткеев HotKey
baloo позволил повысить приватность общения с помощью модуля on-the-fly шифрования SecureIM
rainwater пришел одним из первых, в 2002м. Он занимается пассивным развитием ядра, а так же модулем БД db_rw, работающем SQLite. Самый ярый сторонник минимизации всего чего только можно
Bio с самого начала работал над альтернативной версией модуля icq, тогда еще встроенного в миранду — ISee. Так же его руке принадлежат такие полезные плагины как DBEditor++, Console, и так мной любимый dbx_mmap
sss в 2006м смог поднять объединенный мод ISee и ICQj — ICQ+, несущий много вкусностей для протокола, одной из который являлась подмена идентификатора клиента
persei, то есть я, в конце 2006го заинтересовался развитием ICQ+, время от времени добавляя в него новый функционал и выпрямляя код. Вместе с FYR`ом выпустил шифрованную модификацию mmap базы. Сейчас занимаюсь борьбой со спамом и поглядываю в сторону разработки jabber`a. Администрирую miranda.im
faith_healer наш спонсор и в прошлом известный сборщик. Сейчас начал ковырять свой Fingerprint Mod
Этот список можно продолжать до бесконечности, простите если кого то обидел :)
Все же вернусь к тому, с чего начинал. Итак, какая же она, современная Миранда?
Я надеюсь многие уже поняли, что миранда — это уже давно не просто легкая аська. Эту стадию она давно переросла. Miranda IM- это конструктор, позволяющий достичь практически любого результата. В принципе вы можете выбрать набор базовых классических плагинов и получить минималистичный интерфейс и современные протоколы. Но тем не менее, это направление нами не развивается, ибо для нас оно не перспективно и неинтересно — мы заинтересованы в быстром, но красивом и функциональном мессенджере. Легковесное направление уже полностью исчерпало себя. Я не говорю что нормальная сборка должна весить 50 Мб, я говорю о том что развивать минималистичный функционал бессмысленно — он перестает быть минималистичным. Поэтому сейчас миранда развивается в сторону увеличения возможностей, а главное — удобства в их использовании. Это не монстр — вы можете отключить практически все ненужное, а не отключаемые элементы обычно расположены так, что либо не мешают, либо их можно просто не отображать
9 октября вышел 23й альфа билд восьмой рабочей ветки, включавший в себя небольшую порцию фиксов для тестеров.
В восьмой версии впервые за три года после выхода 0.5 в ядре начинают появляться абсолютно новые вещи. Рефакторинг после длительно активного этапа начинает постепенно сходить на нет, хотя ему тоже уделяется большое внимание.
Сейчас реализована поддержка нового интерфейса протоколов, позволяющая работать с учетными записями не выходя из миранды и не копируя dll — теперь протокол это объект, который можно создавать и удалять на ходу.
Плагинный интерфейс, введенный в 7й ветке, требует доработки и полного перевода системы на него, это станет одной из неотъемлемых черт новой ветки. Далее будет переписан загрузчик модулей, что возможно позволит осуществлять установку и удаление модулей прямо на лету.
API базы данных будет внесено в ядро, что позволит организовать быстрое кеширование и увеличение производительности операций с профилем.
Планируется перевод ядра и некоторых плагинов с C на C++, что при современном объеме кода необходимо, и значительно упростит дальнейшие разработки
Отдельно мы ставим проблему эргономичности и простоты настроек, за которые нас обычно ругают. Пока мы внедрили простой поиск по опциям, однако планируем сделать упрощенный вариант — своеобразный визард с группировкой элементов (подробнее про это можно почитать здесь)
Есть планы для создания небольшой системы оповещений уровня ядра, что то вроде сильно облегченного PopUp+
FYR думает над концептом нового движка для clist_modern — из вкусностей стоит ждать интерактивности элементов, хранение данных в xml формате и, возможно, поддержку скриптов
Спасибо за внимание :)
PS. Спасибо ghazan`у за ремарки и коррективы к статье — я использовал некоторые его реплики
В этом топике я постараюсь рассказать о том с чего все начиналось; в каком именно направлении развивается клиент, для кого, как и кем это делается, а главное — чего ждать дальше
Экскурс в историю
Хронологию развития можно почитать в википедии, поэтому здесь я покажу ее виденье «изнутри».
Миранда родилась в 2000 году как легковесный клон аськи. Действительно простой и легковесный — никаких плагинов, профилей, истории, фишек и сладостей. Ее автор, кстати — один из ведущих разработчиков ACDSee, FigBug, вскоре бросил проект и его подобрали другие люди. С 2001го до 2005й год основной девелоперский состав неоднократно менялся, дополнялся и утрясался. В 2005 ушла на золото 0.4я ветка. Это уже была та самая миранда, которую мы привыкли видеть. За это время появились развитая модульная система, сервисно-событийная модель, многопротокольность, знаменитый clist_modern, отвечающий за внешний вид главного окна и дающий потрясающие возможности для его оформления. Количество плагинов в аддонсах стало исчисляться сотнями, кроме того появился mBot, позволяющий писать скрипты на php, что дало возможность расширять функционал прямо на ходу. Всеми любимый альтернативный ISee, модуль ICQ, довольно шустро работающий с серверами и поддерживающий расширенное меню видимости, а так же проверку на невидимость, за что он и ценился многими. Правда вскоре он умер, в связи с отсутствием времени и интереса у автора.
В вышедшей год спустя пятой ветке появилось разделение на юникодные и ансишные билды, в ядре и протоколах появилась поддержка хранения и передачи сообщений в юникоде. Модуль icq научился работать с прямыми (p2p) соединениями и поддерживать MD5 логин. Уже можно было найти кучу красивой графики и разнообразных сборок. Была доступна Secured модификация стандартной базы данных, позволяющая зашифровывать файл профиля.
В декабре этого же года появляется релиз 0.6. Основным его нововведением считается поддержка UPnP — прямые соединения протоколы могут устанавливать и за NAT роутерами, с поддержкой этой технологии. Базы данных поддерживают хранение данных в utf8, однако оно необязательно. API для плагинов предоставил работу с памятью. Кроме того, к моменту завершения работы над версией 0.5 возникла угроза, что разные куски миранды расползутся слишком далеко. Это не означает что с гибкостью нужно бороться, но ключевые вещи должны быть унифицированы и одинаковы, в связи с чем шестая ветвь по большей части была связана с рефакторингом ядра и началом разработки новых интерфейсов. В частности появился интерфейс модуля контакт листа, в нем сведены в одну систему многие вещи, и весь общий код перенесен в ядро
Рожденная чуть больше года назад, 7я версия принесла много изменений. Это переписанная система меню, внесение FontService и IcoLib в ядро. В базовую поставку стали входить плагины для работы с изображениями и менеджер аватаров. Модульный интерфейс был изменен, и теперь плагины должны идентифицировать себя и предоставляемые функции с помощью уникальных идентификаторов (UUID). Хранение строк в базе принудительно переведено на UTF8, что вызвало много проблем со старыми заброшенными плагинами и поврежденными базами, но со временем эти плагины были залатаны добровольцами, а базы — пофикшены. Протокол Jabber перешел в стадию активного развития, его интерфейс качественно переработан и пригоден для каждодневного комфортного использования.
Появилась модификация memory-mapped базы, позволившая совместить автобакап профиля и шифрование с преимуществами высокой скорости этой технологии.
Вообще версии 0.6 и 0.7 были целиком посвящены рефакторингу ядра. При этом, несмотря на то, что размер ядра постоянно увеличивался, суммарный размер дистрибутива постоянно уменьшался. Все стандартизированные интерфейсы миранды появились именно в них.
Кто все эти люди?!
Сейчас над Мирандой постоянно трудится наша команда слегка помешанных на ней программистов-добровольцев, делающих клиент своей мечты. Это:
ghazan, он присоединился к проекту в 2002 году. Изначально работал над MSN`ом, со временем перешел на Jabber, а сейчас активно занимается ядром и модулями хранящимися в центральном svn. Пожалуй самый опытный наш разработчик, общепризнанный лидер
FYR помешан с апреля 2004го. Он занимается модулем clist_modern, это самый объемный (порядка двух мегабайт сишного кода) и самый красивый модуль, заставляющий дизайнеров интерфейса других IM клиентов нервно вздыхать. Еще он написал модуль AniSmiley, используемый для анимации смайлов в Emoticons
nullbie в 2004м начал работу над модификацией модуля всплывающих окон PopUp, широко известного сейчас PopUp+. Именно он ввел в Jabber новый человекоприятный интерфейс и продолжает работу над этим протоколом. Так же занимается проблемой нового интерфейса опций
mlu, в прошлом довольно известный асечник, возненавидев ее, пришел к нам весной 2007го и активно занимается развитием внутренней части жаббера. Во многом за развитие и свежие идеи для модуля стоит благодарить именно его
Vasilich интересуется протоколом IRC, и в последнее время тоже не мало сделал для него. Его руке принадлежит модуль UseActions позволяющий добавить запрограммированное с помощью ActMan в любую часть миранды.
theMIROn с 2006 года развивает эргономичный модуль работы с историей History++
Joe довольно давно работает над протоколом ICQ, поддерживая его на должном уровне, благодаря чему он так популярен в миранде
Awkward известен плагином WaTrack (сентябрь 2005го), собирающем информацию о воспроизведении практически из любого проигрывателя; QuickSearch для быстрого поиска по контактам; менеджер программируемых действий ActMan и альтернативный движок хоткеев HotKey
baloo позволил повысить приватность общения с помощью модуля on-the-fly шифрования SecureIM
rainwater пришел одним из первых, в 2002м. Он занимается пассивным развитием ядра, а так же модулем БД db_rw, работающем SQLite. Самый ярый сторонник минимизации всего чего только можно
Bio с самого начала работал над альтернативной версией модуля icq, тогда еще встроенного в миранду — ISee. Так же его руке принадлежат такие полезные плагины как DBEditor++, Console, и так мной любимый dbx_mmap
sss в 2006м смог поднять объединенный мод ISee и ICQj — ICQ+, несущий много вкусностей для протокола, одной из который являлась подмена идентификатора клиента
persei, то есть я, в конце 2006го заинтересовался развитием ICQ+, время от времени добавляя в него новый функционал и выпрямляя код. Вместе с FYR`ом выпустил шифрованную модификацию mmap базы. Сейчас занимаюсь борьбой со спамом и поглядываю в сторону разработки jabber`a. Администрирую miranda.im
faith_healer наш спонсор и в прошлом известный сборщик. Сейчас начал ковырять свой Fingerprint Mod
Этот список можно продолжать до бесконечности, простите если кого то обидел :)
Пофилософствуем
Все же вернусь к тому, с чего начинал. Итак, какая же она, современная Миранда?
Я надеюсь многие уже поняли, что миранда — это уже давно не просто легкая аська. Эту стадию она давно переросла. Miranda IM- это конструктор, позволяющий достичь практически любого результата. В принципе вы можете выбрать набор базовых классических плагинов и получить минималистичный интерфейс и современные протоколы. Но тем не менее, это направление нами не развивается, ибо для нас оно не перспективно и неинтересно — мы заинтересованы в быстром, но красивом и функциональном мессенджере. Легковесное направление уже полностью исчерпало себя. Я не говорю что нормальная сборка должна весить 50 Мб, я говорю о том что развивать минималистичный функционал бессмысленно — он перестает быть минималистичным. Поэтому сейчас миранда развивается в сторону увеличения возможностей, а главное — удобства в их использовании. Это не монстр — вы можете отключить практически все ненужное, а не отключаемые элементы обычно расположены так, что либо не мешают, либо их можно просто не отображать
Что дальше?
9 октября вышел 23й альфа билд восьмой рабочей ветки, включавший в себя небольшую порцию фиксов для тестеров.
В восьмой версии впервые за три года после выхода 0.5 в ядре начинают появляться абсолютно новые вещи. Рефакторинг после длительно активного этапа начинает постепенно сходить на нет, хотя ему тоже уделяется большое внимание.
Сейчас реализована поддержка нового интерфейса протоколов, позволяющая работать с учетными записями не выходя из миранды и не копируя dll — теперь протокол это объект, который можно создавать и удалять на ходу.
Плагинный интерфейс, введенный в 7й ветке, требует доработки и полного перевода системы на него, это станет одной из неотъемлемых черт новой ветки. Далее будет переписан загрузчик модулей, что возможно позволит осуществлять установку и удаление модулей прямо на лету.
API базы данных будет внесено в ядро, что позволит организовать быстрое кеширование и увеличение производительности операций с профилем.
Планируется перевод ядра и некоторых плагинов с C на C++, что при современном объеме кода необходимо, и значительно упростит дальнейшие разработки
Отдельно мы ставим проблему эргономичности и простоты настроек, за которые нас обычно ругают. Пока мы внедрили простой поиск по опциям, однако планируем сделать упрощенный вариант — своеобразный визард с группировкой элементов (подробнее про это можно почитать здесь)
Есть планы для создания небольшой системы оповещений уровня ядра, что то вроде сильно облегченного PopUp+
FYR думает над концептом нового движка для clist_modern — из вкусностей стоит ждать интерактивности элементов, хранение данных в xml формате и, возможно, поддержку скриптов
Спасибо за внимание :)
PS. Спасибо ghazan`у за ремарки и коррективы к статье — я использовал некоторые его реплики