

Ask HN: Python for commercial desktop software? - yikkle

I've noticed that python is mostly used for open source or server-side commercial software, but rarely for desktop commercial software.<p>- Is this because of the ease of reverse-engineering of python bytecode?<p>- Any examples of commercial desktop software in python?<p>- What language should I write cross-platform desktop apps in?
======
fragmede
Look at javascript heavy websites. True, they aren't (usually) giving away the
source for their backend, but javascript, even obfuscated, is 'source', and
relatively easy to reverse-engineer.

py2exe and py2app do a reasonable job of packaging up your python program into
.exe/.app for desktop software. With a toolkit such as QT, though PyQT is non-
free, professional looking applications are achievable. PySide, Nokia's LGPL
Python QT binding does _not_ have Windows or OS X on their official roadmap,
so unless you're willing/able to do the port yourself, I would not count on
it. (<http://www.pyside.org/roadmap/>)

For C++, Visual Studio comes in an Express edition that _is_ free, which can
(somewhat) be used with QT, and these days, QT is LGPL, which means no
licensing costs.

If there is really a need for this to be desktop software, and I don't know
your product, so lets assume there is. Cross-platform desktop apps is a
special niche, and assuming you lack the resources to do ports for each OS,
I'd go with C++ and QT.

Python is also not an all-or-nothing choice. There are some professional
applications that use Python at some point in the process. Avid Media Composer
(professional video editing suite) has a python2X.dll in their C:\Program
Files directory, though I don't know what it gets used for.

Between the two larger platforms, OS X and Windows (assuming those are the
'cross' platforms you are talking about), QT does a fine job of working on
both systems, but the two platforms DO have different idioms that I feel a
platform specific port is the only way to do a _good_ job on.

------
jmount
I would guess one reason there is little Python desktop software is that the
user interface components available to Python are not that great (unless you
call-out to something like QT <http://qt.nokia.com/products> ). For a real
horror-story (that happened to be in Python, but Python was not the biggest
cause) do read "Dreaming in Code" <http://www.dreamingincode.com/> . Plus
there are the usual set of cynics who say there is no longer a need for
desktop software (I strongly disagree with that).

------
chipsy
Python has a relatively heavy footprint for deployment, and cross-platform
toolkits add to that - it could be somewhere between 5 and 20 megabytes
depending on exactly how many dependencies you've got.

------
lygaret
In terms of desktop software, I know that the Dropbox client for OS X at least
is a python application. There's a bunch of layers of platform specific
wrapping, but python's definitely in there.

~~~
threepointone
Their next version(already in Beta) is pure Cocoa.

------
samdk
Ars Technica had an article a while ago on how to deploy standalone Python
applications written using PyQt: [http://arstechnica.com/open-
source/guides/2009/03/how-to-dep...](http://arstechnica.com/open-
source/guides/2009/03/how-to-deploying-pyqt-applications-on-windows-and-mac-
os-x.ars)

That's probably your best bet for cross-platform Python applications if you
need a GUI.

------
CyberFonic
openERP is written in Python and widely used. As far as I know there is some
Python used in Gimp and Blender.

For commercial desktop software, Windows is still the major market. Cross-
platform development costs are far greater than the value of the small
increase in target market size.

