I'd like to develop a small/medium-size cross-platform application (including GUI).

My background: mostly web applications with MVC architectures, both Python (Pylons + SqlAlchemy) and Java (know the language well, but don't like it that much). I also know some C#. So far, I have no GUI programming experience (neither Windows Forms, Swing nor QT).

I plan to use SQLite for data storage: It seems to be a nice cross-platform solution and has some powerful features (e.g. full text search, which SQL Server Compact lacks).

I have done some research and these are my favorite options:

1) QT, Python (PyQT or PySide), and SQLAlchemy

pros:

  • Python the language
  • open source is strong in the Python world (lots of libraries and users)
  • SQLAlchemy: A fantastic way to interact with a DB and incredibly well documented!

cons:

  • compilation, distribution and deployment more difficult?
  • no QT experience
  • QT Designer not as nice as the Visual Studio Winforms designer

2) .NET/Mono, Windows Forms, C#, (Fluent) NHibernate, System.Data.SQLite

pros:

  • C# (I like it, especially compared to Java and would like to get more experience in it)
  • The Winforms GUI designer in Visual Studio seems really slick
  • IntelliSense
  • ClickOnce Deployment(?)
  • Windows Forms look and feel good on Windows

cons:

  • (Fluent) NHibernate far less documented than SQLAlchemy; also annoying: Fluent docs refer to NHibernate docs which refer to Hibernate (aargh!). But plain NHibernate + XML does not look very comfortable.
  • Windows Forms will not look + behave native on Linux/Mac OS (correct?)
  • fewer open source libraries in the .NET world, fewer OSS users, less documentation in general
  • no WinForms and NHibernate experience

    Edit
    Report