This week, I tried out Wingware IDE. So far, I’ve tried out Sublime Text 2 and Komodo IDE.
Wingware IDE
Wingware is an editor I’ve heard a lot about in the Python community. It’s been available since 2000, so I figured that it’s clearly a well proven editor, that some subset of the community finds useful.
Getting Started
The initial start up left an… impression. I had to restart Wingware twice, and request a trial key, just to get up to the point that I could open a file. The first time was about performing a restart due to optimisations for my resolution, and the second was to install some updates relating to Django 1.4. I find these kinds of start up processes really, really annoying, for this obvious reason: start up is the one time you can guarantee your users want to use your product, as quickly as possible. Putting walls in their way whenever they start up an application says that you don’t know your users.
Debugging
Debugging code is Wingware’s thing. The entire application is focussed around debugging your application - you’re given an insane amount of controls for debugging a Python process. There’s the regular start/step/breakpoint based debugging, debugging remotely, hooking into processes via a local port, debugging Django templates, and a lot more.
Debugging Django templates is worth a special mention. It lets you set a breakpoint in a Django template, where you have access to all the variables in that template, in an interactive session. That’s pretty awesome - it would work very well with Werkzeug’s debugger. If the Wingware team went one step further and added support for Jinja, my favourite templating engine, it would make Wingware a lot more relevant to me in this regard.
Code Editing
Most IDEs I’ve used in the past typically have two modes; regular, and “Vim”. Wingware takes it much further, and has support for Emacs, Eclipse, Brief and Visual Studio. That’s a pretty awesome level of support. Of course, I’ve opted for Vim mode, which has worked out pretty well for me, for the most part - searching doesn’t wrap to the beginning of a document like it does in Vim. Occassionally I hit a weird bug, where visual mode won’t let me move the cursor down, but apart from that it’s pretty clean.
Visually, editing code is a lot cleaner than Komodo was - instead of opting for the three column layout of Komodo, Wingware uses a two column layout, split into tabs. This actually leaves me with the same space that I had in Komodo, but it doesn’t feel like it - so I consider that an upside.
Wingware comes with introspective code completion as well, however it’s not as good as Komodo’s. For example, importing django.db.models
did not work - I couldn’t access any attribute in that module.
Syntax highlighting in Wingware is poor, as well. If you want to change the colours, you’re forced to change individual colours, one at a time. The one saving grace it has is switching the background to black automatically set the other colours to something complimentary, although they’re still pretty ugly.
The syntax checking in Wingware is a bit spotty. Most of the time it worked reasonably well, but when I was updating some of the code for my blog, it claimed syntax errors when there were none, and didn’t pick up on two syntax errors I had. Indentation also goes a bit stupid some times - I’ve seen it indent 32 spaces when it should have indented four, for example.
Version Control Integration
I tried using the integrated version control, which is always a nice feature to have. It was okay, but it felt really clumsy. The humongous expanse of menu options left me fumbling a bit.
The default action for Mercurial > Commit is to commit for the current file, not project wide, which is completely backwards to how Mercurial works. The same goes for viewing diffs - you view the individual diff, then select Project from the combobox.
On the plus side though, folders with modified contents have an icon to indicate this in the UI - one up on Komodo, which didn’t display anything.
UI Navigation
On the surface, the UI seems simple, and intuitive, but once you check out the Tools menu, you’ll agree with me that Wingware is frighteningly complex. The menus are so large that they actually had scrollbars on my monitor - I’m not sure why submenus haven’t been used here.
This brings me back to a recurring point; the UI should be searchable. Sublime and Komodo both had reasonably searchable interfaces, allowing me to find things reasonably quickly. The settings page can be searched very basically, but that’s the limit. The menus can’t be searched at all either, which is really frustrating for menus as large as those in Wingware.
There’s the Open from Project option, which let’s you search the files in your project, which is a pretty useful feature.
I can’t find a way to add custom keyboard shortcuts for using the tool I’ve mentioned in previous entries, which was a reasonable inconvenience for me. I looked at adding keyboard shortcuts in general, and I was given a dialog box with two text fields - one for the key, the second for the “Command”. Highlighting over the Custom Key Bindings label said that a list of the commands can be found in the documentation - I think that’s really sloppy work.
The central part of the UI is broken into three parts - one area for text editing, a sidebar for some tools, and a bottom area for some more tools. All the tools are broken up by tabs, to an insane degree. The default is something like 8 tabs along the bottom, and another six along the side. It’s very flexible and allows you to change these however you wish, but it’s very daunting. The defaults are strange too, referencing settings that you really wouldn’t change in every day use, like indentation settings.
This brings me to another design point. My philosophy for things that sit in front of you, for example, your desk, or your desktop, or an application, is that the things you will use everyday are the things that should be available to you via the shortest path. If you do a lot of writing, you’d keep a pad of paper and pen on your desk. If you don’t use pencils very often, you’d keep them away in a drawer. Indentation settings are the same - you typically set those once, when you very first open the editor. Not every day. It feels like the guys behind Wingware don’t really understand this.
The Pricing
So, the pricing of Wingware is, to put it bluntly, excessive. The IDE costs 245 dollars for a single user, professional license, or you can get a “five pack” for 1150 dollars, which means you have a license for five users. I’ve never understood forcing develoeprs to use a particular IDE. Maybe for difficult to setup projects, like large Java projects, it makes sense to recommend your team members use something like NetBeans, or Eclipse, but purchasing a multi-user license is going to make developers feel obligated to use the editor.
There are other pricing options, as well. You can get a non-commercial license for 95 dollars, or a hobby license for 45, which has a greatly cut down feature set.
You can also, optionally, pay 89 dollars a year for upgrades and support. I think if you’re paying that much upfront for the editor, paying an additional 90 dollars a year for upgrades is excessive.
I’m not sure, maybe I’ve become jaded by all the free software I use. But paying that much money for a feature-packed text editor feels silly to me. Kind of like all the guys I went to university with buying Visual Studio to work on C projects. They’ve bought it because that’s all the university ever offered them, so it’s all they ever knew.
Conclusions
For the most part, Wingware feels very barebones. I think I can safely say this is because I have no need for a lot of the mountains of debugging features that Wingware gives me. All of the other features I’m interested in, like colour schemes for syntax highlighting, introspective code completion, and Vim mode, are all there, but are very limited. I think this comes about as a result of what the Wingware developers themselves want in an editor, not so much what their users might want.
A lot of the UI ugliness is hard to avoid. For a product that’s been around for 12 years; it lacks polish. The difficulty adding keyboard shortcuts, using version control, initial startup problems, there were a lot of problems. Compare it to a product like Komodo, which made its first release in November of 2007, which has a lot more polish, and it left me feeling underwhelmed with the whole IDE.
So, that’s about all I have to say about Wingware. Next week I’m starting work with PyCharm; hopefully it fairs a little better.