Miranda NG:About: Difference between revisions

From Miranda NG
Jump to navigation Jump to search
mNo edit summary
(translation done)
Line 2: Line 2:
'''Miranda NG''' (Next Generation) is a successor of a popular multi-protocol instant messaging client for Windows – Miranda IM.
'''Miranda NG''' (Next Generation) is a successor of a popular multi-protocol instant messaging client for Windows – Miranda IM.


== Protocol Support ==
== Protocol support ==
* {{Plugin/en|AIM}} (AOL Instant Messenger)
* {{Plugin/en|AIM}} (AOL Instant Messenger)
* {{Plugin/en|EmLanProto|Em-LAN}}
* {{Plugin/en|EmLanProto|Em-LAN}}
Line 18: Line 18:
* {{Plugin/en|Yahoo}}
* {{Plugin/en|Yahoo}}


== Supported Operating Systems ==
== Supported operating systems ==
Windows 2000 / 2003 / XP / Vista / 7 / 8
Windows 2000 / 2003 / XP / Vista / 7 / 8


== History ==
== History ==
There was
In spring 2012 the development of Miranda IM reached a deadlock.
In the spring of 2012 the development of Miranda IM came into a stalemate:
# The existing (up to the present) model of Miranda development proved to be totally unsustainable for the following reasons:
#* It usually took over a year for changes in the core to be taken up by the plugin developers and to be finally brought to end users.
#* Plugins' source code was scattered about dozens of repositories, many plugins had no current source code available. Thus, code monitoring by the team was limited, if not to say impossible. As a result some plugins contained unusable, inefficient or buggy code, and no one could fix it.
#* There were lots of compatibility issues between different versions of Miranda core or even between versions of some plugins. This was especially true for implementation of Unicode support which hadn't been finished in Miranda IM.
# There was a conflict between {{Developer|ghazan|George Hazan}} (ghazan) and {{Developer|borkra|Boris Krasnovskiy}} (borkra), the most active Miranda developers at the time. When Boris reverted a fix for his error because the commentary to commit contained the term ''borkred'' – which had been invented by one of the coders to denote Miranda parts broken by Boris – that was the last straw for George.


# Принятая (и по сегодняшний день) модель разработки Миранды оказалась полностью нежизнеспособной по следующим причинам:
In April 2012, George Hazan decided to leave Miranda IM project despite many obvious directions for Miranda development. However, during the negotiations between the various parties it was decided to found a new project led by George.
#* Изменениям в ядре требовалось порядка полутора лет, чтобы быть подхваченными разработчиками плагинов и быть, наконец-то, доведенными до конечных пользователей. В результате возникающие задержки получались огромными.
#* Исходный код плагинов был раскидан по десяткам репозиториев, а для многих плагинов (актуальный) исходный код был вообще недоступен. Это ограничивало или вообще делало невозможным аудит кода плагинов со стороны участником команды. Соответственно, код некоторых плагинов содержит нерабочий, неэффективный или откровенно ошибочный код, и никто не может на это повлиять.
#* Существовал огромный воз проблем с совместимостью между различными версиями ядра Миранды и даже между версиями отдельных плагинов. Особенно это касалось поддержки Unicode, которая в Miranda IM так и не доведена до конца.
# Сложился четко созревший конфликт между двумя оставшимися на тот момент активными разработчиками Миранды: {{Developer|ghazan|Георгием Хазаном}} (ghazan) и {{Developer|borkra|Борисом Красновским}} (borkra), последней каплей которого стал откат Борисом фикса для совершенной им ошибки под тем предлогом, что в комментарии к коммиту был употреблено английское причастие ''borkred'', изобретенное для сломанных им частей Миранды одним из участников проекта (не Георгием).


В результате всего этого в начале апреля 2012 тогдашний куратор ядра Miranda IM Георгий Хазан принял решение покинуть проект, несмотря на наличие множества очевидных направлений развития Миранды. Однако, в процессе переговоров между разными сторонами было принято решение организовать новый проект, под руководством ghazan.
On May 15, 2012 the source code of Miranda core was uploaded to a separate repository and later over a hundred plugins were added. Plugins to port were chosen on the basis of usage frequency and popularity on [http://miranda-vi.org www.miranda-vi.org]. Plugins without actual source code have been left out. After that the source code has undergone more than a thousand changes and the first stable build of Miranda NG was released on August 30, 2012.


15 мая 2012 года исходный код ядра Миранды был залит в отдельный репозиторий, и в него потом было добавлено больше сотни плагинов. Плагины для портирования выбирались по принципу частоты использования и популярности на сайте [http://miranda-vi.org www.miranda-vi.org]. Однозначно исключались плагины, для которых не существовало актуального исходного кода. В последующем в исходные тексты было внесено более полутора тысяч изменений, после чего 30 августа 2012 года был выпущен первый релиз Miranda NG.
By autumn 2012 fifteen members joined the project, at least half of them are actively involved in the development.


Сейчас (осень 2012 года) в проекте зарегистрированы 15 человек, из них минимум половина активно участвуют в разработке.
== Project principles ==
 
* The project includes the core and all the plugins, so that any member of the team can check (and fix if necessary) the code of any plugin.
== Design principles ==
* Every next Miranda NG version is compatible only with itself (i. e., all plugins of the same build are compatible with each other while two adjacent builds can be completely incompatible). This allows for getting rid of bulky code in many parts of Miranda core as well as for global optimization of both the core and the plugins.
* В проект входит не только ядро, но и вообще все плагины, которые могут быть использованы. Это открывает возможность любому члену команды проверить (и при необходимости исправить) код любого плагина.
* ANSI is not supported anymore. Compiling with Visual Studio 2010 and 2012 is supported.
* Каждая конкретная версия Miranda NG совместима только сама с собой (т. е. гарантируется, что все плагины в одной сборке совместимы друг с другом, но две соседние сборки могут быть полностью несовместимы). Это полностью решает все проблемы с совместимостью разных версий, позволяет избавиться от громоздкого кода во многих местах ядра и открывает широчайший простор для глобальной оптимизации как ядра Миранды, так и соответствующих плагинов.
* All the team members have different access rights: some can commit to any code, some can commit only to the plugins' code, some are engaged in the bugtracker and wiki.
* Прекращается поддержка версий ANSI, как полностью морально устаревших. Единственным поддерживаемым компилятором на момент написания статьи является Visual Studio 2010. Возможно, после выхода релиза VS2012, ее поддержка также будет включена в проект.
* Все члены команды имеют разный доступ: кто-то может исправлять только код плагинов, кто-то работает в трекере и вики, кто-то может исправлять любой код.


== Miranda NG advantages ==
== Miranda NG advantages ==
* Подключение и отключение плагинов «на лету», без перезапуска программы;
* Plugins can be loaded/unloaded dynamically ("on the fly") without having to restart the program.
* Повышена скорость запуска и работы программы;
* The speed of program startup and operation was increased.
* Значительно уменьшено потребление ресурсов системы (GDI и оперативной памяти), в т. ч. за счет вынесения неиспользуемых кусков ядра в отдельные модули (папка <tt>Core</tt>).
* The consumption of system resources (GDI and RAM) was significantly reduced. This was achieved through extracting unused parts of the core to separate modules (those were placed into <tt>Core</tt> folder).
* Все плагины находятся в одном репозитории, при изменениях в ядре необходимые правки вносятся сразу, без ожидания реакции разработчиков, которая может длиться месяцами у Miranda IM.
* All plugins are gathered in a single repository, any changes required are applied to them immediately without waiting for the plugin developers' response (which could take months for Miranda IM).
* Проведена достаточно большая работа по унификации — многое из того, что каждый плагин реализовывал самостоятельно, было перенесено в ядро.
* A great deal of work on unification was done – lots of features implemented in several plugins independently were moved to the core.
* Избавление от старых «костылей» и багов, повышающее общую стабильность программы.
* Getting rid of old bugs and "crutches" improves the overall stability of the program.
* Возвращение в разработку Miranda NG кодеров, покинувших или бросивших по тем или иным причинам разработку плагинов под Miranda IM.
* Some coders who abandoned the development of Miranda IM plugins for various reasons now return to Miranda NG development.


== Major features and differences from Miranda IM ==
== Features and differences from Miranda IM ==
* В связи с серьезными изменениями в ядре программы, Miranda NG стала несовместима с плагинами от Miranda IM.
* Due to major changes in the core, Miranda NG is not compatible with plugins for Miranda IM.
* Стандартные модули ядра Miranda NG вынесены в папку <tt>Core</tt> в корне программы. Эти модули не загружаются в память при наличии их «замен» и автоматически подгружаются, если «замена» была отключена. В результате экономится память и уменьшено время загрузки программы. (Miranda IM держит в памяти ненужные модули даже при наличии их альтернатив.)
* The standard Miranda NG core modules were extracted to <tt>Core</tt> folder in the root of the program. These modules are not loaded into memory if their "substitutes" are found in <tt>Plugins</tt> folder. Also, they are automatically loaded when the "substitutes" are being disabled. It saves memory and reduces the load time of the program. (Miranda IM keeps in memory unnecessary modules together with their "substitutes".)
* Отказ от ANSI, ядро и все плагины полностью поддерживают Unicode.
* ANSI is no longer supported. The core and all the plugins support Unicode completely.
* Вместо нескольких тулбаров, реализуемых в каждом плагине контакт-листа по-своему, приведен в порядок и доработан плагин {{Plugin/en|TopToolBar}}.
* The multiple toolbars implemented in each contact list plugin in their own way were replaced with {{Plugin/en|TopToolBar}} plugin which had undergone great changes.
* Dbtool стал плагином. Теперь проверка и сжатие базы данных убрано в сам драйвер базы (в Miranda IM для каждого формата необходимо писать собственный dbtool). Таким образом, {{Plugin/en|DbChecker}} и {{Plugin/en|Import}} теперь только запускают соответствующий драйвер, и больше нет необходимости под каждый драйвер иметь свою «родную» утилиту.
* Dbtool became a plugin. Now database checking and compression are performed by database drivers. (Miranda IM has to have a special dbtool for each database format.) Thus, {{Plugin/en|DbChecker}} and {{Plugin/en|Import}} plugins just run the appropriate driver and there is no need to have a special tool for each driver.
* {{Plugin/en|PluginUpdater}} — «синхронизатор» плагинов с официальным репозиторием.
* There is {{Plugin/en|PluginUpdater}} – plugin to keep your Miranda NG up-to-date.
* Функционал плагина {{Plugin/en|ExtraIcons}} перенесён в ядро.
* {{Plugin/en|ExtraIcons}} plugin was moved into the core.


== See also ==
== See also ==
* [[Changelog|Miranda NG changelog]]
* [[Help|Frequently Asked Questions]]
* [[Help|Frequently Asked Questions]]


== External links ==
== External links ==
* [http://bugs.miranda-ng.org/roadmap Miranda NG Roadmap]
* [http://bugs.miranda-ng.org/roadmap Miranda NG Roadmap]

Revision as of 00:32, 5 March 2013

Template:Languages/About Miranda NG (Next Generation) is a successor of a popular multi-protocol instant messaging client for Windows – Miranda IM.

Protocol support

Supported operating systems

Windows 2000 / 2003 / XP / Vista / 7 / 8

History

In spring 2012 the development of Miranda IM reached a deadlock.

  1. The existing (up to the present) model of Miranda development proved to be totally unsustainable for the following reasons:
    • It usually took over a year for changes in the core to be taken up by the plugin developers and to be finally brought to end users.
    • Plugins' source code was scattered about dozens of repositories, many plugins had no current source code available. Thus, code monitoring by the team was limited, if not to say impossible. As a result some plugins contained unusable, inefficient or buggy code, and no one could fix it.
    • There were lots of compatibility issues between different versions of Miranda core or even between versions of some plugins. This was especially true for implementation of Unicode support which hadn't been finished in Miranda IM.
  2. There was a conflict between ghazan (ghazan) and borkra (borkra), the most active Miranda developers at the time. When Boris reverted a fix for his error because the commentary to commit contained the term borkred – which had been invented by one of the coders to denote Miranda parts broken by Boris – that was the last straw for George.

In April 2012, George Hazan decided to leave Miranda IM project despite many obvious directions for Miranda development. However, during the negotiations between the various parties it was decided to found a new project led by George.

On May 15, 2012 the source code of Miranda core was uploaded to a separate repository and later over a hundred plugins were added. Plugins to port were chosen on the basis of usage frequency and popularity on www.miranda-vi.org. Plugins without actual source code have been left out. After that the source code has undergone more than a thousand changes and the first stable build of Miranda NG was released on August 30, 2012.

By autumn 2012 fifteen members joined the project, at least half of them are actively involved in the development.

Project principles

  • The project includes the core and all the plugins, so that any member of the team can check (and fix if necessary) the code of any plugin.
  • Every next Miranda NG version is compatible only with itself (i. e., all plugins of the same build are compatible with each other while two adjacent builds can be completely incompatible). This allows for getting rid of bulky code in many parts of Miranda core as well as for global optimization of both the core and the plugins.
  • ANSI is not supported anymore. Compiling with Visual Studio 2010 and 2012 is supported.
  • All the team members have different access rights: some can commit to any code, some can commit only to the plugins' code, some are engaged in the bugtracker and wiki.

Miranda NG advantages

  • Plugins can be loaded/unloaded dynamically ("on the fly") without having to restart the program.
  • The speed of program startup and operation was increased.
  • The consumption of system resources (GDI and RAM) was significantly reduced. This was achieved through extracting unused parts of the core to separate modules (those were placed into Core folder).
  • All plugins are gathered in a single repository, any changes required are applied to them immediately without waiting for the plugin developers' response (which could take months for Miranda IM).
  • A great deal of work on unification was done – lots of features implemented in several plugins independently were moved to the core.
  • Getting rid of old bugs and "crutches" improves the overall stability of the program.
  • Some coders who abandoned the development of Miranda IM plugins for various reasons now return to Miranda NG development.

Features and differences from Miranda IM

  • Due to major changes in the core, Miranda NG is not compatible with plugins for Miranda IM.
  • The standard Miranda NG core modules were extracted to Core folder in the root of the program. These modules are not loaded into memory if their "substitutes" are found in Plugins folder. Also, they are automatically loaded when the "substitutes" are being disabled. It saves memory and reduces the load time of the program. (Miranda IM keeps in memory unnecessary modules together with their "substitutes".)
  • ANSI is no longer supported. The core and all the plugins support Unicode completely.
  • The multiple toolbars implemented in each contact list plugin in their own way were replaced with Template:Plugin/en plugin which had undergone great changes.
  • Dbtool became a plugin. Now database checking and compression are performed by database drivers. (Miranda IM has to have a special dbtool for each database format.) Thus, Template:Plugin/en and Template:Plugin/en plugins just run the appropriate driver and there is no need to have a special tool for each driver.
  • There is Template:Plugin/en – plugin to keep your Miranda NG up-to-date.
  • Template:Plugin/en plugin was moved into the core.

See also

External links