Compatibility hell: any way out of this mess?

Bug #1692323 reported by Matthew Exon
6
This bug affects 1 person
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-proj-users group, but Google has locked my accounts)

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://phoronix.com/scan.php?page=news_item&px=QtWebEngine-Mess-Debian

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.

Revision history for this message
Peter Bienstman (peter-bienstman) wrote :

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.

Changed in mnemosyne-proj:
status: New → Invalid
Revision history for this message
Matthew Exon (ubuntubugs-mexon) wrote :

OK, it's back to normal again. I had two problems:

1) cheroot wasn't installed on the server
2) the android version was out of date

I guess both of those are RTFM moments, but I think Mnemosyne could stand to be more user-friendly:

* Most packaging systems, such as autotools, check missing dependencies and abort before building, let alone installing. I took the fact that it was installing to mean that the dependencies were satisfied
* The "version mismatch" error message isn't very helpful. It should say which version is running on the server, and which on the client
* It should be possible to synchronise across minor version changes, especially if the server is ahead of the client
* The Android client should phone home to find out if there's a new version available. I know, normal people use Play. Just an old man yelling at clouds here...

Thanks for your help!

Revision history for this message
Peter Bienstman (peter-bienstman) wrote :

For the packaging aspects, it's really beyond Mnemosyne to change the way standard Linux packaging approaches work.

It has always been possible to sync across versions when the database format didn't change, it's just that recently there have been some changes which prevented this.

The 'phoning home' really is the task of Google Play or your alternative, as you mentioned, not Mnemosyne :-)

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.