Зима 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. Затем я пытался понять обширный код в первые дни, так как это был первый раз, когда я имел дело с большими базами кода. Я начал с сообщения о двух проблемах, которые обнаружил в коде.

  1. Отображаемые сообщения, которых нет в базе данных
  2. Нежелательные символы в примерах

После просмотра нескольких видеороликов на YouTube по Git я создал шпаргалку, содержащую большинство команд Git, вместе с другим участником, Aashish M. Для начала я начал работать над первой проблемой, о которой сообщил. Я усердно пытался пару дней и смог написать код, который был теоретически правильным. Несмотря на то, что мой патч не работал, я отправил его в виде Pull Request, чтобы мой наставник мог его просмотреть.

ссылка PR1

Первые дни, то есть в первую неделю декабря, были довольно разочаровывающими, так как патч не работал, я терялся в большой кодовой базе, мой уровень владения Git был очень низким, и было трудно понимать классы и объекты в Python. Kshitij, мой наставник предложил пару методов отладки и установить приложение в режиме разработки. Режим разработки был действительно благом для моего дальнейшего прогресса.

С 8 по 21 декабря я не мог внести большой вклад, так как шли экзамены за последний семестр. Оценка середины полугодия состоялась примерно 15 декабря, и я ее прошел. До этого мне удалось подать только один PR.

  • Некоторый прогресс –

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

Я только что начал работать над функцией, позволяющей экспортировать словарный запас в пригодный для использования файл. Я просмотрел книгу «Automate the Boring Stuff with Python» А. Л. Свейгарта и узнал о модуле csv в Python. Мне удалось успешно добавить команду для экспорта найденных ранее слов в файл CSV.

ссылка PR2

После PR я начал работать над украшением проекта, так как это была функция TODO. Добавлены стикеры Halo во время загрузки слов и ожидания просмотра словаря. Кроме того, логотип проекта также отображался во время инициализации приложения. Я смог сделать это за один день и представил это как мой третий PR.

ссылка PR3

Добившись прогресса с двумя PR, я с уверенностью вернулся к своему первому выпуску. Патч, который не удался. Кшитий предложил добавить за исключением этого. Сначала я пытался реализовать это с помощью разных подходов, где я пытался установить связь между методами. В конце концов я обработал исключение, связанное с ошибкой, связанной с неправильным написанием слова. Подал это как PR и закрыл свой первый неудачный PR.

ссылка PR4

  • Последние дни –

Кшитий просмотрел PR через пару дней и предложил изменения во всех трех. Прежде всего, они должны были включать в себя хорошие привычки кодирования. Сделав то же самое, наконец, патч для экспорта словаря был объединен. Это был мой первый успешный вклад в разработку открытого исходного кода. Патч для украшения и сообщения о неправильном написании был отложен Kshitij.

Я с нетерпением жду продолжения участия в проекте, по крайней мере, для этих двух патчей, которые еще предстоит объединить. Декабрь пролетел слишком рано, и ручками наступила дата, то есть 31 число. В целом, для меня, новичка, это был огромный опыт обучения. Мне удалось окунуться в мир открытого исходного кода с KWoC-17.

КЛЮЧ ОБУЧЕНИЯ :-

  1. Основы Git и GitHub
  2. Классы Python, методы и взаимодействие между ними
  3. Пакет библиотеки Click для приложений CLI
  4. Использование API (Wordnik API использовался для получения данных о словах)
  5. Использование баз данных для быстрого доступа (ранее найденные слова сохранялись в базе данных)
  6. Понимание больших кодовых баз
  7. Документация и общение (четкие и конкретные вопросы)
  8. Терпение при отладке

ОШИБКИ НОВИЧКА :-

  1. Думал, что git commit и git add — одно и то же.
  2. Утверждал, что отправил несколько исправлений в предложение, даже не понимая код
  3. Прошу наставника отладить мой код
  4. Слишком легко сдаваться
  5. Пренебрежение читаемостью кода, который я написал
  6. Не проверка работы патча перед отправкой PR

РЕЗЮМЕ

  • Проект: Лексико
  • Наставник: Кшитий Сараоги
  • Сообщено о проблемах: 2
  • Открыто PR: 4
  • PR закрыты: 2
  • Объединенные PR: 1
  • Полученные знания: много :-)

Огромное спасибо моему наставнику Кшитию за то, что он терпел все мои глупые вопросы и терпеливо отвечал на них. Огромное спасибо KOSS, ИИТ КГП за организацию такой замечательной программы. Пожалуйста, продолжайте в том же духе в ближайшие годы. Это очень помогает новичкам участвовать в проектах с открытым исходным кодом. И определенно KWoC — это ступенька для претендентов на GSoC. В моем обучении определенно была крутая кривая. Я с нетерпением жду возможности внести свой вклад все больше и больше. Опять же, это было бы невозможно без Kshitij или KOSS. Слава им. Это был удивительный опыт с KWoC-2017.