Joplin indirect reliance on Python problematic for Fedora 31

Indeed. mock --enable-network yields am rpm.

1 Like

I’ve got very mixed feelings toward tools like npm and electron. As long as it works it’s okay, but if anything goes wrong it quickly becomes a maintenance nightmare. Joplin has already suffered a couple of times from sudden changes in the electron environment and there is nothing you can do about it. It is kind of vendor lock-in, nothing less.

RedHat/Fedora demands building from self contained rpms for good reasons, since that garantees reliability and results are reproducible.

I hear you. I have talked to a number of Red Hat package maintainers on this particular topic. For example, I maintain the Riot Chat RPMs (https://github.com/taw00/riot-rpm) which are hands-down my most used packages and there is a great deal of pressure to get those into Fedora proper. A couple issues with that is vetting the opensource-ness of all the stuff that gets sucked in (electron by default pulls in non-opensource bits, by the way) and then of course, even if you can include all the needed dependencies, strip out the known FOSS-failing bits, maintenance becomes a bit of a nightmare.

So, at this time, I kind of throw my hands up and keep doing it in the less-than-ideal way that I do today. It works. It’s 99% opensource (or at least I think) and the build-process is … it is what it is.

If I were a Javascript guru, I suspect I could manage this better, but I am not. I really should rectify that eventually.

-t

To finish this discussion: I think it is up to tools like electron to take steps to play nice with package management constraints. It was fun while it lasted but sooner or later they start losing popularity due to these issues.

1 Like

I’m new to Joplin, but one thing I noticed is that it apparently requires Translate Toolkit for its localization toolchain (see https://github.com/laurent22/joplin/blob/master/Tools/build-translation.js#L6). Translate Toolkit is written in Python (though AFAIK it was ported to Python 3).

This is only to build the translation files (which are JSON files). While the app is running, translating strings is done using plain JavaScript.