Today I want to tell you about the release of the second stable release of the IM messenger
Miranda NG , the fork of Miranda IM, created by former kernel developers and a number of plug-ins.

Stable builds:
http://www.miranda-ng.org/distr/stable/')
SourceResource with all ported pluginsTrackerAncestor article containing a small FAQ for “an introduction to the case”
The website and the wiki are now under active development and content filling, there is still a lot of work ahead, but the team is full of ideas and enthusiasm, so do not judge strictly.
History, differences and other information under the cut.
Why did you need to fork?
By the spring of 2012, a stalemate had developed in the development of Miranda IM, since the adopted (and still existing) Miranda development model turned out to be completely unviable for the following reasons:
- Changes in the core took about one and a half years to be picked up by plug-in developers and finally brought to the end users. As a result, the resulting delays were huge.
- Secondly, the source code of the plugins was scattered across dozens of repositories, and for many plugins the (up-to-date) source code was completely unavailable. This limited or even made it impossible to audit the plugin code from the team member. Accordingly, the code of some plug-ins contains a non-working, inefficient or frankly erroneous code, and no one can influence it.
- Thirdly, there was a huge potential for problems with compatibility between different versions of the Miranda core and even between versions of individual plug-ins. This was especially true for Unicode support, which was never completed in Miranda IM.
In addition, there was a well-established conflict between the two remaining active developers of Miranda at the time: Georgy Khazan (
ghazan ) and Boris Krasnovsky (
borkra ), the last straw of which was the reversal of Boris Fix for his mistake under the pretext that in the comment to the commit The English participle “borkred” was invented, invented for parts of the Miranda that it had broken by one of the project participants (not George).
As a result of all this, at the beginning of April 2012, the then core curator of Miranda IM, George Hazan, decided to leave the project, despite the presence of many obvious directions for Miranda’s development.
However, in the process of negotiations between different parties, it was decided to organize a new project, under the leadership of
ghazan , based on the following principles:
- The project includes not only the core, but in general all the plugins that can be used. this makes it possible for any member of the team to check (and, if necessary, correct) the code of any plug-in;
- Each specific version of Miranda NG is compatible only with itself (i.e. it is guaranteed that all the plugins in the same assembly are compatible with each other, but two adjacent assemblies can be completely incompatible). This completely solves all the problems with compatibility of different versions, allows you to get rid of cumbersome code in many places of the kernel and opens up the widest scope for global optimization of both the Miranda core and the corresponding plug-ins.
- Support for ANSI versions is completely obsolete. The only supported compiler at the time of this writing is Visual Studio 2010. It is possible that after the release of VS2012, its support will also be included in the project.
- All team members have different access: someone can fix only the plug-in code, someone works in the tracker and wiki, someone can fix any code.
So On May 15, 2012, the source code of the Miranda kernel was uploaded to a separate repository, over time more than a hundred plugins were added to it. Subsequently, more than one and a half thousand changes were made to the source texts, after which on August 30, 2012, the first release of
Miranda NG was released.
Now 15 people are registered in the project, at least half of them are actively involved in the development.
What's new?
An almost complete revision of the code of both the kernel and the ported plug-ins was made (most of them were chosen according to the principle of frequency of use and popularity on the site
www.miranda-vi.org ). Plugins for which there was no actual source code were definitely excluded. Therefore, it makes no sense to describe all minor changes and bugfixes. It is easiest to read the full changelog in
svn .
In this article I will list only the main and fundamental changes.
The main advantages (at the moment) Miranda NG in front of Miranda IM
- Connecting and disconnecting plug-ins on the fly, without restarting the program;
- Increased speed of launch and operation of the program;
- Significantly reduced consumption of system resources (GDI and RAM), incl. due to the removal of unused pieces of the kernel in separate modules (folder. \ Core)
- All plugins are in the same repository, with changes in the kernel, the necessary edits are made immediately, without waiting for the developer’s reaction, which can last for months for Miranda IM.
- A lot of unification work was done - much of what each plugin implemented on its own was transferred to the microkernel ( mir_core.dll ).
- Getting rid of many old “crutches” and bugs, which increases the overall stability of the program.
- Return to the development of Miranda NG coders, who left or abandoned for one reason or another the development of plug-ins for Miranda IM.
- To be continued ...
Features and differences Miranda NG
- Due to major changes in the core of the program, Miranda NG has become incompatible with plug-ins from Miranda IM.
- Core folder in the root of the program - standard modules removed from the kernel that are not loaded into memory when there are “replacements” and are automatically loaded if the “replacement” has been disabled.
- Instead of several toolbars implemented in each plug-in of the contact list in its own way, the TopToolBar plugin is put in order and brought to mind
- DBtool has become a plugin
- Waiver of ANSI, the kernel and all plugins fully support Unicode.
- The second stable release included a completely reworked MRA protocol, completely unicode and with support for user accounts.
- To be continued ...
How to “move” to Miranda NG with Miranda IM?
There is nothing simpler: you just need to “attach” the old profile to
Miranda NG (retaining, of course, the folder structure) or replace all plug-ins and the kernel (not forgetting the Core folder and the mir_core.dll library in the root) with new ones from
the project site .
All the old settings, appearance, contact history, etc. will remain intact and the same. IM and NG profiles are
fully compatible.
What plans do you have for the future?
In the near future we plan to implement:
- Virtual contacts (weather, mail etc) + native support for MetaContacts by the core
- Nuclear encryption, burglar-resistant profiles based on the usual dbx_mmap - driver
- Tidying Jabber and all its Level 2 plugins
- A separate plugin for Miranda IM, allowing you to "move" to Miranda NG in automatic mode.
The team is always ready to answer all questions and comments on the xmpp jabber conference and
forum :
miranda-ng@conference.jabber.ru .
For the preparation of the material - many thanks to George Hazan (
ghazan ).