Your friendly neighborhood SPYDER

Some spiders change colors to blend into their environment. It’s a defense mechanism. But the “spider” we are going to talk about changes environment to blend in the user. Spyder is an open-source IDE (integrated development environment) for Python programming language. It offers easy to use editor, debugging tool with unique data exploration features which makes Spyder a great tool for data analytics use and it is included in the Anaconda toolkit by default. Spyder is short for Scientific Python Development Environment.

Spyder — The Scientific Python Development Environment

What Spyder tries to achieve

The vision of Spyder is to provide a powerful scientific environment written in Python, for Python developers. It thrives and evolves to offer a combination of the advanced editing, analysis, debugging, and profiling functionality of a comprehensive development tool with the data exploration, interactive execution, deep inspection, and beautiful visualization capabilities of a scientific package.

Moreover, the Spyder IDE has been developed as an extensible framework with many built-in features. Its abilities can be extended even further via its plugin system and API. Furthermore, Spyder can also be used as a PyQt5 extension library, allowing developers to build upon its functionality and embed its components, such as the interactive console, in their PyQt software.

Spyder is included by default in the Anaconda toolkit and runs in the Anaconda environment. In 2018, Spyder became one of the projects funded by NUMFOCUS. NUMFOCUS is a nonprofit organization dedicated to supporting key scientific computing projects; promoting sustainability in the open-source ecosystem; educating the next generation of scientists, engineers, developers, and data analysts.

End-user mental model

The end-user mental model can be envisioned as form of application and functionality of the application 1.

The form of the system can be viewed as five main components :

  • Editor
  • Interactive console
  • Documentation explorer
  • Variable explorer
  • Development tools

These five components form the integrated development environment of Spyder.

Spyder — GUI Spyder IDE user interface

The functionality of Spyder mainly focuses on scientific analysis of any kind using the mentioned five components. The end-users for Spyder mainly consist of scientists, engineers, data analysts and students. Hence the Spyder platform continuously evolves and innovates plugins to support statistical analysis carried out in python.

Spyder — Simplified End User mental Model

Key Capabilities and Properties

Editor

Spyder - Editor

Sypder has a multi-lingual editor that natively incorporates a number of powerful tools for ease of use and for an efficient editing experience. The key features include real-time code and style analysis using pyflakes and pycodestyle, syntax highlighting using pygments, on-demand completion, calltips and go-to-definition features using rope and jedi, a function/class browswer, and horizontal and vertical splitting just to name a few.

Additionally, within the editor, the user can define a “code cell” . A cell can be easily executed all at once in the IPython console which will be discussed below. This feature is much like a cell in MATLAB, however, without need to enable a “cell mode” because in Spyder cells are detected automatically.

IPython Console

Spyder - Console

The IPython console is another powerful tool that allows the user to execute commands, interact with and visualize data within a number of fully-featured IPython interpreters. A user can have as many terminal instances that all run in a separate process, allowing them to execute code, interrupt, restart, and terminate a shell without affecting any other process. It also allows for easy testing code without interrupting the primary session.

Variable Explorer

Spyder - Variable Explorer

In Spyder, the variable explorer visualizes all the namespace contents; all global object references (variables, functions, modules, etc.) of the current IPython Console. It also allows the user to interact with the contents through GUI-based editors. The variable explorer also offers support for editing lists, arrays, etc. It also allows for instant visualizations of the data as shown in the image below.

Spyder - Histogram

Profiler

Spyder - Profiler

The profiler recursively determines the run time and number of calls for each function and method called within a file. It breaks down each procedure into their individual units. This tool allows the user to easily identify bottlenecks in the code, points at the exact statements that need optimization and will calculate the performance delta.

Debugging

Spyder - Debugging

Spyder supports debugging through integration with the ipdb debugger within the IPython Console. Ipdb allows breakpoints and execution flow to be visualized within the Spyder GUI as seen above.

Stakeholder Analysis

The stakeholders has been identified based on the Spyder Official Repository and the official website of Spyder. The stakeholders has been classified using the classes defined by Rozanski and Woods in the book 2.

Acquirers

This class of stakeholders are usually responsible for strategic decisions such as planing the road map for the system or search for funding for further development[^Software Systems Architecture].

According to the Spyder Official Repository Spyder is mainly funded from two main source. The first source of funding is from QUANSIGHT and NUMFOCUS in form of sponsorship. The second source of funding comes from public donation through Open Collective. At the time of writing this report (March 2020) the project got about 310 public contributers and the estimated public contribution in a year is about 6,300 USD.

Assessors

Assessors usually monitor the legality concerns regarding the product and make sure that it meets the standards according to the requirements of the system. According to [^Software Systems Architecture] Accessors mainly come from company internals or from a qualification company.

Since Spyder is an open source software, open to public contribution, they provided a code of conduct in their repository. The project maintainers (Carlos Cordoba and Gonzalo Peña-Castellanos) have put a set of standards (e.g. “Gracefully accepting constructive criticism”) and it is noted that they are allowed to remove/ edit any contribution and comment in case of violation of these standards. This make these maintainers the Assessors.

Communicators

These are the group of stakeholder that explain the system to other parties. It can be explaining for developers or giving out information about the product to the public according to [^Software Systems Architecture].

For identifying the communicators we analyzed the top maintainers that answer to the comments in the issues section of the repository and in the Spyder Gitter chat. The result shows that (Carlos Cordoba and Gonzalo Peña-Castellanos) are most responsive for communicating with the public. They are also most responsible for assigning bugs and issue fixes to other main developer of the project.

Developers

Build and deploy the system from a set of requirement and specifications. They are also concerned with platforms, maintainability, flexibility of the system.

According to the Spyder git insight the top 5 developers (Based on number of commits) are:

By the time of writing this report the project has 149 contributers.

Maintainers

Track the status and progress of the system after being deployed and when it is being used by the end user. Maintainers are responsible for development documentation, debug environment, fix issues and preserve the knowledge over time.

The maintainers of Spyder are mainly (Carlos Cordoba and Gonzalo Peña-Castellanos). However some of the questions and bug fixes are also being answered by the other users.

Suppliers

Suppliers build and deploy the infrastructure necessary for the product to run properly. According to [^Software Systems Architecture] this group is usually not involved in building, running or using the system and they act more as a bridge between the product and the end user.

Some of the main platforms that are necessary for Spyder to run properly are listed below:

  • PyQt GUI development toolset
  • CircleCI CI/ CD tool
  • Kite Autocompletion of the code

Support staff

This group is responsible for providing support in case the end user have any problem with the product. Since Spyder is an open source project, most of the questions and problems are answered by the open source community in platforms such as Stackoverflow, Github, Gitter, etc.

System administrators

System administrators run the system once it has been deployed. Since Spyder is an open source project the users are the administrators.

Testers

The role of this group is to evaluate the system in order to establish whether or not it is suitable for deployment and use or it needs further improvement before release. As mentioned in the [^Software Systems Architecture]“Although developers also perform testing, testers should be independent and do not have the same sense of ownership of the system’s implementation.”

The maintainers of the Spyder already perform test on their platform. However since it is an open source software, some of the end users might also perform some test to find bugs and report it to the maintainers or send a pull request. In order to merge the pull request, the developed code by the open source community needs to pass the tests which comes with the master branch code.

Users

Users define the system’s functionality and will ultimately make use of it and their needs should be satisfied by the product. Since Spyder is an open source IDE (Integrated Development Environment) for Python with more focus on data analysis use cases, most of it’s user are people working in the field of data analysis, machine learning.

Competitors

A list of some other projects with the same use case as Spyder is mentioned below.

Stakeholder mapping

Can color code the stakeholders based on if you think they are a supporter or a critic.

One of the main reasons to do stakeholder analysis is to categorize different stakeholders in order to properly address their needs. According to 3 the stakeholders can be divided into 4 categories based on their power and interest in the project.

Stakeholder Mapping

Current context

After Anaconda, Inc’s sponsorship for the project ended in mid-November 2017, developer efforts spent on Spyder Plugins were refocused on core Spyder IDE which caused a significant delay in the release of Spyder 4. The latest version of Spyder viz. Spyder 4.0.1 was released in January 2020 which had some improvements over the previous major release of Spyder 4. This release was made possible with the support of Quainsight, Kite, and other open source supporters. The main features of this release include:

  • Dark theme for the whole application
  • A separate plot pane to browse all inline figures generated by IPython console.
  • Integration with Kite completion engine.
  • Full support for inspecting any kind of Python object through the Variable Explorer
  • Simplified Files pane interface

and many more

Currently, Spyder is funded by contributors on Opencollective. Along with this, the project also receives some financial support from Quainsight and NumFOCUS.

Future roadmap

As we interpret from looking at the issues and release notes, Spyder is quite complete as far as functionality and current need is concerned. A good thing about Spyder is that it incorporates the use of third-party plugins like Spyder Notebook, Spyder Terminal etc. These plugins make Spyder more modular so any functionality that doesn’t seem like a core functionality but sounds important can be added as a plugin. An example of this is the inclusion of IPython notebook as a plugin into Spyder. According to the Spyder’s github page, the future roadmap includes working towards the development of Spyder 5. Some major tentative features that could be incorporated are:

  • Python 3 only support
  • New “Viewer” pane to display HTML content
  • Improved git support
  • docrepr integration.

We would like to end with :

With great Python, comes great Spyder.

  1. James O. Coplien and Gertrud Bjrnvig. 2010. Lean Architecture: for Agile Software Development. Wiley Publishing, link 

  2. Rozanski, Woods Software Systems Architecture. website. Retrieved February 24, 2020. 

  3. Aubrey L. Mendelow, Environmental Scanning-The Impact of the Stakeholder Concept, link 

Spyder
Authors
Michel Woo
Pradyot Patil
Purvesh Baghele
Soroosh Poorgholi