Writing non-trivial / multi-threaded desktop software with Python is a debugging nightmare.
I've been a volunteer Banshee dev (~20 KLOC) for about 4 years. With limited time to contribute I wouldn't be nearly as productive if I had used C or Python. Without Mono lowering the (time) barrier for entry I probably wouldn't be a long-term free software developer.
Personally, I'm sad to see JavaScript coming to the forefront with GNOME 3.0.
Writing multi-threaded software in any language, that uses shared state and locking primitives is debugging nightmare. The list of those languages includes not only Python, but Java and C# too.
My experience is limited to one application and I used my own hand-crafted system based on select for this rather than twisted (which I didn't grok until I'd written my own scheduling model). However, the experience was good (and it was a joy to debug - very straightforward) so I'll continue here.
If you're writing python apps you're better off using twisted than the threading system (which in my limited experience is indeed horrid).
Twisted is pitched as being a networking layer, but I find it better to think about it as a purpose built scheduler which happens to have poweful networking modules. To explain what I mean by scheduler: - you have a cycle of standard functions for the application which might handle input, look at the network for traffic, handle output. Sometimes in the course of execution more functions will be needed and you stick them into the cycle. So you have an extra item in the rotation that handles custom tasks. Once you've got a scheduler model like this you can tweak it to make your application more responsive if it needs it.
You can use pyinstaller to produce a packaged binary that can be easily transported between platforms without requiring users to install a stack of python libraries. If you use wxpython as your GUI the whole thing can be multiplatform.
The problem is that I couldn't learn it until I knew what it did, and it was only when I sat down after writing that app and writing out a plan for a generic scheduler library based on what I'd learnt that it dawned on me - "ooohhh that's what twisted does!" We've been best friends ever since.
Leaving aside differences in their user interface design, what's your opinion of Banshee's codebase, performance and stability, versus Exaile (which is written in Python)? I've used neither, but I'm interested in the comparison as they both seem to be applications of similar complexity.
I've been a volunteer Banshee dev (~20 KLOC) for about 4 years. With limited time to contribute I wouldn't be nearly as productive if I had used C or Python. Without Mono lowering the (time) barrier for entry I probably wouldn't be a long-term free software developer.
Personally, I'm sad to see JavaScript coming to the forefront with GNOME 3.0.