GSOC contributor instructions
Short application checklist:
- Talk with your prospective mentors about what they expect of GSoC applicants and get help from them to refine your project ideas. Listening to your mentors' recommendations is very important at this stage!
- Make a PR. Usually, we expect GSoC contributors to fix a bug and have made a pull request. Your code doesn't have to be accepted and merged, but it does have to be visible to the public and it does have to be your own work (mentor help is ok, code you didn't write is not).
- Write your application (with help from your mentors!) The 2019 application template is available here. All applications must go through Google's application system; we can't accept any application unless it is submitted there.
- Use a descriptive title. Good example: "Pyodide: Improve the build system" Bad example: "My gsoc project"
- Make it easy for your mentors to give you feedback. If you're using Google docs, enable comments and submit a "draft" (we can't see the "final" versions until applications close). If you're using a format that doesn't accept comments, make sure your email is on the document and don't forget to check for feedback!
- Submit your application to Google before the deadline. We actually recommend you submit a few days early in case you have internet problems or the system is down. Google does not extend this deadline, so it's best to be prepared early! You can edit your application up until the system closes.
GSOC project ideas
A bundler for Python / Pyodide
Python is historically not a language designed for the Web. In particular, the size of Python packages matters little when used on the host OS. However, download size becomes critical when running Python applications in the browser with Pyodide. One way to reduce size is to create a bundler for Python applications, similar to how it's done for Javascript.
Type conversion between Python (mypy) and Javascript (Typescript)
Pyodide includes a Foreign Function Interface (FFI) between Python and JavaScript. Both languages can use type annotations, and it would be useful to explore how types could be statically generated for converted objects. For instance, generating Typescript types from Python annotations and vice versa.
Sandoxing Python execution with Deno
Pyodide is used extensively in the browser. It's also possible to use it server side to run in Node.js, however, this does not provide the sandboxing functionality that many users require. It would be interesting to explore adding support for the Deno runtime which does include the sandbox functionality by default.
Benchmarking Pyodide
Investigating the performance of Pyodide through benchmarking using popular tools like pyperformance, taking into consideration factors such as the task being run, the type of browsers, and the number of C-extension, with the aim of better understanding the extent of its slower performance compared to native Python.
Improving micropip
micropip is a lightweight package installer for Pyodide. Compared to pip, micropip has quite limited functionality. It would be useful to add more features to micropip. It would be also interesting to explore making micropip to be used in non-Pyodide environments.