Skip to main content

Ralsina.Me — Roberto Alsina's website

Making deployment of desktop Python apps trivial: an idea

Proprietor and printer in front of Schwartz Print Shop in Minneapolis

Here's what I'm think­ing: how hard could it be to make PyQt app de­ploy­ment ab­so­lute­ly easy? Well, I am guess­ing: not very hard.

Here's the trick: see what works in the re­al world, and adopt it.

Ques­tion: what has de­ployed bil­lions of apps and has its users hap­py? An­swer: phones app stores.

Ques­tion: how do they work? An­swer: well, that's not that short, so let's start ex­plain­ing.

As I see it, a rea­son­able app store has the fol­low­ing com­po­nents:

A Stable Deployment Target

You can't de­ploy from the store if you don't know what you are de­ploy­ing in­to. If the tar­get plat­form is shaky, you just can't know how to de­ploy with­out us­er as­sis­tance, and we are try­ing to make this easy for the user, which means that's not ac­cept­able.

So, what's a sta­ble de­ploy­ment tar­get we can provide?

  • PyQt (so we can de­­ploy GUIs to all ma­jor desk­­top plat­­for­m­s)

  • Python stan­­dard li­brary

  • Se­lec­t­ed mod­­ules

What can be (and should be) bun­dled with the ap­p?

  • Pure python mod­­ules

  • Art­­work and oth­­er re­­sources

What may be bun­dled:

  • Python mod­­ules writ­ten in C/C++, but you then have to re­­do the app for each plat­­for­m, and that kin­­da suck­­s.

Deployment Services

  • Apps should be able to check if there is a new ver­­sion of them in the store, to ask for up­­­grades.

  • Apps should be added by the de­­ploy­­ment plat­­form nice­­ly in­­­to the host sys­tem's menus, desk­­top, etc.

Monetization Services

  • Some way to charge for ap­p­s. Even for open source ap­p­s, you could ask for U$S0.99 if you in­­stall them through the store. Op­­tion­al, of course, and up to the app own­er.

  • Ad plat­­for­m? There must be a good one for desk­­top apps some­where?

The Store Itself

  • A we­b­site that down­loads a "pack­­age" as­­so­­ci­at­ed with a lo­­cal de­­ploy­­ment ap­­pli­­ca­­tion.

  • A app store ap­p. In­­stall things not via we­b, but via a desk­­top ap­­pli­­ca­­tion.

I don't ex­pect a func­tion­al ver­sion of this would take me more than a week work­ing full­time to im­ple­men­t. Of course then there are all sorts of us­abil­i­ty, look­s, etc. things to con­sid­er.

And... I am go­ing to do some­thing I very rarely do. I am go­ing to ask for mon­ey.

As an ex­per­i­men­t, I have set­up a project at­diegogo.­com/Qt-Shop and set a fund­ing goal of U$S 600.

There you can fund me. I prom­ise that if the project is to­tal­ly fund­ed, I will de­liv­er. If it is­n't, I may de­liv­er any­way. I would pre­fer to have the mon­ey though.

The plat­form would be re­leased un­der GPLv2 or lat­er.

foo / 2010-09-09 15:23:

Having an 'Appstore' for Python+QT apps on linux wouldn't make me happy. I want packages for my distribution, not some special sauce.
I think for such a Store to work it needs to be THE store, good luck reaching that. ;)

Roberto Alsina / 2010-09-09 15:42:

Then you are not the target of this project.

Ben Finney / 2010-09-09 15:34:

> PyQt (so we can deploy GUIs to all major desktop platforms)

That criterion seems arbitrary. Why not PyGTK, or Tkinter? The same justification applies equally to those.

Roberto Alsina / 2010-09-09 15:40:

Because I prefer PyQt.
Because Tkinter is ugly.
Because PyGtk sucks on all non-linux platforms.

Of course once the platform is done, adding PyGtk (or whatever) support is semi-trivial.

Ben Finney / 2010-09-10 03:51:

My point is that “so we can deploy GUIs to all major desktop platforms” isn't explaining why you chose PyQt. Perhaps you could either remove it as a justification, or give a different justification.

Roberto Alsina / 2010-09-10 04:02:

Could be. To deploy etc. is what PyQt is there **for**. It's not why **PyQt** is there. I don't know if that's undertandable :-)

marcell mars / 2010-09-09 19:16:

i'll donate $20 if it the platform itself will be published under gnu gpl.

Roberto Alsina / 2010-09-09 19:21:

Sure. GPL2 or later. I should add that to the proposal.

Added it to the blog post and the proposal.

Emanuel de Souza / 2010-09-09 20:02:

Hello Roberto,
You have a nice proposal for the project.
I'm trying to create a similar platform but using the ecma script instead python. Can't tell too much in public comments.
Maybe we can exchange some ideas.

You can find me on twitter as @emanuelcds.

Victor Fontes Costa / 2010-09-10 11:10:

Once the code is in a public VCS I would definitely deliver as much code as I can. I really liked your idea. Also, I have an underused VPS account at linode, so I tink i can help with the hosting too.

Roberto Alsina / 2010-09-10 13:13:

Thanks, when the coding starts I'll let you know!

Carl / 2010-09-10 12:03:

I just donated $50 to your project but was not smart enough to click on the project first. So, if the Donate button on the main page is tied to a different account, please move it over to the project.

Roberto Alsina / 2010-09-10 12:05:

It all ends in the same place but it won't show at indiegogo. No problem, I'll just reduce the required funding by $50, no point in paying paypal twice :-)


Update: amazingly there's no way to change the goal at indiegogo. Luckily refunds seem to be free. I just refunded it to you, can you try again?