After more than three years in development and more than 5000 commits from 60 authors around the world, Spyder 4 finally saw the light on December 5, 2019! I decided to wait until now to write a blogpost about it because shortly after the initial release, we found several critical performance issues and some regressions with respect to Spyder 3, most of which are fixed now in version 4.1.2, released on April 3rd 2020.
This new release comes with a lengthy list of user-requested features aimed at providing an enhanced development experience at the level of top general-purpose editors and IDEs, while strengthening Spyder's specialized focus on scientific programming in Python. The interested reader can take a look at some of them in previous blog posts, and in detail in our Changelog. However, this post is not meant to describe those improvements, but to acknowledge all people that contributed to making Spyder 4 possible.
Spyder 4 is the first version developed with financial support from multiple companies and organizations, as well as donations by the international user community. However, as a project, we couldn't have been able to reach the level of maturity needed to receive and handle that support without the pivotal opportunities Travis Oliphant, former CEO of Anaconda and current leader of Quansight, gave me to work in Scientific Python. Thanks to him, I became part of Anaconda Inc. in 2015; I was able to hire a small small team to improve Spyder within Anaconda in late 2016; and I was hired by Quansight to work solely on Spyder in 2018. As with other projects in our ecosystem, such as Bokeh, Dask and Numba, Spyder benefited immensely from Travis' trust in the role these efforts and ours could play in the future. He certainly believed in the vision their maintainers worked so hard to make a reality, even if their beginnings were humble and their chances of survival uncertain. Therefore, my first big acknowledgment is to Travis: thanks for giving us a chance!
I also want to thank our community for its continued support. As I've witnessed during my years as Spyder's lead developer, many newbies and veterans alike keep choosing Spyder as their primary tool for scientific programming in Python. It's really you, the members of this fantastic community, which keep Spyder relevant in a highly competitive field by using and contributing back to it. Furthermore, when the future looked grim, after my team and I were let go from Anaconda at the end of 2017 (not by Travis' decision), a lot of users came to our rescue by making donations through our Open Collective page. That, and a NumFOCUS development grant we received the next year, filled us with confidence and allowed us to continue with Spyder's development in 2018, even after losing part of our team in the process.
Last year it was also a pleasant surprise to learn that several companies were interested in seeing Spyder prosper and thrive. Through Quansight Labs and its Community Work Order concept, we were able to sign contracts with two of them: TDK-Micronas and Kite. Their support was critical to finish Spyder 4 because it allowed me to hire most of my old Anaconda team back, plus two new additions, to work full-time on the project. Therefore, I can't thank them enough for showing up just at the right time!
And finally, even when I am often seen as the public face of Spyder, due to my presence in our issue tracker and Stack Overflow, it's really the Spyder team that is in charge of implementing new features and fixing most bugs. So my last round of acknowledgments goes to them. I was fortunate enough to convince some of the most talented Colombian software developers to work for the project, and to attract the interest of several other equally accomplished developers from around the world. All of them did a hell of a job in this release!
Jean-Sébastien Gosselin contributed our new Plots pane in its entirety; Quentin Peter did a complete re-architecting of our IPython console, which enabled numerous improvements to our debugger; Jitse Niesen added auto-saving functionality to our editor; Brian Olsen contributed the initial implementation of the
runcell command; and CAM Gerlach made significant improvements to our documentation.
Gonzalo Peña-Castellanos helped us to greatly improve the user experience of code completion and linting in the editor, implemented most of the enhancements to the Files pane, and refactored and improved our configuration system; Edgar Margffoy single-handedly created a client to support the same protocol used by VSCode to provide completion and linting for lots of programming languages, added code snippet completions and vastly improved code folding in the editor; Daniel Althviz developed the necessary infrastructure to install and use Kite smoothly within Spyder, and added the new object viewer to the Variable Explorer.
Finally, our junior developers, Stephannie Jimenez and Juanita Gomez, although still finding their way around our complex codebase, managed to make important contributions, such as improving the icons we use per file type in Files (Juanita), and allowing users to run code in an external system terminal on macOS (Stephannie).
I hope you all enjoy the results of this massive effort! And happy Spydering!!!