Making deployment of desktop Python apps trivial: an idea
Here's what I'm thinking: how hard could it be to make PyQt app deployment absolutely easy? Well, I am guessing: not very hard.
Here's the trick: see what works in the real world, and adopt it.
Question: what has deployed billions of apps and has its users happy? Answer: phones app stores.
Question: how do they work? Answer: well, that's not that short, so let's start explaining.
As I see it, a reasonable app store has the following components:
A Stable Deployment Target
You can't deploy from the store if you don't know what you are deploying into. If the target platform is shaky, you just can't know how to deploy without user assistance, and we are trying to make this easy for the user, which means that's not acceptable.
So, what's a stable deployment target we can provide?
PyQt (so we can deploy GUIs to all major desktop platforms)
Python standard library
Selected modules
What can be (and should be) bundled with the app?
Pure python modules
Artwork and other resources
What may be bundled:
Python modules written in C/C++, but you then have to redo the app for each platform, and that kinda sucks.
Deployment Services
Apps should be able to check if there is a new version of them in the store, to ask for upgrades.
Apps should be added by the deployment platform nicely into the host system's menus, desktop, etc.
Monetization Services
Some way to charge for apps. Even for open source apps, you could ask for U$S0.99 if you install them through the store. Optional, of course, and up to the app owner.
Ad platform? There must be a good one for desktop apps somewhere?
The Store Itself
A website that downloads a "package" associated with a local deployment application.
A app store app. Install things not via web, but via a desktop application.
I don't expect a functional version of this would take me more than a week working fulltime to implement. Of course then there are all sorts of usability, looks, etc. things to consider.
And... I am going to do something I very rarely do. I am going to ask for money.
As an experiment, I have setup a project at http://www.indiegogo.com/Qt-Shop and set a funding goal of U$S 600.
There you can fund me. I promise that if the project is totally funded, I will deliver. If it isn't, I may deliver anyway. I would prefer to have the money though.
The platform would be released under GPLv2 or later.
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. ;)
Then you are not the target of this project.
> 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.
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.
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.
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 :-)
i'll donate $20 if it the platform itself will be published under gnu gpl.
Sure. GPL2 or later. I should add that to the proposal.
Added it to the blog post and the proposal.
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.
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.
Thanks, when the coding starts I'll let you know!
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.
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?