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

refactor/move_gui_from_core #1

Merged
merged 2 commits into from
Mar 3, 2023
Merged

refactor/move_gui_from_core #1

merged 2 commits into from
Mar 3, 2023

Conversation

JarbasAl
Copy link
Member

@JarbasAl JarbasAl commented Feb 8, 2023

move the gui logic from core to here, this allows gui to have a different release cycle and core to pin older versions

this will also allow us to define an exact version where we migrate from qt5 to qt6

needs a companion PR in core to import from here for backwards compat

benefits:

  • no imports from core
  • can introduce breaking changes faster than core adopts them (core pins version)
  • different release cycle, core will likely have periods with several releases without this getting any PR, the reverse may also be true
  • start of removing backwards compat, now properly named ovos-gui-service, mycroft-gui-service is an alias of core for compat and can be dropped in 0.1.0 as roadmaped
  • in many senses its like PHAL being extracted from mycroft.client.enclosure
  • still a requirement of ovos-core, its like skill class moving from core to workshop
  • allows for richer plugin integration, it can be a dependency of plugins and we can easily make extensions plugin based too

@AIIX
Copy link

AIIX commented Feb 8, 2023

Why is GUI being moved out of core ? It has no different release cycles and API does not depend on Qt5 vs Qt6 changes either, the protocol api has no changes between the versions either.

A user installing OVOS core is going to expect the GUI to work out of the box, making it a separate package will just cause more confusion for users installing OVOS core. Even if this is being thrown out of core for no valid reason, it is then at least should become a requirement to be included in the very minimal dependencies for core not depending on the [ALL] egg, this totally breaks packaging, this meta package was not even a requirement until now.

@JarbasAl JarbasAl marked this pull request as draft February 8, 2023 13:57
@JarbasAl JarbasAl added the enhancement New feature or request label Feb 8, 2023
@JarbasAl
Copy link
Member Author

JarbasAl commented Feb 8, 2023

this PR is WIP and needs other PRs in core, it will make more sense later

benefits:

  • no imports from core
  • can introduce breaking changes faster than core adopts them (core pins version)
  • different release cycle, core will likely have periods with several releases without this getting any PR, the reverse may also be true
  • start of removing backwards compat, now properly named ovos-gui-service, mycroft-gui-service is an alias of core for compat and can be dropped in 0.1.0 as roadmaped
  • in many senses its like PHAL being extracted from mycroft.client.enclosure
  • still a requirement of ovos-core, its like skill class moving from core to workshop
  • allows for richer plugin integration, it can be a dependency of plugins and we can easily make extensions plugin based too

@JarbasAl
Copy link
Member Author

JarbasAl commented Feb 8, 2023

note that this module was already naturally independent, it was developed under core but doesn't need any features from core now that things like config loading are independent of mycroft being importable

@AIIX
Copy link

AIIX commented Feb 8, 2023

I only will agree to this change if it becomes part of the minimal dependency of core which means git installing ovos-core even without an egg will continue to install the GUI service by default, if a platform decides to use it or not like any other systemd service is up to the image/platform and the user, this otherwise needs none of the above benefits to continue fully functioning, because it is very much dependent on core, and the protocol is not changing between any versions.

@AIIX
Copy link

AIIX commented Feb 8, 2023

The only things that would have made sense to move would have been the extensions, not the whole protocol implementation.

@JarbasAl
Copy link
Member Author

JarbasAl commented Feb 8, 2023

gui will still be part of core, but not minimal requirements, not even workshop or speech client deps are in there why would gui? gui already needs ovos-core[gui] anyways to ensure tornado is available

it will be added to gui requirements, full requirements, and skill requirements. but a minimal install means no GUI (like it means no speech or audio!)

all old imports from core for gui stuff will continue to work as before, this is making the code easier to maintain not removing it

@JarbasAl
Copy link
Member Author

JarbasAl commented Feb 8, 2023

side note, this also means @AIIX you will be the main maintainer of this repo, basically every PR coming to this repo will need to be approved by you

msg_data = msg['data']
else:
LOG.error(f"unknown message type, ignoring: {msg}")
return
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AIIX this is a bug fix, i added the else clause because the line after would throw error about msg_type and msg_data not being defined, unrelated to the PR just something pycharm flagged, but wanted to bring your attention to it

@JarbasAl JarbasAl mentioned this pull request Feb 28, 2023
25 tasks
@JarbasAl JarbasAl marked this pull request as ready for review March 3, 2023 01:30
@JarbasAl JarbasAl merged commit 9cc1db7 into dev Mar 3, 2023
@JarbasAl JarbasAl deleted the refactor/move_gui_from_core branch March 3, 2023 01:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants