So, I’ve been doing a bit of house cleaning over the past week going through the code and making sure that no windowism remain in the codebase (i.e., stupid things, like directory slashes, assumptions as to how programs execute (obviously, with mono I need to get path information, creating an “installer” to set application/folder paths after “installation”). So far, so good. I would say that I’m 99 percent where I want to be. I have everything working (including the Z39.50 client) though the window redrawing issues are a real pain.
- Window sizes: The status window, some textboxes, etc. Things that are redrawn depending on window sizes are sometimes slightly off on linux (maybe Mac). Using windows-based Mono, everything works like a peach. Using non-Windows mono and things get wonky. I’m not sure if it’s because I’m using an older version of Cairo (the graphics engine) or not. Anyway, I think that Mono and .NET use slightly different values for pixels because the grids should be the same. It’s cosmetic, but certainly is annoying.
- Z39.50 — this will work — but you need to set some environmental variables. I should create an sh file. Maybe next update.
- Threading differences: MarcEdit 5 uses a thread pump to allow process to be run in the background so most things (not all) won’t freeze up the application (or interface). Mono seems to work a little differently. The pump works — but not as well. So you might see more occasions where the window becomes unresponsive until the task finishes. It doesn’t appear to be a big deal, but its something I’m paying attention to.
- Icons — I honestly am not quite sure how Mac and Linux do their shortcuts. I’m going to do a quick web search and if I find the info quickly, I’ll make sure they get created on the user desktop. If not, users will need to create their own shortcuts.
I think that’s it. Everything seems to be 100% functional — though I notice screen redrawing is occasionally wonky. Also, you will want to take advantage of the preview mode in the Editor — in Windows, the Richtextbox has a streaming interface which greatly improves speed and memory footprint. Mono may have something equivalent, but I haven’t figured it out yet. Lastly, I’ve started testing Mono 1.2.5 (tests had been conducted on 1.2.4). It seems to fix some of the window redrawing problems, so hopefully this will continue to be true during my testing.
Anyway, if you want to try it, feel free. I don’t really consider this completely ready for prime time mostly due to the redrawing issues and some fragility — but I’m sure this will improve as MONO continues to improve.