Мой путь в GSOC был очень реалистичным опытом создания качественного проекта. Создание предложения, принятие и работа под руководством наставника со строгой проверкой качества кода имеют важное значение для создания хорошего программного обеспечения. Я рад, что отправил свое предложение в организацию Oppia по проекту Добавление SVG-редактора в Rich Text Editor(RTE). Я собираюсь написать о том, как я узнал о GSOC и о своем опыте участия в программе.

Все понятие веб-разработки было представлено мне моими старшими в рамках Zense, клуба разработчиков IIIT-Бангалор. Я был настолько заинтригован, что хотел копнуть глубже. После присоединения к Zense, мотивированный, я ознакомился с некоторыми фреймворками для веб-разработки, такими как React и Ruby on Rails. Мое первое реальное знакомство с вкладом с открытым исходным кодом произошло во время Hacktoberfest, когда я сделал 5 PR ради футболки и нескольких наклеек (хотя так и не получил их). Я приобрел уверенность в концепции развития, работая над некоторыми проектами и небольшими стажировками. В рамках переговоров с Zense меня познакомили с GSOC как с возможностью получить опыт работы. Мотивированный, я начал изучать GSOC и потенциальные организации GSOC-2020.

Мои связи с Оппией:

Я начал изучать организации 2019-GSOC, связанные с веб-разработкой. Одной из таких организаций была Oppia, которая предоставила онлайн-платформу для эффективного и приятного обучения. Моей первой задачей было развернуть его на моем локальном компьютере, что было довольно сложно в первый раз. И я был ошарашен количеством строк кода в каждом файле. Но благодаря подробной документации и сообществу Oppia я смог разобраться в кодовой базе. Я начал работать над некоторыми хорошими первыми выпусками и был очень счастлив, когда мой PR был объединен. По мере того, как я продвигался в решении вопросов, меня пригласили стать членом организации. Посмотрев на различные команды в Оппиа, я решил присоединиться к команде Learners and Creators Experience (LACE). Как член команды я посещал еженедельные встречи Hangouts, где мы обсуждали и решали проблемы, с которыми сталкиваются пользователи.

Анонс проектов:

Наконец, был объявлен список организаций, отобранных для участия в GSOC-2020, и я с облегчением обнаружил, что Оппиа входит в число организаций. Вскоре после этого был объявлен и список проектов. После просмотра списка из 17 проектов меня заинтересовало добавление редактора SVG в проект RTE. Мой интерес к SVG-редактору был вызван тенденцией колледжей использовать холст HTML в своих проектах и ​​моим собственным опытом работы с Canvas. Изучив несколько библиотек, я решил использовать LitellyCanvas для редактора svg. После некоторых предложений и некоторых исправлений к моему проекту я представил предложение. 4 мая 2020 года были объявлены результаты GSOC, и мои молитвы были услышаны.

Период связи с сообществом:

В этот период была проведена встреча с участием всех отобранных студентов и наставников. Двенадцать студентов из пяти разных стран были отобраны Oppia для участия в GSOC-2020. Там нас тепло встретили и проинформировали о процессе оценки. Оппиа также организовала игру в шахматы с участием всех студентов и наставников, которая была очень соревновательной. Поскольку я уже был членом команды LACE, я был хорошо знаком со своим наставником Кевином Томасом. Поэтому я начал работать над своим проектом в начале мая, чтобы получить преимущество и предотвратить любые задержки. В течение этого периода GSOC у меня также была возможность помочь сообществу Oppia в процессе тестирования выпуска. Я участвую в тестировании выпуска Oppia уже более 8 месяцев. Это хорошо спланированный процесс, который также помог мне быть в курсе новых функций, представленных в Oppia. Я также смог помочь некоторым новым участникам, а также помочь им в настройке сервера на их локальной машине. Это была замечательная возможность помочь сообществу открытого исходного кода.

Период работы:

Я начал с попытки интегрировать LiterallyCanvas в компонент angular, так как angular был интерфейсным фреймворком, используемым Oppia. Попробовав несколько методов, я, наконец, использовал пряжу для включения пакета. Согласно рабочему процессу Oppia, я поднял свой первый PR с необходимыми изменениями в бэкэнде, после чего последовала интеграция LitellyCanvas с использованием компонента Angular. Базовый редактор SVG был завершен после того, как были включены необходимые внешние тесты. Самой большой проблемой, с которой я столкнулся, было то, что мы узнали, что LiterallyCanvas официально никем не поддерживается, несмотря на то, что последний релиз был выпущен в мае месяце. К этому моменту мне пришлось очистить почти всю свою работу и начать искать другие жизнеспособные альтернативы для LiterallyCanvas. Одной из таких библиотек была Fabric JS. Fabric js предоставляла базовые функции для редактора, но не предоставляла редактора плагинов, который предоставил LiteallyCanvas. Поэтому мне пришлось создать весь редактор с пользовательским интерфейсом, похожим на LitellyCanvas. Это был трудный процесс, так как я не планировал такую ​​возможность. После некоторых дополнительных усилий мне удалось полностью собрать редактор и интегрировать его с RTE. Это был действительно ценный опыт, когда я узнал, что иногда проект может потребовать модификаций на ходу. Мне также повезло, что я начал реализацию проекта раньше и смог закончить редактор вовремя. После этого мне пришлось реализовать необходимые внешние тесты и сквозные тесты, чтобы убедиться, что редактор не содержит ошибок и не дает сбоев при изменении кода. После того, как все испытания были завершены вместе с исправлениями ошибок, редактор SVG был представлен на рабочем сервере. В качестве следующего шага мне нужно было создать несколько пользовательских инструментов для редактора. Это включало инструмент кривой Безье, инструмент круговой диаграммы и инструмент импорта svg.

Опыт работы:

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

Это было замечательное путешествие, и я многое узнал о том, как разрабатывается и завершается хороший программный проект. Программное обеспечение с открытым исходным кодом — одна из лучших платформ для улучшения навыков программирования и важная часть мира программирования. Таким образом, Google Summer Of Code предоставляет прекрасную возможность внести свой вклад в проекты с открытым исходным кодом, а также одновременно улучшить свои навыки. Поэтому я настоятельно рекомендую студентам воспользоваться этой возможностью и желаю вам удачи в ваших будущих начинаниях.

Заставьте это работать, сделайте это правильно, сделайте это быстро.