Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modernize Desktop application build process #420

Open
nixjdm opened this issue Aug 10, 2017 · 3 comments

Comments

Projects
None yet
3 participants
@nixjdm
Copy link
Member

commented Aug 10, 2017

Releasing 3.0 / 3.0.1, and now working on a pre release of 3.1, I've come to the opinion that it really needs an update. Most of that code hasn't been touched in 2 years, and it's showing. It's a struggle to get it to work. I think it needs to be updated. So far, I've found that:

  1. It's generally out of date and prone to breaking by just sitting there. I had to make a few changes to produce the DMGs for the previous releases, and I'm running into new errors now.
  2. It is undocumented.
  3. It can't use Python 3. At the very least a dependency node-gyp is not compatible with Python 3, and I definitely won't be surprised if a lot of other things break too. Since we're supporting Python 3 now, the dmg should use it if possible.
  4. The whole gui is based on a very outdated electron-prebuilt. This cannot be trivially updated to use the modern electron.
  5. I'd like to give some thought to make binaries for other platforms. If we can do this it would be best done using as many cross-platform tools as possible. Making inroads to this may mean some big changes to the gui sub-project
  6. Currently the main project and the gui sub-project have separate dependency lists, namely, their package.json files for node. That's asking for trouble.
  7. There is no automated testing of the build process or of the build products. Granted, setting this up is non-trivial, but it would be very useful.
@nixjdm

This comment has been minimized.

Copy link
Member Author

commented Aug 10, 2017

I just made a label for other issues related to the Desktop App. https://github.com/lektor/lektor/issues?q=is%3Aissue+is%3Aopen+label%3Adesktop-app

@yagebu

This comment has been minimized.

Copy link

commented Aug 24, 2017

Hey, I'm a happy user of Lektor, thanks for your work on the project! I'm a maintainer of Fava, also a Python project that has an Electron GUI. Our situation is slightly different as the GUI wraps the web interface and doesn't just act as a "supervisor" of the process. There are still enough similarities so that our approach might give some ideas that could work for Lektor too. The build process goes as follows:

  1. We use Pyinstaller to compile Fava to a single executable (currently on Python 3.5).
  2. Use electron-builder to create an installer for the Electron GUI (dmg for MacOS, AppImage for Linux). We don't do a Windows build currently, mainly because our main dependency Beancount doesn't compile easily on Windows - otherwise that shouldn't be too hard to set up. When run on Travis, the builds get uploaded to Github as a pre-release.

Together, these two tools could probably make the shell scripts in gui/bin (apart from the imagemagick one) obsolete in a cross-platform way. Sadly, I probably won't have time to help with this myself in the near future, I hope this helps though. If you've got more in-depth questions regarding how Fava handles this, feel free to ask!

@edolnx

This comment has been minimized.

Copy link

commented Aug 25, 2017

Found an application called 0install that may help for making a multi-platform single app: http://0install.net/ Hope this is useful

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.