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

Migrate Open Data Editor to PySide6 #712

Open
pdelboca opened this issue Jan 13, 2025 · 0 comments
Open

Migrate Open Data Editor to PySide6 #712

pdelboca opened this issue Jan 13, 2025 · 0 comments

Comments

@pdelboca
Copy link
Member

In an effort to make ODE more sustainable we are going to be migrating the implementation to PySide6 (the official Python module from the Qt for Python project). We have been doing some early implementations and we are confident that we can achieve 80% of the Core functionality of the application with a considerable smaller codebase.

Why migrating?

  • ODE architecture is the result of an exploration of ideas. Starting from Frictionless Components (for React), then Frictionless Application and lastly Open Data Editor. This exploration of ideas led to and architecture that it is too much for what we are trying to achieve.
  • After all the feedback sessions, ODE is now a more consolidated application with a clear vision and narrowed scope. We no longer need to maintain nor develop features that justified a client/backend architecture.
  • Electron (when useful for some use cases) adds several layers of complexity.
  • On the last two years, ODE has accumulated several technical debt: we are running on an old version of MUI, one of our core dependencies disappeared and we are running on an old version of React. This will involve development effort that we would rather invest in a more sustainable codebase.
  • Our current architecture started being quite complex for some use cases, which makes extending the application more complex than needed.

In a nutshell, the exploratory phase of the Open Data Editor finished and the current architecture is too much for the problem we are trying to solve.

Why PySide6?

  • Qt is a mature and well consolidated framework. We expect to not be shocked by dependencies disappearing or massive changes in React.
  • PySide6 makes the task of working with files way more easy as is desktop native (instead of a web browser wrapper that communicates with the OS through a bridge).
  • PySide6 is a Python package, which makes the integration with frictionless-py easy.
  • PySide6 reduces the complexity of the architecture: no need for a backend, client wrapper of the backend, a bridge to communicate with the OS and React Components for the UI.
  • PySide6 contains a powerful styling mechanism, which makes easy to reuse our current CSS styling.
  • Some quick prototypes with PySide6 proved that it is powerful enough to replicate 80% of the core functionality with a significant smaller codebase.
  • Last but most important, PySide6 aligns better with our organizational structure and technology stack, which at the end of the day will reduce the cost and complexity of maintenance.
  • PySide6 (and Qt) has a stable API and Plugin mechanism, which could benefit and help creating a Plugin ecosystem for ODE.

Notes on the change

  • There are not going to be massive changes to the look and feel of the application (this is thanks to QSS Styling).
  • We are planning on support the same core features and functionalities we are currently supporting.
  • For the end user, there should be no difference.

Screenshots of the early implementation with PySide6

image

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant