Это служит местом для всего моего опыта, накопленного при участии в проекте Pyodide (от Mozilla) в качестве студента-разработчика на GSoC 2019. Если вы так же поражены огромным потенциалом этого проекта, как и я, читайте дальше!

До GSoC

Меня всегда интересовало пространство, лежащее на стыке науки и программного обеспечения. Таким образом, области моих интересов обычно охватывают научные инструменты, научные вычисления, науку о данных, визуализацию данных, а также немного машинного обучения. Фактически, два моих предыдущих опыта связаны с созданием инструментов в сфере здравоохранения.

В поисках проектов с открытым исходным кодом, в которые я мог бы внести свой вклад и, надеюсь, стать студентом-разработчиком позже, я обнаружил Pyodide, цель которого — перенести весь стек Python Scientific в браузер.

Йодид и пиодид

Хорошо известно, что браузеры могут запускать только JavaScript — язык Интернета. Однако недавний прогресс с Web-Assembly или WASM для краткости позволяет нам запускать код C/C++/Rust в браузере. Pyodide стремится добавить поддержку запуска Python в браузере в дополнение к поддерживаемым выше языкам.

Сначала я не мог понять, зачем это нужно или почему это важно. Именно тогда я увидел его вариант использования в Iodide (еще один проект Mozilla) — портативном ноутбуке с открытым исходным кодом на основе браузера без трения для научных вычислений и обработки данных в Интернете.

Йодид и пиодид вместе поразили меня до глубины души. Они создали возможность многоязычных вычислительных блокнотов с поддержкой HTML/CSS/Markdown/JavaScript/Python — с поддержкой обмена данными между этими языками (намного больше, чем может сделать обычный блокнот Jupyter).

Более подробную информацию о Iodide и Pyodide можно найти в этих замечательных сообщениях в блогах, авторами которых являются сами создатели этих проектов!





Вклад

Выбрав Pyodide, я начал вносить свой вклад, как и любой новичок — решая проблемы новичков! Обычно это требует настройки среды разработки, выяснения того, как вещи связаны между собой, и, самое главное, постановки правильных вопросов!

Во время всех вышеперечисленных сложных шагов сообщество успокаивало меня — каждое сомнение / предложение было учтено, и мои наставники направляли меня на решение этих проблем один за другим.

Я участвовал в течение примерно 4 месяцев, прежде чем подать заявку на GSoC, и мне удалось выполнить 6 объединенных PR, 1 открытый PR, 3 новых выпуска, а также просмотреть 4 PR моего наставника.

Этап подачи заявки

Этап подачи заявки обычно предназначен для написания предложения, планирования того, как можно запланировать дела, какие задачи нужно выполнить на какой неделе и т. д.

Поскольку я участвовал с самого начала, у меня было четкое представление о Pyodide и о том, как он работает. Тем не менее, я все еще мало знал о фактическом проекте GSoC на лето. Я использовал это время, чтобы читать, читать и читать! В конце концов, я смог выяснить некоторые приблизительные детали относительно того, какие файлы, какой стек, какие вещи мне нужно коснуться, чтобы иметь возможность запустить проект GSoC — подробности о которых упомянуты ниже:

Проект

Короче говоря, мой проект GSoC заключается в разработке нового бэкенда/движка рендеринга для библиотеки matplotlib на основе API HTML5 Canvas Element. В настоящее время Pyodide использует бэкэнд Agg по умолчанию из matplotlib, который включает в себя набор файлов C++, скомпилированных в WASM. Поскольку нашей конечной целью является запуск matplotlib в Интернете, должна быть возможность разрешить matplotlib использовать веб-API (тег ‹canvas›) в качестве механизма рендеринга по умолчанию, т. е. логика заполнения пикселей на экране теперь будет регулироваться функциями Canvas API.

Потенциальные преимущества этого нового рендерера на основе Canvas включают уменьшение размера и объема памяти окончательной сборки, ускорение графического процессора для рендеринга через matplotlib и возможность использовать веб-шрифты внутри matplotlib вместе с локально установленными шрифтами.

Предложение

Написание предложения — это повторяющийся процесс, и мне потребовалось около 10 дней, чтобы скомпилировать всю информацию, которую я собрал, исследуя вышеупомянутый проект — это также включало в себя изучение внутреннего устройства библиотеки matplotlib. К счастью, мой наставник (Майкл Дроэттбум) был бывшим ведущим разработчиком matplotlib, и поэтому я мог связаться с ним, чтобы задать любые сомнения, которые у меня были, а также получить представление о том, куда двигаться дальше.

Окончательное предложение, которое я представил, можно посмотреть здесь.

Оглядываясь назад, я не мог быть более взволнован летом. Работа над Pyodide, но, что более важно, работа с Mozilla — это полезный и полезный опыт. Вы становитесь частью распределенного сообщества и работаете над важными и значимыми проектами. Это волнующий опыт, который, я надеюсь, никогда не закончится.

PS — Если вам удастся задержаться для следующих сообщений в блоге из этой серии, я буду подробно рассказывать о внутренностях matplotlib, интересных вещах, которые можно делать с Pyodide, и прогрессе в проекте.

До тех пор, Подписание

— Мадхур Тандон