Зима 2017
Что такое КВОК?
KWoC расшифровывается как Kharagpur Winter of Code. Это 5-недельная онлайн-программа, в рамках которой учащиеся, плохо знакомые с разработкой с открытым исходным кодом, получают наставничество, чтобы начать работу с открытым исходным кодом, а также подготовить их к работе с открытым кодом. исходные программы, такие как Google Summer of Code (GSoC). KWoC организован Обществом открытого исходного кода Харагпура (KOSS), группой энтузиастов открытого исходного кода из IIT, Харагпур.
Я давно хотел попасть в мир открытого исходного кода, но не знал, как и с чего начать. Когда я случайно просматривал Quora, я наткнулся на эту программу KWoC. Спасибо Sammriddhi Sinha за упоминание об этой программе где-то в своих ответах. Я быстро посетил их веб-сайт и был в восторге от качества и структуры программы. После тщательного прочтения учебных пособий, часто задаваемых вопросов и просмотра всех проектов мне потребовалось несколько дней, чтобы сосредоточиться на одном проекте.
Мой проект
В то время я был совершенно новичком в разработке с открытым исходным кодом. Я знал основы Python, веб-разработки с использованием Flask и основы GitHub из курса, который я прошел летом 2017 года. Веб-разработка — не моя чашка чая. Поэтому мне нужно было выбрать приложение, желательно на Python, чтобы проект был в пределах моих возможностей. Было много проектов в основном на Python. Lexico привлек мое внимание с первого взгляда. Будучи энтузиастом словарного запаса, у меня в голове было похожее приложение, которое я намеревался сделать когда-нибудь в будущем. Поэтому я остановился на Lexico.
ЛЕКСИКО
Lexico — это приложение командной строки, написанное на Python, где пользователь может получить всю информацию о любом слове из командной строки. Вдохновителем этого является Кшитий Сараоги, который также был моим наставником. Я быстро составил предложение, похожее на то, что ожидалось для проекта GSoC, и отправил его Кшитию. Я выбрал еще пару проектов, потому что было разрешено несколько проектов, но в конце концов отказался от них, потому что концентрироваться на одном было лучше, чем теряться в нескольких проектах.
ПУТЕШЕСТВИЕ ПО КОДИРОВАНИЮ
- Начало работы –
Выполнив все регистрации, формальности и получив зеленый сигнал от моего наставника, я пошел дальше и разветвил проект в свою учетную запись, а также клонировал его на свой локальный компьютер. Я установил и настроил пакет в соответствии с инструкциями README. Затем я пытался понять обширный код в первые дни, так как это был первый раз, когда я имел дело с большими базами кода. Я начал с сообщения о двух проблемах, которые обнаружил в коде.
После просмотра нескольких видеороликов на YouTube по Git я создал шпаргалку, содержащую большинство команд Git, вместе с другим участником, Aashish M. Для начала я начал работать над первой проблемой, о которой сообщил. Я усердно пытался пару дней и смог написать код, который был теоретически правильным. Несмотря на то, что мой патч не работал, я отправил его в виде Pull Request, чтобы мой наставник мог его просмотреть.
Первые дни, то есть в первую неделю декабря, были довольно разочаровывающими, так как патч не работал, я терялся в большой кодовой базе, мой уровень владения Git был очень низким, и было трудно понимать классы и объекты в Python. Kshitij, мой наставник предложил пару методов отладки и установить приложение в режиме разработки. Режим разработки был действительно благом для моего дальнейшего прогресса.
С 8 по 21 декабря я не мог внести большой вклад, так как шли экзамены за последний семестр. Оценка середины полугодия состоялась примерно 15 декабря, и я ее прошел. До этого мне удалось подать только один PR.
- Некоторый прогресс –
После того, как мои экзамены закончились, я снова вернулся к Lexico. Еще раз просмотрел код, чтобы понять каждую часть кода, и я понял все взаимодействия между методами, чего не понимал изначально. Перебазировал код с исходным кодом репозитория, потому что к тому времени другому участнику удалось слить свой патч.
Я только что начал работать над функцией, позволяющей экспортировать словарный запас в пригодный для использования файл. Я просмотрел книгу «Automate the Boring Stuff with Python» А. Л. Свейгарта и узнал о модуле csv в Python. Мне удалось успешно добавить команду для экспорта найденных ранее слов в файл CSV.
После PR я начал работать над украшением проекта, так как это была функция TODO. Добавлены стикеры Halo во время загрузки слов и ожидания просмотра словаря. Кроме того, логотип проекта также отображался во время инициализации приложения. Я смог сделать это за один день и представил это как мой третий PR.
Добившись прогресса с двумя PR, я с уверенностью вернулся к своему первому выпуску. Патч, который не удался. Кшитий предложил добавить за исключением этого. Сначала я пытался реализовать это с помощью разных подходов, где я пытался установить связь между методами. В конце концов я обработал исключение, связанное с ошибкой, связанной с неправильным написанием слова. Подал это как PR и закрыл свой первый неудачный PR.
- Последние дни –
Кшитий просмотрел PR через пару дней и предложил изменения во всех трех. Прежде всего, они должны были включать в себя хорошие привычки кодирования. Сделав то же самое, наконец, патч для экспорта словаря был объединен. Это был мой первый успешный вклад в разработку открытого исходного кода. Патч для украшения и сообщения о неправильном написании был отложен Kshitij.
Я с нетерпением жду продолжения участия в проекте, по крайней мере, для этих двух патчей, которые еще предстоит объединить. Декабрь пролетел слишком рано, и ручками наступила дата, то есть 31 число. В целом, для меня, новичка, это был огромный опыт обучения. Мне удалось окунуться в мир открытого исходного кода с KWoC-17.
КЛЮЧ ОБУЧЕНИЯ :-
- Основы Git и GitHub
- Классы Python, методы и взаимодействие между ними
- Пакет библиотеки Click для приложений CLI
- Использование API (Wordnik API использовался для получения данных о словах)
- Использование баз данных для быстрого доступа (ранее найденные слова сохранялись в базе данных)
- Понимание больших кодовых баз
- Документация и общение (четкие и конкретные вопросы)
- Терпение при отладке
ОШИБКИ НОВИЧКА :-
- Думал, что git commit и git add — одно и то же.
- Утверждал, что отправил несколько исправлений в предложение, даже не понимая код
- Прошу наставника отладить мой код
- Слишком легко сдаваться
- Пренебрежение читаемостью кода, который я написал
- Не проверка работы патча перед отправкой PR
РЕЗЮМЕ
- Проект: Лексико
- Наставник: Кшитий Сараоги
- Сообщено о проблемах: 2
- Открыто PR: 4
- PR закрыты: 2
- Объединенные PR: 1
- Полученные знания: много :-)
Огромное спасибо моему наставнику Кшитию за то, что он терпел все мои глупые вопросы и терпеливо отвечал на них. Огромное спасибо KOSS, ИИТ КГП за организацию такой замечательной программы. Пожалуйста, продолжайте в том же духе в ближайшие годы. Это очень помогает новичкам участвовать в проектах с открытым исходным кодом. И определенно KWoC — это ступенька для претендентов на GSoC. В моем обучении определенно была крутая кривая. Я с нетерпением жду возможности внести свой вклад все больше и больше. Опять же, это было бы невозможно без Kshitij или KOSS. Слава им. Это был удивительный опыт с KWoC-2017.