Mar 22nd

tabSRMM merge, part 2

2006, 18:44 UTC | By | In TabSRMM
Leave a comment | Trackback  | 3458 views

The progress is faster than I first expected it to be and many things are already working (it is basically already possible to use the merged plugin for all kind of chats within miranda) and a you can expect a first testing release within the next few days (maybe a week or so, max). This release will also contain a more or less finished version of the container skinning engine, including the ability to skin the window frame and title bar and a sample skin.

It is also pretty stable right now and doesn't crash (at least, it didn't so far for the last few days...)

A few design decisions which have been already made:

No IEView support will be added to chat rooms. Simple as it is, that won't happen. There are many technical reasons, most importantly the fact that IEView is WAY too slow to handle busy IRC channels which can generate a few events *per second*. Joining such an IRC channel may crash and burn Miranda within a short period of time - the memory requirements by the embedded Internet explorer control are way too high and it is also way too slow - imagine what will happen in a very busy channel with a complex template like satin :) Miranda will eat 100% CPU and consume memory like insane.

Since this feature is dangerous and may even open potential security risks (it HAS the potential to be abused as a possible "Denial of Service" attack against Miranda users in IRC channels), it is not going to happen, not even as an option. This is not open for discussion, so please don't ask.

Sorry, if this disappoints you, but it really doesn't make sense. I know that it is *NOT* IEViews fault as the author of IEView has done a great job to make the plugin as efficient as possible, but the real problem is the slow HTML rendering engine of IE (it is even slower when building pages dynamically which is exactly what happens in IEView).

Of course, normal instant message sessions won't be affected. IEView support in tabSRMM will stay as it currently is and there are no plans to remove it in the future. So, don't panic :) The above decision will only affect chat rooms (IRC channels and such), but *not* IRC queries (they will continue to work as they currently do and use normal IM tabs).

Send on double enter+ is back. This is another positive side-effect of the merge - the code which handles sending a message will be unified so that the way how you configure sending a message will work in all tabs, so you can send on double enter in both chat rooms and normal IM sessions. It is also no longer needed to configure it for both plugins. That also affects the "Alt-S" hotkey for sending a message which will then also work for chat rooms.

The large send button is gone - sorry if you liked it. I don't as it is WAY too MSN-ish and looks weird with a bigger input area. Instead, a tabSRMM-style send button has been added to the toolbar.

Icon pack changes - I've made the decision to merge all the icons into a single icon pack. Some of the chat-specific icons have been merged with tabSRMM icons to give the button bar a consistent look and feel and to eliminate resource usage. This step will require changes in the icon pack format, unfortunately. This will further reduce the size of the tabSRMM DLL by about 50K and simplify icon pack customization (one icon pack for everything...). Of course, IcoLib support is available for all icons.

Icon pack customization is now also easier, because icons have been logically divided into groups and are no longer all mixed together within a single IcoLib section.

Theme changes - TabSRMM message log themes (.tabsrmm files) will also import and export the look of the group chat window, including all fonts and colors, and the look of the info panel fields (fonts, colors, background). All font configuration has been merged into a single dialog (but there are sections to make the now rather long font list easier to navigate).

A container skin can hold a reference to a .tabsrmm theme file so it is now really possible to change the look of the message container by just loading a skingle skin file.

Like
 

22 responses to: tabSRMM merge, part 2

  1. YtseJam, Mar 22nd, 2006 at 21:21
    Reply | Quote | #1

    What is the current file size of the merged TabSRMM?

  2. YtseJam, Mar 22nd, 2006 at 21:22
    Reply | Quote | #2

    ugh, couldn't edit...

    Also, would you consider packing the plug-in like History++? I forgot what he is using, but it decreases the file size considerably and doesn't have any speed side-effects.

  3. Nightwish, Mar 22nd, 2006 at 21:24
    Reply | Quote | #3

    What is the current file size of the merged TabSRMM?

    Dynamically linked, it is about 435K (UNICODE build, ANSI somewhat smaller) - that's about 70-80k more than a plain tabSRMM without integrated chat. It is clearly smaller than separate tabSRMM + chat.

  4. Nightwish, Mar 22nd, 2006 at 21:25
    Reply | Quote | #4

    ugh, couldn't edit...

    Also, would you consider packing the plug-in like History++? I forgot what he is using, but it decreases the file size considerably and doesn't have any speed side-effects.

    Nope, that would go WAY too far - tabSRMM + chat are related, because they basically do the same (offer the UI for chatting), so merging them does make sense.

    But a history viewer should stay separate. Also, history++ is written in Delphi, so a merge would be technically impossible anyway (w/o completely rewriting history++).

  5. Tigerix, Mar 22nd, 2006 at 22:00
    Reply | Quote | #5

    Hi Nightwish,

    I really enjoy reading your Development Reports! You have a very good writing style. Thanks a lot for your efforts! I wish there would be more developers out there doing that...

    About your development:

    I am glad to hear that the process is running so smoothly.

    I guess it is because you have written tabSRMM consistent and universal. Keep going on your good work on all Miranda related projects! I am curious what you are touching next ;) You are one of the programmer in the Miranda Community, who shouldnt be missing! Thumbs up! Don't you wanna join the guys in the core development? I am sure you would help a lot to make Miranda become a better Messenger...

    Yeah, I have finished! There was a need behalf my side for these compliments now!

    PS: I remember summer 2004 when you started the work on TabSRMM and I chatted with you for a few feature requests. At that time I never thought tabSRMM would become such a big toy one day!

  6. Nightwish, Mar 22nd, 2006 at 22:21
    Reply | Quote | #6

    [quote]Don't you wanna join the guys in the core development? I am sure you would help a lot to make Miranda become a better Messenger...

    Well, every now and then, I contribute some code to the core, but my time is too limited to do more (tabsrmm + clist_nicer are 2 big projects which are already using most of my free time

    [quote]PS: I remember summer 2004 when you started the work on TabSRMM and I chatted with you for a few feature requests. At that time I never thought tabSRMM would become such a big toy one day!

    That wasn't planned :)

    My idea was to add a tabbed UI to SRMM and that's all - but then things got their own dynamics, people enjoyed it, and, like always, feature requests started to appear. Many of the features which are currently built into tabsrmm are a result of these requests, because personally, I wouldn't need them.

    Anyway, thanks for the kind words, and I'am sure there will be more from my side - I've also lying around some other code, completely unrelated to tabSRMM or clist_nicer, but it is way too early to say something about that (it's main purpose is to improve the usability, especially for first time users with a fresh install).

  7. PV, Mar 22nd, 2006 at 22:28
    Reply | Quote | #7

    just plain thanks and once again big thanks from the guy who has found tabsrm so nice and efficient these days only and is happy with upcoing integration with chat plugin.

  8. nowotny, Mar 22nd, 2006 at 22:47
    Reply | Quote | #8

    I think he meant to pack the dll with a tool like UPX or something...

  9. Tigerix, Mar 22nd, 2006 at 23:13
    Reply | Quote | #9

    Anyway, thanks for the kind words, and I'am sure there will be more from my side - I've also lying around some other code, completely unrelated to tabSRMM or clist_nicer, but it is way too early to say something about that (it's main purpose is to improve the usability, especially for first time users with a fresh install).

    Its my pleassure! :)

    Are you trieing to get me excited again? ;)

    Gratulation, I am! That sounds like an easter egg (Yay a present for the Miranda Community!)

  10. Nightwish, Mar 22nd, 2006 at 23:22

    I think he meant to pack the dll with a tool like UPX or something...

    Ah, yes... ok, that makes sense, but...

    tabSRMM is already distributed in a packed .zip archive, so it is already compressed for saving bandwith when downloading it (and zip actually compresses better than UPX).

    UPX does not reduce the memory requirements of a running plugin - the DLL is packed on disk, but it needs to be unpacked when the operating system loads it into memory (from the OS' point of view, the packed DLL is nothing but junk and could never be executed directly). So using UPX for large plugins would actually *slow down* the loading process of miranda, because the unpacker adds some overhead and modern hard drives load data from disk faster than they can be uncompressed.

    The only real benefit would be for someone who wants to install Miranda on a very small drive (maybe USB or a floppy disk - based install).

    Also, packing it with UPX eliminates some advantages of a DLL linked with proper re-basing. Such DLLs can be loaded "on demand" by the operating system, because no symbol reallocation is needed, but UPX needs to load the entire DLL in order to properly decompress it.

    UPX was a great tool a few years ago, but today, given the size of our hard drives, its benefits are almost non-existant.

Subject

  (this is optional)

Comment text

Allowed HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>