Hello Richard,
Ok, after my slight anger on IRC, i've decided to write a constructive email and post it here. Please note this is my opinion, though others may agree with me.
Yep - constructive mails are always a good thing. :-)
First of all, Martin, let me say i have the utmost respect for you and your work.
However, it has come to my attention that the explorer clone is starting to become a mess. It has too many 'features' built in.
I agree with you in that the current explorer implementation is not really intended for "average users". It's more a bit experimentally, I am trying out many extra features, which could enhance its functionality. This explains the many different toolbar buttons you can see there.
The compaints i have are:
- Too many 'ways' to browse a users computer. You have all those
buttons at the toolbar, why not just make those features into shell extensions or at the very LEAST compiletime options. Explorer needs only 1 way to browse directories/files. (Which should be whichever way that closely resembles microsoft's windows, and by all means winefile and explorer should be seperate applications.) Among the features that need to go are: The web support, Registry browser, NT Object File System or whatever the hell it's called, The 'shell browser' or whatever it is, The little bar above the Status bar should go. The Interface shouldn't be MDI, as microsoft's is not.
I prefer MDI like in WINFILE, as it reduces the number of windows you have to manage on your desktop. It packages them into one common frame window, so you don't need an extra app window for any open folder.
- The toolbar has nothing useful. The windows explorer toolbar has
back, forward, and up buttons for example, to browse the users computer. Our explorer has none of these.
Well, there are "back" and "forward", but they work only for the web integration at the moment. An "Up" button is currently missing, yes.
- The web support needs to go. I don't know what all was done, but
web support causes alot of potential vulnerabilities. Just look at microsoft's windows, and even IF it didn't, loading IE/mozilla every time explorer starts is a WASTE.
The explorer loads the IE/Mozilla plugin only when opening a window to display web content. At explorer startup it only links to a few functions in OLEAUT32.DLL, it doesn't call any of them. I you think this is better, we can even make them link at runtime using LoadLibrary(). But I don't think this makes a big difference.
Normally i'd stand back, work on my own explorer clone, but this IS ReactOS, our goal is to clone windows, we need to keep our UI as consistent as possible with microsoft's.
There are also people with a different view of things: Why should one use just another operating system than the "good old MS Windows" if he doesn't get any improvement in comparison to that? Even if it isn't yet compete, and stable. Yes, it's free software compared to closed source MS Windows. (no more fully true since last week ;-) But that's the only point. To attract more users we have to present them more features/functionality/ usability than Microsoft.
If you sit down a user in front of our current explorer, he/she would be most definitely lost.
Not all users are "dumb" users. They will accomodate very fast to anything new if it's usefull.
While i would say hide the features, they'd still be there, increasing application size, code complexity, memory requirements, dependencies, and slowing the app down, and this isn't an ideal solution.
Solution: I really think we should clone the Windows NT 4.0 explorer, with quicklaunch, but nothing more. Make everything else addins or compiletime options. The interface really should be more similar to the windows version of explorer, with nothing new to confuse users, etc. This will make explorer less buggy and faster, it will also consume less RAM. Currently explorer is even slower then microsoft's own explorer. Granted it is an alpha version, but still, these 'new features' are still getting injected every once and a while, making things even worse, when time/energy would be better spent working on shell32 or fixing bugs/optimizing explorer and code cleanup.
OK - here is my solution:
Let's use preprocessor directives (e.g. #ifndef _LEAN_EXPLORER) to disable extended functionality in explorer. This way we can maintain one codebase to create
a.) a simple, small, lean and mean version of explorer. b.) a full fledged version containing additional functionality.
Of course it would also be possible to create a separate module with only explorer source code - no MDI, winefile, Web or whatever. There is the advantage of being able to optimize it separate. But this way we will have to maintain both versions separate and fix any bugs two times.
By the way: I plan to implement a new look & feel for explorer, more like that of KDE, XFCE and friends. This would be switchable at runtime and of course only integrated in the bigger b.) version of explorer.
Don't get me wrong, i think explorer is great, it's a marvelous piece of work. And my opinion is one of many, but keep in mind i'm not speaking for the supergeeks here, i'm speaking for the power users and regular users, the customer support reps and myself.
Take care, and please don't flame me, martin, or anyone else. Richard.
Regards,
Martin