Skip to content

NumFOCUS Small Development Grant Fall 2022

Daniel Althviz Moré edited this page Jul 11, 2024 · 8 revisions

Improving Spyder IDE UX/UI

Summary

We propose to continue the work started in Spyder 5 to improve the User Experience (UX) and User Interface (UI) of its different components. Specifically, we would like to implement the agreed enhancements in the Spyder ux-improvements repository, where decisions were made regarding the usability and functionality aspects of Spyder’s interface after a lengthy discussion process with its team.

Description

As part of a concerted effort to improve Spyder’s UX/UI, its team started to define the necessary improvements to provide a more consistent interface for its users in the second half of 2020. To keep track of these discussions, a new repository was created, the ux-improvements one [1]. There, a thorough review was done to better understand Spyder’s entire interface and the current functionality offered by each of its panes, and agree on the desired one. From this work, Spyder 5.0 was released in April 2021 with a new color system, as well as a new set of icons. However, a good number of decisions were left to be implemented after that [2], when a new API to create plugins, also added in version 5, was finished and stabilized. This task took most of the team’s efforts until the end of last year, but we are now ready to resume the planned UX/UI work for Spyder 6, to be released next year.

This grant would move the project forward in several ways by bringing a better user experience and overall usability to Spyder. In particular, we plan to implement the following enhancements:

  • Add menu entries to start new code evaluation consoles for any Conda or Pyenv environment found in the system [3]. The current process to do that is quite cumbersome and not intuitive at all.
  • Improve how code cells are discovered and used [4]. Code cells make it very easy to run a file in chunks, but at the moment it is far from easy to understand how to get started with them.
  • Consolidate linting results in a single pane [5]. Right now it is not easy to browse all errors and warnings displayed in Spyder’s Editor, a functionality available in most IDEs.
  • Simplify how the Profiler pane works and make it easier to find and use [6]. Profiling is an important task in scientific computing because it helps to quickly find bottlenecks during execution. However, it’s not easy to use because there are few graphical profilers available for Python that are also integrated in IDEs.
  • Improve the usability of the Variable Explorer [7]. This pane is quite important for many users and it can be enhanced by providing a way to filter variables, reload them when they are opened in our specialized viewers, and showing tooltips when header names are too long.
  • Show an explanatory message for panes that appear empty at startup [8]. This will help new users to quickly understand how to use them.
  • Provide a better grouping of the many configuration options that can be set in Spyder Preferences and through it menus [9]. There are some pane entries in Preferences (e.g. the Editor one) and menus (e.g. Source) which have too many options without a clear structure, which make them difficult to navigate.
  • Implement a new design for pane tabs to make them visually distinct from files and consoles [10]. This way users would have less trouble navigating the many Spyder panes (more than 10 at the moment).
  • Remove the old Spyder 2 icon set because it is incomplete and outdated [11].
  • Use a default set of fonts for the interface [12]. In this way, Spyder would have the same look and feel in different operating systems.

With this proposal we aim to fund Juan Bautista-Rojas, a recently joined junior developer who has done a great job helping the project with a previously awarded NumFOCUS Small Development Grant proposal (Improving the Spyder IDE installation experience [13]). Juan Sebastian will be supervised and working with one of our core developers (Daniel Althviz-Moré), for 6 months full-time in order to develop as many UX/UI improvement decisions as possible.

Notes:

[1] Spyder ux-improvements repository: https://github.com/spyder-ide/ux-improvements

[2] Spyder ux-improvements repository issue ready for implementation: https://github.com/spyder-ide/ux-improvements/issues?q=is%3Aopen+is%3Aissue+label%3Aready-for-implementation

[3] https://github.com/spyder-ide/ux-improvements/issues/10

[4] https://github.com/spyder-ide/ux-improvements/issues/30

[5] https://github.com/spyder-ide/ux-improvements/issues/21

[6] https://github.com/spyder-ide/ux-improvements/issues/20

[7] https://github.com/spyder-ide/ux-improvements/issues/17

[8] https://github.com/spyder-ide/ux-improvements/issues/11

[9] https://github.com/spyder-ide/ux-improvements/issues/75

[10] https://github.com/spyder-ide/ux-improvements/issues/4

[11] https://github.com/spyder-ide/ux-improvements/issues/43

[12] https://github.com/spyder-ide/ux-improvements/issues/31

[13] Improving the Spyder IDE installation experience (previously awarded grant) https://github.com/spyder-ide/spyder/wiki/NumFOCUS-Small-Development-Grant-Spring-2022#improving-the-spyder-ide-installation-and-usage-experience

Benefit to Project/Community

The implementation of this project will have a positive impact because the Spyder community will have a more intuitive, consistent and easy to use interface to work with. Many Spyder users have already expressed concerns about serious inconsistencies between the way some components currently work and their expected behavior. Furthermore, we consider this would be quite helpful to new users, who represent a significant portion of our total users, because it would allow them to better grasp how Spyder works on their own, even without prior experience with Python. A nice side effect of this is that it would decrease the team’s support efforts related to explaining to users how different Spyder panes operate.

Improving the UX/UI of graphical applications is an often overlooked task in open source projects due to the pressures of adding new features and maintaining the current ones. However, we consider the mentioned improvements in this area that landed in Spyder 5 were very well received by our community. That is because we did not do major functional changes between versions 4 and 5, but the number of downloads has almost doubled since, at least on PyPI (35k in April 2021 vs 55k now).

A major benefit to the Spyder project itself will be that Juan Bautista-Rojas, currently a junior developer who is working on a NumFOCUS Small Development Grant to improve the Spyder installation experience, will be able to continue working on the Spyder project full-time for another 6 months. This funding would also give him the opportunity to continue building up the necessary experience to start a career in open source while allocating time to continue his contributions to the project.

References

Timeline of Deliverables

  • Month 1:
    • Add new menu entries to start consoles for Conda and Pyenv environments.
    • Improve how code cells are discovered and used.
  • Month 2:
    • Consolidate linting results in a single pane.
  • Month 3:
    • Simplify how the Profiler pane works and make it easier to find.
    • Show an explanatory message for panes that appear empty at startup.
  • Month 4:
    • Improve the usability of the Variable Explorer.
  • Month 5:
    • Provide a better grouping of configuration options.
  • Month 6:
    • Implement a new design for pane tabs.
    • Remove the old Spyder 2 icon set.
    • Use a default set of fonts for the interface.

Project Team

  • Juan Bautista-Rojas (Spyder junior developer to be funded) - @jsbautista
  • Daniel Althviz-Moré (core developer, main reviewer) - @dalthviz
  • Spyder volunteer contributors interested in the project

Results

As planned in the proposal, we achieved the addition of several changes to Spyder UI/UX. From defining and implementing a new style for panes tabs, to adding a new console menu entry to launch consoles from a specific Python interpreter. Also, we restarted the discussions around Spyder UI/UX decisions and ideas. All the work done in the proposal was included as part of the Spyder 6.0.0 alpha releases (Spyder 6.0.0a1 and Spyder 6.0.0.a2). Particulary, the following PRs can be mentioned:

Clone this wiki locally