Since I think my response to "Why use MSHTML?" got lost long ago in a forum wipe, I'll try to recreate it. The basic problem is there is no other option. Gecko, the rendering system behind Firefox, has no real usable library version. There is a GTK widget that embeds it, but I've used it in the past and would never try it again. Gecko was never built to be used as a library, and it shows. The more "correct" way to make a Gecko-powered app is something called XULRunner, which is basically Firefox without the Firefox-specific elements. This presents a number of problems. The simplest is purely size; a raw XULRunner runtime is over 20MB. The deeper problem is that writing XUL extensions is painful. I've done it for a previous job (the one that switched off gtkmozembed), and it is not pretty. It would require fairly massive re-architecting of the code and switching from the Cryptic libraries to Mozilla's. What we would end up with is an unmaintainable wreck, so that pretty much rules out Gecko. Opera doesn't even talk about using their system as a library without $$$ being involved, so thats out. WebKit is the closest so far, but it isn't a full solution. Apple has open-sourced the WebKit rendering engine, but it is just that, a rendering engine. It doesn't include anything else that you need to show things on the screen, such as networking or graphics. Networking isn't such a huge problem, it would be hard but we could probably cobble something together, but the lack of a presentation layer that works well on Windows is a problem. There is one experimental one that uses Cairo, but it is far from stable enough to use for something like that and doesn't look that nice. Google's Chrome may help with this, since they have a WebKit display layer that works on Windows, but it is far from usable off the shelf. It can be done, as shown by CCP with their Moondoggie effort, but that took several months of several people working on it, and I would have to start from scratch more or less. MSHTML has plenty of issues, but it is easy to use (we are embedding it via OLE, so easy once you get used to COM in C), adds nothing to the file size, and clearly works in the vast majority of cases. It isn't a perfect situation, but really the options here are limited.
Link to Original Source