For some times, I've been wondering whether it would be possible for me to make money with Paperwork. It would give me more time to work on it, and let's be honest, more time for other weird projects :)

During this time, a recurrent request I got was a Windows version of Paperwork. This is something I was reluctant to do until recently. There were philosophical reasons (free software rocks, proprietary software su**s, etc), and more pragmatic reasons (developing on Windows is a pain i* t** a**).

But then I wondered, what if I could kill two birds with one stone ? The basic idea is making a Windows version and ask for money in exchange. Donations or payment, I don't care as long as it's worth spending time on it. Also, I had to keep in mind Paperwork is released under GPLv3.

So I've chosen a weird on unusual approach. I've decided:

  • To implement a trial period in Paperwork to give people time to try it.
  • For when it expires, to implement a cruel and usual DRM. My inspiration was the Chocolate editor. I think it's a good compromise. It let users keep using Paperwork, while making it clear the project need money to evolve. However, I haven't checked yet if the Geneva convention allows that .. maybe I should ...
  • To implement an activation key system. It's kind of crap. I guess anybody with basic cryptographic skills can break it in 30 seconds. Anyway, it isn't designed to be foolproof, quite the opposite actually.
  • To let people choose themselves the price. If they want, they can decide to pay 1€ (or 1000€ .. a man can dream, no ? :) )

As stated previously, I did my best to respect the GPLv3. As usual, the code source is still entirely available, and even the crappy DRM is opensource. I sent an email to license@fsf.org to be sure that was I was about to do is really authorized by the GPLv3. A volunteer told me that yes, GPLv3 allows explicitly the inclusion of DRM, as long as all the elements required to disable or modify it are provided. Please note that he also clearly insisted that what they say has no legal value,

I also made a nice website to sell Paperwork (well I tried to make it nice anyway), and a NSIS web-installer. For now, both are closed-source. I'm still considering opening them at some point.

The result can be found here.

As expected, portage to Windows was painful. The most complex part was porting Pyinsane. Scanner access is entirely different between GNU/Linux and Windows. I had to make a full implementation of the Pyinsane API for WIA (Windows Image Acquisition) and change a few things in the API. I switched the version to 2.x and published the module as 'pyinsane2'. I didn't find any existing implementation on Pypi, so I guess I'm the first to make one :). As with Sane, the problem is now to figure out whether I've been able to support all the scanners in world or not (unlikely :P).

I also had a lot of fun (irony) juggling with Python versions, Windows compiler versions, Gtk versions, architectures, etc. I did my best to build Python wheels for Pyinsane. I've been able to make a wheel for Python 3.4 64 bits, but I'm still unable to make a wheel for Python 3.5 32 bits (don't ask me why ...).

There are also some annoying GTK bugs specific to Windows : cmd windows popping up and disappearing immediately sometimes, Gtk.show_uri() that crashes the program or does nothing at all (meaning all GtkLinkButtons are broken), etc. But all in all, I think it remains fairly usable.

In conclusion, I only have one thing to say : If you don't use Visual Studio (and I don't), developing on Windows is an horrible and painful mess.