QuantStack open-source internship program
QuantStack is a software corporation, headquartered in France, that specializes in the development and enhancement of open-source scientific computing software. Our global team is composed of highly skilled maintainers who have been instrumental in shaping key open-source projects over the years, including Jupyter, conda-forge, and numerous others.
Our contributions to the open-source community include enabling collaborative editing in Jupyter, developing the innovative JupyterLab debugger, and creating the mamba package manager. We have also pioneered initiatives such as JupyterLite, among others, showcasing our commitment to driving progress in the field.
Members of the QuantStack team are not just contributors, but also active leaders in key open-source initiatives. Our team members hold prominent roles in the NumFOCUS foundation, have organized the latest edition of the JupyterCon conference at the renowned Cité des Sciences, and manage the PyData Paris meetup group and conference.
QuantStack is incorporated in France, with team members spanning France, Germany, Austria, the United Kingdom, and India.
The QuantStack open-source internship program
Today, we are announcing a new internship program that aims to empower a new cohort of open-source contributors and future maintainers to make an impact within our ecosystem.
We are seeking several talented interns who will work in pairs on various open-source projects that we are passionate about. Join us in our mission to advance scientific computing software and foster a collaborative, global open-source community.
Internship # 1: Making Jupyter notebooks more accessible
Project Jupyter, a widely adopted tool with millions of users globally, has made significant strides in the realm of data science and educational workflows. However, its current limitations in accessibility hinder its potential to reach an even broader audience.
According to estimates, up to 15% of the population relies on accessibility features in web applications. These features range from enhanced color contrast for visually impaired users to full keyboard navigability and compatibility with assistive technologies.
Accessibility is not just a feature; it’s a necessity for creating an inclusive digital environment. This is especially crucial for educational tools, which serve as the foundation for empowering future citizens. Despite ongoing efforts to make Jupyter more accessible, there is still a long way to go. In the current state of things, many people are de facto excluded from using these educational tools.
A significant aspect that needs improvement is the accessibility of the content within Jupyter notebooks themselves. Even if the Jupyter user interface were to become fully accessible, the notebooks often contain inaccessible elements. These include images without descriptions, or improperly nested section titles that disrupt keyboard navigation within the document.
Helping notebook authors create more accessible content
The goal of this internship is to enhance the notebook authoring UI to encourage the creation of accessible content. This will be achieved by displaying inline warnings when notebook content deviates from best practices, such as the absence of alternative text for images.
Additionally, we propose to explore the possibility of enabling notebook authors to manually input alt text for images displayed in the output areas of notebooks. This feature could significantly improve the accessibility of visual content within Jupyter notebooks.
This is a unique opportunity to contribute to a large open-source project adopted at a global scale, benefit from the mentorship of core developers, and have a positive impact for end users.
Internship # 2: Teaching with robots
For a child learning to code, witnessing a program they’ve written come to life through the movement of a robot can be far more rewarding than watching an equivalent animation on a screen. This vision was championed by Seymour Papert, a professor at MIT and the creator of the educational programming language Logo. Papert was a pioneer in teaching programming through robotics.
Unfortunately, most educational robots are quite expensive — in the thousands of euros — and schools cannot afford one per child. Consumer products and toys such as Lego Mindstorm and Lego Boost are considerably cheaper. Their Bluetooth interfaces can be used from a web browser using the experimental Web Bluetooth protocol, which makes them a good match for usage with web-based tools such as Jupyter.
Integrating Jupyter with consumer grade robotics toys
The goal of this internship project is to enhance the user experience of operating popular toy robots from within the Jupyter environment. We will build upon the existing prototypes created by QuantStack team members, leveraging the Web Bluetooth API to ensure seamless functionality within both JupyterLab and JupyterLite.
A significant aspect of this project will be the creation of an intuitive asynchronous programming model. This model should be user-friendly enough for young students to easily program concurrent tasks, while also aligning with our team’s recent advancements in asynchronous Jupyter kernels.
Another critical area of focus will be the optimization of Bluetooth connection management and the selection of the appropriate robot, particularly in a classroom setting. This will involve refining the processes to ensure they are robust, efficient, and user-friendly.
This internship is an opportunity to work on a rapidly evolving open-source stack, with a playful focus.
Internship # 3: Collaborative CAD in JupyterLab
Document co-editing has become an integral part of our digital lives, making us collectively more productive. The tedious exchange of documents via email back-and-forth is a thing of the past.
Looking to the future, the potential of co-editing extends far beyond text documents and will apply to all user interfaces for editing, from computer-aided design (CAD) to image processing. We firmly believe that the transition to co-editing will be even more transformative for larger, more complex projects that are inherently social and require the collaborative efforts of large teams. Whether you are designing a stadium, an airplane, or a ship, you need to coordinate diverse expertise to build a unified mod
This is why we proposed and developed the JupyterCAD prototype: to bring co-editing to CAD and 3D modeling. The first version of JupyterCAD was released in July 2023 (and announced in this article).
Expanding upon JupyterCAD for a better online editing experience
The goal of this internship will be to improve the JupyterCAD user experience. JupyterCAD is still at an early stage of development. While it has solid foundations, it is evolving very quickly as the team is making rapid iterations on the project.
One area of focus will be the improvement of keyboard shortcuts for common user actions, and the improvement of the mouse-based interactions in the 3D editor for e.g. rotating and translating an object around without having to modify numerical values by hand.
On the subject of co-editing, we aim to improve the camera tracking features, by e.g. displaying the position of the cameras of collaborators similarly to how co-editing workflows in word processing allows showing the cursors of collaborators in the document.
Other areas of improvement to JupyterCAD will be the development of a new 2-D sketcher, as the current version available in JupyterCAD is very minimal.
This internship is a great opportunity to contribute to a rapidly evolving open-source project, under the mentorship of core developers of key open-source projects of our ecosystem.
Internship # 4: In-browser computational economics
Jupyter has emerged as a valuable tool in the realm of economics education. One notable initiative is QuantEcon, a unique resource for computational economics education. We are convinced that by enabling computational economics educational content in JupyterLite, we can facilitate adoption and dissemination on an even larger scale.
Our project aims to integrate JupyterLite with Dynare and its ecosystem. Dynare is a versatile solver for a wide class of economic models, namely Dynamic Stochastic General Equilibrium (DSGE) models, which encompasses many models used daily by researchers and institutions such as central banks and governments. Dynare provides a Domain-Specific Language (DSL) for defining models.
In-browser computational economics with Dyno 🦖
This internship will be co-managed by the JupyterLite developers at QuantStack and Pablo Winant, a professor of economics at ESCP and École Polytechnique.
The main objective of the internship is to create a specialized editor for Dynare models in JupyterLab. This will allow model authors to validate their models in real-time as they develop and adjust them, and visualize the results interactively.
As Dynare is primarily designed for the proprietary Matlab environment (though it also supports GNU Octave), our focus will be on the Dyno implementation. Dyno provides an alternative that utilizes the PyData stack, eliminating the need for MatLab, while remaining compatible with the Dynare DSL.
We will validate the platform with a collection of textbook economic models. Corresponding Dynare model files will be shipped alongside the package as examples. Considered models include:
- Real Business Cycle model
- A textbook new Keynesian model (from Gali 2015)
- Smets & Wouter model: the medium scale workhorse DSGE model which is the foundation for many policy models used in central banks
- A DSGE version of the Dynamic Integrated Climate-Economy (DICE) model developed by William Nordhaus. The DICE model aims to integrate the estimated impact of climate change and the measures taken to mitigate it.
Apply!
If you can work in the greater Paris area and you would like to apply for this internship program, you can apply via Welcome to the Jungle here.