Это здорово написать снова на этой неделе. В этом сообщении в блоге я расскажу о ключевых вещах, которые я изучил, чтобы внести успешный вклад в открытый исходный код. Первое, что я сделал, это проанализировал статью под названием «Содействие открытому исходному коду на Github». Я нашел эту статью увлекательной, поэтому я хотел бы поделиться своими основными докладами по этой статье на тот случай, если вы захотите просмотреть эту информацию, но просматривая это резюме.
Прежде чем перейти к моему резюме, я хотел бы добавить несколько идей, которые показались мне интересными, чтобы побудить других внести свой вклад в разработку открытого исходного кода.
- Изучайте новые навыки.
- Расширяйте свою сеть, знакомясь с новыми людьми.
- Узнайте о реальных приложениях.
- Создайте привычку к сотрудничеству, помощи и обучению.
Беллоу, я представляю свои записи.
Зачем вносить свой вклад в открытый исходный код?
- Улучшайте программное обеспечение, на которое вы полагаетесь.
- Совершенствуйте имеющиеся навыки.
- Познакомьтесь с людьми, которые интересуются подобными вещами.
- Найдите наставников и учите других.
Создавайте общедоступные артефакты, которые помогут вам повысить репутацию и построить карьеру
- По определению, вся ваша работа с открытым исходным кодом является общедоступной, а это означает, что вы получаете бесплатные примеры, которые можно использовать где угодно в качестве демонстрации того, что вы можете сделать.
- Изучайте навыки людей.
- Это дает возможность вносить изменения, даже небольшие.
Что значит внести свой вклад?
- Вам не нужно вносить код (на этом этапе академической программы мы должны вносить код).
- Вам нравится планировать мероприятия?
- Нравится ли вам дизайн?
- Вам нравится писать?
- Вам нравится организовывать?
Вы любите программировать?
- Спросите, можете ли вы помочь написать новую функцию.
- Автоматизируйте настройку проекта.
- Улучшить инструменты и тестирование.
Нравится ли вам помогать людям?
- Отвечайте на вопросы о проекте на Stack Overflow или других платформах.
- Отвечайте на вопросы людей по открытым вопросам.
- Помогите модерировать доски обсуждений или каналы общения.
- Вам нравится помогать другим программировать?
Ориентация на новый проект
Анатомия проекта с открытым исходным кодом
- Автор: Кто создал проект.
- Владелец: у кого есть административная собственность.
- Сопровождающие: участники, которые управляют организацией.
- Участники: все, кто внес свой вклад.
- Члены сообщества: Люди, которые используют проект.
Документация
- Лицензия: Должна быть лицензия с открытым исходным кодом.
- Readme: руководство по эксплуатации, чем полезен проект и с чего начать.
- Содействие: этот документ помогает людям вносить свой вклад и объясняет процесс.
- Кодекс поведения: Основные правила для участников.
- Другая документация: учебные пособия, пошаговые руководства или политики управления.
Инструменты для организации обсуждения
- Трекер проблем: место, где люди обсуждают проблемы.
- Запросы на вытягивание: когда люди обсуждают и анализируют текущие изменения.
- Дискуссионные форумы или списки рассылки: для тем для разговоров.
- Канал синхронного чата: непринужденная беседа, совместная работа и быстрый обмен мнениями.
Поиск проекта, в который можно внести свой вклад
Контрольный список перед тем, как внести свой вклад
- Соответствует определению открытого исходного кода: Лицензия.
- Активно принимает взносы: фиксация активности основной ветки.
- Последний коммит.
- Сколько участников?
- Как часто люди совершают сделки?
Проблемы проекта
- Сколько открытых вопросов?
- Сопровождающие быстро реагируют на проблемы?
- Активное обсуждение вопросов?
- проблемы недавние?
- вопросы закрываются?
Запросы проекта
- Сколько существует открытых запросов на включение?
- Быстро ли отвечают мейнтейнеры на запросы пула?
- Есть активное обсуждение?
- Являются ли запросы на вытягивание последними?
- Как давно были объединены запросы на вытягивание?
Проект приглашает
- Сопровождающие отвечают услужливо на вопросы в проблемах.
- Люди дружелюбны?
- Проверяются ли запросы на вытягивание?
- Благодарит ли сопровождающий людей за их вклад?
Как внести вклад
Эффективное общение
- Дайте контекст: объясните свою проблему, как ее воспроизвести. Если вы предлагаете идею, объясните, как эта идея может быть полезна для проекта.
- Сделайте домашнее задание заранее: покажите, что вы пытались, прежде чем просить о помощи.
- Делайте запросы короткими и прямыми: будьте лаконичны.
- Держите все сообщения в открытом доступе.
- Можно задавать вопросы, но будьте терпеливы.
- Уважайте решения сообщества.
- Прежде всего, держите его стильным.
Сбор контекста
- Прежде чем что-либо делать, сделайте быструю проверку, чтобы убедиться, что ваша идея нигде не обсуждалась.
- Проблемы подобны началу разговора или обсуждения.
- Запросы на вытягивание предназначены для начала работы над решением.
- Для легкого общения, такого как уточняющий вопрос или вопрос с инструкциями, попробуйте задать вопрос в других каналах чата, если они есть в проекте.
Открытие вопроса
- Сообщить об ошибках.
- Обсудите тему высокого уровня.
- Предложите новую функцию или идею проекта.
Открытие пул-реквеста
- Отправить тривиальные исправления.
- Начните работать над вкладом, о котором уже просили.
- Вы можете заранее отправить запрос на включение и добавить WIP (работа в процессе), чтобы люди могли видеть ваш прогресс.
- Создайте ветку для ваших правок.
- Ссылка на соответствующие вопросы.
- Включите скриншоты до и после.
- Проверьте свои изменения!
- Внесите свой вклад в стиль проекта: комментарии, синтаксис и т. д.
Что происходит после отправки вклада
- Вы не получаете ответ: проверьте проект на наличие признаков активности.
- Кто-то просит внести изменения в ваш вклад.
- Ваш вклад не принимается.
- Ваш вклад принят.
Мое изучение концепций CS
Я хотел бы добавить этот раздел, чтобы представить некоторые вещи, которые я изучил, чтобы подготовиться к будущим возможностям, я надеюсь, что вы найдете это полезным:
Абстрактные типы данных (ADT) — это спецификация группы операций, которые имеют смысл для данного типа данных. Описывает, как работают переменные данного типа данных.
Примеры: Стек, Очередь, Приоритетная очередь, Список, Отсортированный список, Отсортированный список, Карта, Набор.
Структуры данных:
Опишите, как данные должны быть организованы и доступны в памяти компьютера. Существуют разные способы реализации АТД, поскольку существуют разные структуры данных.
- Выбор реализации ADT, которая использует наилучшую структуру данных в соответствии с вашими потребностями, имеет важное значение для создания эффективных компьютерных программ.
Массив
- Массив — это самый простой способ хранить множество элементов в памяти компьютера.
- Состоит из выделения последовательного пространства в памяти компьютера и последовательной записи ваших элементов в этом пространстве, помечая конец специальным токеном NULL.
- Каждый объект в массиве занимает одинаковое количество места в памяти.
- Массив полезен для реализации стека, но его также можно использовать для реализации списков и очередей.
Преимущество:
- Мгновенное время доступа.
Недостатки:
- При выделении больших объемов последовательного пространства в памяти. Рядом может не хватить свободного места.
- Удаление элемента посередине проблематично.
- Добавление элемента приводит к перемещению всех последующих элементов на один шаг вперед.
Связанный список
- В связанном списке элементы хранятся в цепочке ячеек, которые не обязательно должны располагаться по последовательным адресам памяти. Память для каждой ячейки выделяется по мере необходимости.
- Каждая ячейка имеет указатель, указывающий адрес следующей ячейки в цепочке. Ячейка с пустым указателем отмечает конец цепочки.
- Может использоваться для реализации стеков, списков и очередей.
Преимущество перед массивом:
- Нет проблем с увеличением списка, поскольку каждая ячейка может храниться в любой части памяти.
- Мы можем создавать списки размером с объем свободной памяти.
- Легко вставлять элементы в середину или удалять любой элемент, изменяя указатели ячеек.
Недостатки:
- Мы не можем мгновенно получить n-й элемент. Мы должны начать поиск с первой ячейки, использовать ее для получения адреса второй ячейки, затем перейти ко второй ячейке, использовать ее указатель на следующую ячейку и так далее.
- Если нам дан только адрес одной ячейки, удалить его или вернуться назад будет непросто. Без другой информации мы не можем знать адрес предыдущей ячейки.
Двойной связанный список
- Двойной связанный список — это связанный список, но с дополнительными ячейками теперь есть 2 указателя: один на ячейку, которая была до него, а другой — на ячейку, которая идет после.
Те же преимущества, что и у связанного списка:
- Предварительное выделение большого куска памяти не требуется, память для новых ячеек может быть выделена по требованию.
- Дополнительные указатели позволяют нам перемещаться по цепочке ячеек вперед и назад.
- Последний пункт означает, что если нам дан адрес одной ячейки, мы можем ее удалить.
Недостатки:
- Невозможно мгновенно получить доступ к n-му элементу.
- Хранение 2 указателей приводит к большей сложности кода и большему объему необходимой памяти для хранения наших данных.
Массивы и связанные списки
Связанные списки предпочтительнее массивов, когда:
- Вам нужно, чтобы вставки и удаления были очень быстрыми.
- Вам не нужен случайный, неупорядоченный доступ к данным.
- Вы вставляете или удаляете элементы в середине списка.
- Вы не можете оценить точный размер списка (он должен увеличиваться или уменьшаться в процессе выполнения).
- Это возможно благодаря тому, что выделение памяти не обязательно должно быть последовательным.
Массивы предпочтительнее связанных списков, когда:
- Вам часто требуется случайный, неупорядоченный доступ к данным.
- Вам нужна максимальная производительность для доступа к элементам.
- Количество элементов не меняется при выполнении, поэтому вы можете выделить непрерывное пространство памяти.
Спасибо за чтение!