From c5cb57260980de1d76bf708792a9c83db12c611d Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Thu, 12 Dec 2024 19:28:15 -0600 Subject: [PATCH] Add a blog post covering Daniel's work on Spyder 6 and beyond --- src/routes/blog/spyder-6-daniel/+page.md | 102 ++++++++++++++++++ .../spyder-6-daniel/daniel-contributions.png | Bin 0 -> 12676 bytes .../spyder-6-daniel/daniel-release-page.png | Bin 0 -> 14706 bytes .../file-switcher-improvements.png | Bin 0 -> 12177 bytes .../remote-kernel-issue-windows.png | Bin 0 -> 13700 bytes 5 files changed, 102 insertions(+) create mode 100644 src/routes/blog/spyder-6-daniel/+page.md create mode 100644 src/routes/blog/spyder-6-daniel/daniel-contributions.png create mode 100644 src/routes/blog/spyder-6-daniel/daniel-release-page.png create mode 100644 src/routes/blog/spyder-6-daniel/file-switcher-improvements.png create mode 100644 src/routes/blog/spyder-6-daniel/remote-kernel-issue-windows.png diff --git a/src/routes/blog/spyder-6-daniel/+page.md b/src/routes/blog/spyder-6-daniel/+page.md new file mode 100644 index 0000000..11ba997 --- /dev/null +++ b/src/routes/blog/spyder-6-daniel/+page.md @@ -0,0 +1,102 @@ +--- +title: "Spyder 6 under the hood: Editor migration, remote dev QA, test overhaul and more!" +author: + - dalthviz + - camgerlach +tags: Feature, Spyder6 +category: Releases +pub_date: 2024-12-13 +summary: "Beyond the headline features, there's a lot more new and improved under the hood in Spyder 6. Daniel Althviz, Spyder's release manager and co-maintainer, was at the forefront of much of it, and we're here to share the highlights with all of you and what he plans to work on next!" +--- + +[Daniel Althviz](https://github.com/dalthviz) is one of our longest-tenured Spyder developers, having started working on the project near the end of 2016. +Now eight years later, he's the project's co-maintainer and its our release manager, responsible for the many steps required to release Spyder across all our various platforms. +On top of that, he is also the lead maintainer of two of the most important libraries on which Spyder, and a lot of other software depends: the [QtPy](https://github.com/spyder-ide/qtpy) GUI abstraction layer and the [QtAwesome](https://github.com/spyder-ide/qtawesome) icon font framework. + +In 2023, Spyder received a [Chan Zuckerberg Initiative](https://chanzuckerberg.com/) Essential Open Source Software for Science [Cycle 5 grant, number 384](https://chanzuckerberg.com/eoss/proposals/enhancing-spyder-ide-remote-support-for-scientific-research-in-python/) to support a new remote development architecture and features in Spyder and related development. +This has helped us fund Daniel's work on many of his contributions to Spyder 6 connected to that! + +Thanks to all of that, Daniel has put in a lot of work toward Spyder 6's development. +Read on to hear the highlights!

+ + +![The Spyder Contributions page on GitHub, showing a graph of all contributions over time, and Daniel highlighted as the number two contributor between Feb 1 2023 and the present, after lead maintainer Carlos Cordoba](daniel-contributions.png "Daniel has the second-most contributions to the core Spyder repository since Feb 2023") + +## Spyder Editor migration to new plugin API + +We introduced a brand new plugin API with Spyder 5, and as part of that refactored most of Spyder's panes and many other of its internal components to be plugins that use it, rather than tightly coupled with Spyder itself. +That both makes Spyder much more modular and easier to maintain, but also gives external plugins all the same power and flexibility that those Spyder internal panes and components have! +However, the one major exception to that in Spyder 5 was the Editor, which wasn't migrated yet due to the high level of complexity and the further new features that would need to be added to the plugin API. + +Migrating the Editor to use the modular plugin API was the final piece of the puzzle to complete the API migration making Spyder a fully modular, pluggable application, avoid having to maintain two duplicate APIs and allow interoperability with other plugins, such as those being developed for remote development in Spyder 6. +Therefore, along with its related API additions and improvements, it also was a prerequisite for fully implementing our new remote development architecture. +Therefore, we prioritized it for Spyder 6, with Daniel taking the lead on implementing it! + +Given the size of the task, Daniel split it into a number of steps, each corresponding to a GitHub Pull Request. +First, [he split](https://github.com/spyder-ide/spyder/pull/20893) the ``CodeEditor``, the main widget for editing code, into a component in charge of code completion and linting, and another one in charge of editing. +This helped separate those concerns and improve improve overall modularity and maintainability. +Then, [he refactored the ``EditorStack`` code](https://github.com/spyder-ide/spyder/pull/21194), the widget in charge of displaying multiple tabbed ``CodeEditor`` views, to facilitate the migration. +Finally, he migrated the Editor itself to the new API in two steps: an [initial migration](https://github.com/spyder-ide/spyder/pull/21353), and a [followup cleanup](https://github.com/spyder-ide/spyder/pull/22005). +This last step alone took six months of hard work, but it will help to address a lot of technical debt accumulated throughout the years.

+ + +![The Spyder remote kernel status dialog showing a successful connection, next to the IPython Console showing a kernel error](remote-kernel-issue-windows.png "Daniel helped find and solve remote development issues like this one") + +## Remote development architecture quality testing + +Once the Editor migration was moving along, helped review, test and QA the new remote development architecture. +As part of that, he also developed a number of fixes and improvements to address the issues he found. +From that, he [implemented UI/UX improvements](https://github.com/spyder-ide/spyder/pull/22303) for the graphical components used to create a remote connection, based on the issues he found. + +Furthermore, during his checks of remote connections were working on Windows, he discovered several errors with when running async code, which [he fixed](https://github.com/spyder-ide/spyder/pull/22137). +Finally, he also encountered problems when trying to tunnel ports through SSH, which he [also solved](https://github.com/spyder-ide/spyder/pull/22223](https://github.com/spyder-ide/spyder/pull/22223). +This all helped make our remote development architecture much more stable and usable. + + +## Spyder test suite overhaul + +To help support testing of Spyder 6 and its new components, Daniel helped make the Spyder test suite faster and more robust. +The core team was witnessing constant errors and delays when running automated tests in continuous integration systems, which made it necessary for Daniel invest several weeks to fix that so that the Spyder 6 development process was smoother. +Therefore, [Daniel's work](https://github.com/spyder-ide/spyder/pull/22077) improved this situation, as well as making the tests more efficient overall.

+ + +![Spyder's file switcher dialog, with a path box to enter a file name above a list of matching files and their properties](file-switcher-improvements.png "Spyder's File Switcher, with the improvements from Daniel and Angela's work") + +## Review work and project management + +Much of Daniel's responsibilities involve reviewing, mentoring and assisting with the work of other developers, an important role in any project. +Daniel helped [Ryan Clary](https://github.com/mrclary), the developer who created a new set of installers for Spyder 6 using [Conda-Constructor](https://conda.github.io/constructor/), which are more powerful, flexible and updateble, and support installing packages, environments and Spyder plugins locally and remotely, as needed for the new remote development functionality among others. +In addition, he tested and validated the installers' update process, as well as finding and reporting several bugs on Windows. + +Daniel also reviewed and assisted with [Angela Remolina](https://github.com/AngelaRemolina)'s work on major improvements to Spyder's File/Symbol Switcher. +Angela, an intern who worked for on Spyder over several months, migrated the File/symbol switcher to a plugin, so it is modular and accessible to other plugins. +As part of her project he helped manage, she also added lightning-fast, [ripgrep](https://github.com/BurntSushi/ripgrep)-accelerated searching of all files in the current project. + +Finally, along with [Juan-Sebastian Bautista](https://github.com/jsbautista) whom he has mentored and managed, Daniel performed an in-depth review of the numerous UI/UX enhancements included in Spyder 6. +This work has made Spyder much easier and more intuitive to use, including for users with accessibility needs and with translated versions. +Thanks to Daniel's mentorship, Juan-Sebastian looks to continue his work with Spyder into the future.

+ + +![Spyder release page, showing a list of version numbers and their corresponding information and files](daniel-release-page.png "Daniel has released dozens of recent Spyder versions") + +## Spyder release management + +Since February 1, 2023, thanks to the CZI EOSS 5 grant funding, Daniel has also been active as Spyder's Release Manager, taking on the substantial task of handling the many critical steps required to produce stable packages for the many platforms we support, including: + +* [PyPI](https://pypi.org/project/spyder/) (pip) +* [Conda-Forge](https://anaconda.org/conda-forge/spyder) (Conda) +* [Spyder installers](https://www.spyder-ide.org/download/), and the +* [GitHub releases](https://github.com/spyder-ide/spyder/releases). + +Since then, he has served as Release Manager for one minor and eight bugfix releases for Spyder 5 (from 5.4.3 to 5.5.6), and eight pre-releases, one major release and three bugfix releases for Spyder 6 (from 6.0 alpha2 to 6.0.3). +Without his work, our users wouldn't have been able to benefit from all the testing and stable releases that we have, especially for Spyder 6! + + +## What's next? + +In the immediate future, Daniel will continue his critical role as the Release Manager for Spyder, ensuring users continue to see regular stable updates for Spyder 6. +Additionally, he'll further his partnership with Juan-Sebastian, this time focused on maintaining Spyder 6 and fixing any further bugs that are found. +He'll also work on further improving [Jupyter QtConsole](https://qtconsole.readthedocs.io/en/stable/), the frontend that Spyder (in the IPython Console) and other users and applications employ to provide a rich, interactive graphical interface to local and remote kernels. +Finally, he'll help implement the frontend interface to remote file systems added as part of our remote development work, allowing users to manipulate remote files just like those locally! + +We're looking forward to seeing the fruits of all that work, and as always, happy Spydering!🕸️ diff --git a/src/routes/blog/spyder-6-daniel/daniel-contributions.png b/src/routes/blog/spyder-6-daniel/daniel-contributions.png new file mode 100644 index 0000000000000000000000000000000000000000..a4da84a5f2beeeef1c1a982b7ee19e94c26f3377 GIT binary patch literal 12676 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 TNQv^R!zooo4Ta)orh)$pptYw& literal 0 HcmV?d00001 diff --git a/src/routes/blog/spyder-6-daniel/daniel-release-page.png b/src/routes/blog/spyder-6-daniel/daniel-release-page.png new file mode 100644 index 0000000000000000000000000000000000000000..9d09eeade23bd131418044e74ded9bebc9044cf3 GIT binary patch literal 14706 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 literal 0 HcmV?d00001 diff --git a/src/routes/blog/spyder-6-daniel/remote-kernel-issue-windows.png b/src/routes/blog/spyder-6-daniel/remote-kernel-issue-windows.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1358fece06157385dbbf8d3d3ea1411615b6b4 GIT binary patch literal 13700 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