New Mac OSX public beta Jan-31-2012 available now

 From:  Michael Gibson
4879.52 In reply to 4879.41 
Hi dinos,

> In fact i find it amazing that you took all this time to answer
> my post, point by point, even though i'm not even a customer
> of yours.

Well, I kind of have to because it could otherwise cause FUD about performance when that seems to be an area that is actually handled particularly well by this porting method...


> Yes there is a bit of an issue with resizing the window but i can
> live with that.

I do expect to work on improving this.


> The same about the rather long launching time.

That's actually caused by this anti-cracking obfuscation and encryption mechanism called Themida/WinLicense which moi_lib.dll is processed with. That's only on totally public releases that I ship out, it's not on the actual full version releases that use a license key. So on the full version this particular slow startup issue will not be present.


> Still thats just a benchmark which is largely irrelevant
> in this case as i agreed with you that the UI is more than
> fast enough as it is, and the viewports run at native speed.

I don't really know exactly what is going on with that particular HTML benchmark (for others wondering what this is about, it's about the performance of the HTML used for the GUI elements like the buttons and menus and such, not the 3D display area and not geometry processing) - it could just be a difference that the WebKit that MoI uses is about a year old and maybe they've made some tune ups to DOM handling since then.

I'm not at all concerned about it, since that benchmark measures a particular area of large quantities of DOM manipulation which does not crop up inside of MoI. So since that area is not currently a bottleneck, an improvement in it would not have any noticeable practical effect, other than just making the numbers of that benchmark look pretty.

Again, the key thing if you want to judge UI speed is to simply use the UI in the application itself, why worry about what is even labeled in the URL as an "artifical" benchmark ?

If the UI is already behaving in a fully responsive and seemingly instantaneous manner, then you are not going to see any noticeable improvement in things that only end up saving a millisecond or two here and there in the way that things are actually used.

And if the UI is performing smoothly in regular operation, it just does not make sense to worry about a theory that you think it ought to perform poorly - I mean you have direct "real world, not artificial benchmark" evidence to the contrary.

Are you trying to do some kind of unusual thing with some custom UI where large scale DOM manipulation performance is a particular issue for you?


> "There you have an excellent program, that uses Webkit for
> the UI, OpenGL for the viewports and even the html is very
> OSX like. And its going through all these layers!"

Yeah but it also uses stuff like COM for the object model and interprocess communication, and all sorts of various Windows API calls for things like multi threading, synchronization, top level window management, timers, etc...

So there's just a wide variety of all kinds of stuff that would need rewriting in order to do the kind of approach that you were describing. It adds up to a whole lot of work and it's pretty hard to even judge the volume involved, which tends to be a sign that it would drag on and on for a really long time. It could even be such a long time involved that it could be in the areas of an endless huge time sink that would never actually be completed. Things of that nature can actually be a project ending type strategy because of all the potential negative side effects like burnout and stagnation.

Meanwhile Wine has implemented all that various Win API stuff already using a unix back end, with generally excellent performance...

This information should shed more light about the reasoning behind this particular approach. ;)

I was not really sure at the start that this method was actually going to work, but I thought that it was worth a try since the potential payoff was significant and I don't think other approaches would have been feasible. I'm pretty sure at this point that it's going to work though, at least for the vast majority of users who care more about how it actually runs rather than if it's "100% pure Cocoa" ...


I do actually have some native cocoa elements for particular targeted areas like the file dialogs.


The other really good thing about this current approach is that it gives parity between the Windows and OSX version. I generally expect for the OSX version to have the entire same feature set as the Windows version and after just a little bit more refinement and tweaking I expect for new features that are implemented to come in directly on the OSX version with no extra effort needed on my part, unless there is some kind of external library dependency involved.

That parity is quite frequently not the case when there is a stronger bifurcation between the different versions of the software. When there's more effort and too much different behavior involved for one of the versions it is easy for one of them to lag behind the "main version", sometimes quite substantially.

So a "full low level port" type approach can easily have its own set of drawbacks too.

- Michael

EDITED: 11 Feb 2012 by MICHAEL GIBSON