Thoughts on Whatnot
A Quick Rant about MonoDevelop
November 11, 2016

So, for the last couple of months I’ve been working on a project for school which has required me to use MonoDevelop. I first used MonoDevelop around 9 or 10 years ago or so when I was using C# fairly regularly. Back then, I remember MonoDevelop being a fairly competent, if somewhat limited feature-wise, Linux and GTK# alternative to Visual Studio Express and Windows.Forms, so I wasn’t particularly worried about using it for this project, despite not having used it in a while.

Apparently, I should have been.

MonoDevelop appears to have stagnated. It’s nearly identical to how I remember it, but it seems to have developed quite a few more bugs, especially in the GUI designer, Stetic. The designer seems fine at first glance, but things quickly go downhill as they get more complicated. Want to make a custom widget? There’s a built-in template for that, but it’s hit or miss if it shows up in the designer’s toolbox. Each time you open it. Have multiple monitors, or even a wide screen, and want to edit source and design the GUI side-by-side? Too bad. The IDE considers them to be the same file. If it even recognizes the file as having an associated GUI at all, of course. If it doesn’t, you’ll probably have to restart the IDE, and even that might not work.

Some problems crop up nearly constantly. Some widgets are nearly impossible to click on, and I’ve had more than once where I had to select an item, then right-click on it, find the item in its own context menu, and click ‘Select’ in the sub-menu. Why? I have no clue. Something’s clearly not working right internally. Speaking of context menus, navigating the context menu of a widget deep in a container hierarchy is somewhat interesting. Each parent container in the hierarchy gets its own entry in the menu, separated by separators. A widget has 3 parents, including the window it’s in? That’s 6 extra entries in the context menu, and each of those entries includes the widget in questions entire context menu, minus their own parent list.

Now, rant or not, I do want to make one thing clear: I do not, in any way, hate MonoDevelop. It’s extremely useful, and it, by and large, does exactly what it’s supposed to. So long as you don’t have to use the GUI editor, MonoDevelop is pretty much absolutely fine, although I have had a few minor issues with the package system and a couple of other things. But I have a lot of respect for the MonoDevelop developer, and I do want to thank them for providing such a well-featured open-source IDE for C# development, especially on Linux.

And besides, when all’s said and done, it certainly keeps things interesting. And it still uses less RAM than IntelliJ. Not that that’s hard.