Compatibility hell: any way out of this mess?
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
The Mnemosyne Project |
Invalid
|
Undecided
|
Unassigned |
Bug Description
(Note: I would have liked to post this to the mnemosyne-
Until recently I've been using Mnemosyne on three devices: a headless Ubuntu Xenial server, an Android phone, and a Macbook Pro. I would review cards on the phone or the Macbook, and synchronise both with the server.
Then I made the mistake of upgrading Mnemosyne on the Macbook. It refused to synchronise with the server due to a version mismatch. OK, I thought, I'll upgrade the version on the server. But that doesn't work because the new version requires PyQt 5.6 and Xenial ships with 5.5. After some soul-searching, I decided screw it, I'll leave the LTS track and upgrade Ubuntu to Yakkety, which does have PyQt 5.6.
That's when I discovered that it still doesn't work, and will never work, because it also depends on QtWebEngine, and it's impossible to package QtWebEngine for mainstream Linux distros. http://
I did try pip install, but it failed with memory problems. And besides, that's a terrible idea. As far as possible all software should be maintained by the distribution, so that security patches will be applied. Using pip install puts my system at risk. So I'm glad that didn't work.
Next I tried downgrading the version on the server to version 2.3.6. But it seems that this is not compatible with the python3 that ships with Yakkety. Installation fails due to bad syntax in a print statement. There's no way for me to revert back to Xenial, so I'm stuck.
Next I tried to downgrade the version on the MacBook to 2.3.6. But this also has problems. I first moved Library/Mnemosyne to a safe place so it would start fresh. The first run it sorta works, with a couple of error messages. The second time it tries to run it gives me a message "Skipping copy of %s because it already exists" and then dies.
So at this point I only have the Android app to work with. I'm gradually building up a huge backlog of history that can't be synchronised with anything, and I'm worried if something happens to the phone I'll lose it all.
Is there any way out of this mess? Is there some way to bypass all the GUI stuff so that I can have a version of Mnemosyne on my server that just handles the synchronisation?
And why are different versions of Mnemosyne unable to talk to each other? The fundamental data types haven't changed for many years.
Note that we did the move to PyQt5 because Ubuntu was getting rid of support of PyQt4 and QtWebkit :-) Also, as far as I know, Ubuntu 17.04 does have Mnemosyne packages.
Rather than trying to downgrade everything to 2.3.6, I strongly suggest upgrading to 2.4.1. Personally, I run 2.3.6 on a headless Ubuntu server 16.04.2. There is no dependency on Qt if you install Mnemosyne from source.