Empowering SymPy Live and SymPy Gamma with Pyodide/Brython and Modern Front-end Frameworks
Abstract
This proposal aims to enhance the functionality and performance of SymPy Live and SymPy Gamma, two online calculators and interactive teaching tools based on the SymPy Python library. The project will integrate Pyodide/Brython and modern front-end frameworks to enable Python code execution directly in the browser and improve the user interface. The specific tasks include integrating Pyodide/Brython with SymPy Live and SymPy Gamma, updating the front-end design using modern frameworks, and improving the parsing of input expressions in SymPy Gamma. Additionally, documentation and tests will be written to ensure the applications are well-documented and tested and can be easily maintained in the future. The expected outcome is a modified version of SymPy Live and SymPy Gamma with improved functionality and a modern front-end design.
Introduction
SymPy is a Python library for symbolic mathematics. It provides a wide range of features for algebraic manipulation, calculus, and equation solving. SymPy Live and SymPy Gamma are two online calculators and interactive teaching tools based on SymPy. SymPy Live is an interactive console version of SymPy that is integrated into SymPy's documentation. SymPy Gamma is a SymPy version of WolframAlpha, providing users with the ability to enter any mathematical expression and have it computed automatically. Both applications are currently hosted on Google App Engine, which is costly for the SymPy project.
This proposal aims to migrate SymPy Live and SymPy Gamma to Pyodide/Brython and modern front-end frameworks, enabling SymPy to run in the browser's JavaScript environment on the client-side. This will reduce hosting costs and improve the user experience. Additionally, the parsing of input expressions in SymPy Gamma will be improved to support more types of inputs.
Objectives
The objectives of this project are:
- Migrate SymPy Live and SymPy Gamma to Pyodide/Brython to enable Python code execution directly in the browser.
- Update the front-end design using modern frameworks such as Svelte, SolidJS, Astro, TailwindCSS, WindiCSS, or UnoCSS.
- Improve the parsing of input expressions in SymPy Gamma to support more types of inputs.
- Write documentation and tests for the modified versions of SymPy Live and SymPy Gamma.
Methodology
The project will be divided into the following phases:
Phase 1: Pyodide/Brython Integration
The first phase will involve integrating Pyodide/Brython with SymPy Live and SymPy Gamma. This will enable Python code execution directly in the browser and reduce hosting costs. Pyodide/Brython will be used to run the SymPy code in the browser environment.
Phase 2: Front-end Design Update
The second phase will involve updating the front-end design of SymPy Live and SymPy Gamma using modern frameworks such as Svelte, SolidJS, Astro, TailwindCSS, WindiCSS, or UnoCSS. This will improve the user experience and make the applications more modern and eco-friendly.
Phase 3: Parsing Improvement
The third phase will involve improving the parsing of input expressions in SymPy Gamma to support more types of inputs. This will enhance the functionality of the application and make it more user-friendly.
Phase 4: Documentation and Testing
The final phase will involve writing documentation and tests for the modified versions of SymPy Live and SymPy Gamma. This will ensure that the applications are well-documented and tested and can be easily maintained in the future.
Deliverables
The following deliverables are expected from this project:
- Modified versions of SymPy Live and SymPy Gamma with Pyodide/Brython integration and modern front-end design.
- Improved parsing of input expressions in SymPy Gamma to support more types of inputs.
- Documentation and tests for the modified versions of SymPy Live and SymPy Gamma.
Timeline
The project will take 175 hours to complete. The timeline for the project is as follows:
Phase | Tasks | Time |
---|---|---|
Phase 1 | Pyodide/Brython Integration | 50 hours |
Phase 2 | Front-end Design Update | 50 hours |
Phase 3 | Parsing Improvement | 50 hours |
Phase 4 | Documentation and Testing | 25 hours |
Prerequisites
The following skills are required for this project:
- Front-end coding experience (CSS, JavaScript)
- Python programming skills
- Familiarity with Pyodide/Brython
- Familiarity with modern front-end frameworks such as Svelte, SolidJS, Astro, TailwindCSS, WindiCSS, or UnoCSS
Conclusion
This project aims to enhance the functionality and performance of SymPy Live and SymPy Gamma by migrating them to Pyodide/Brython and modern front-end frameworks. The project will also improve the parsing of input expressions in SymPy Gamma to support more types of inputs. The expected outcome is a modified version of SymPy Live and SymPy Gamma with improved functionality and a modern front-end design.