Сообщества — это сложно. Их трудно построить, трудно поддерживать и трудно выращивать. Но создание сообществ было одним из самых полезных занятий в моей карьере, потому что я встретил много замечательных людей и был вынужден учиться и делать что-то за пределами своей зоны комфорта.
Помню, более 10 лет назад я посетил свою первую небольшую технологическую конференцию — CouchConf в Берлине. К счастью, примерно в то же время проходила встреча BerlinJS Meetup, и я был потрясен сообществом и людьми. У них есть репозиторий GitHub, настроенный для веб-сайта, и доклады отправляются как проблемы GitHub. Я был поражен простотой и прозрачностью процесса, поэтому через несколько недель создал форк репозитория и основал BarcelonaJS. Это было начало моего собственного организаторского пути.
Небольшой анекдот из регулярного и очень разочаровывающего опыта: вы часами готовились, общались, находили и приглашали спикеров, находили и назначали дату и место, разговаривали со спонсорами о еде и напитках, и все это для того, чтобы организовать отличное мероприятие. И когда придет время, вы сядете там один или с частью людей, которые, как вы думали, придут, потому что Meetup говорит: «150 человек ответили ДА». И в одном редком случае это просто невезение с погодой, но чаще всего, общаясь потом с людьми, я слышал следующее:
Это потрясающе, мне бы хотелось там побывать, но я не знал!
Эта фраза стала для меня мотивацией начать изучать GitHub как инструмент сообщества, потому что GitHub — одна из самых замечательных платформ для автоматизации, и это то, что вам нужно делать как организатору: автоматизировать все до чертиков, чтобы опубликовать мероприятие на Eventbrite, Meetup, Twitter, Facebook, группы Telegram, WhatsApp, электронная почта, календарь и т. д. и т. д. и т. д. и делайте это за 2 недели, за 1 неделю, за 3 дня, за 1 день до, за 1 час до мероприятия, чтобы никто не мог сказать потом. : «Я не знал об этом». Потому что, в конце концов, вы делаете это не для себя, а для общества.
Во время своих путешествий я встречал на Meetup сообщества Node.js и JavaScript с тысячами участников, но не было ни одного предстоящего или недавнего мероприятия. Это может произойти по многим причинам, но часто это происходит потому, что у организаторов нет времени или они перешли к другим вещам, и трудно найти преемника, который сможет продолжать работу. Meetup и другие платформы отлично подходят для открытия сообществ и мероприятий, но из-за них участникам сложно связаться с сообществом в случае, если организатор больше не активен, и захватить управление / возродить сообщество.
Как разработчик, я провожу много времени на GitHub и знаком с инструментами и рабочими процессами, поэтому начал изучать, как использовать GitHub в качестве платформы сообщества.
Первое и наиболее очевидное преимущество заключается в том, что общедоступные репозитории на GitHub имеют открытый исходный код. Это означает, что весь контент, проблемы и обсуждения являются общедоступными и могут быть разветвлены, скопированы и повторно использованы кем угодно. Это отлично подходит для сообществ, поскольку означает, что если сообщество будет заброшено, любой сможет его форкнуть и продолжить работу. Это также означает, что если вы хотите создать новое сообщество, вы можете создать уже существующее и адаптировать его к своим потребностям.
GitHub имеет встроенное управление пользователями/командами/организациями, поэтому вам не нужно ничего создавать самостоятельно. Легко пригласить кого-нибудь в организацию или добавить команды с разными разрешениями организации.
Большинство из нас знают, как использовать GitHub, и посещают этот сайт ежедневно, поэтому нет необходимости добавлять в закладки дополнительные сайты для администрирования базы данных, управления контентом или других инструментов. С помощью GitHub Actions мы можем запускать автоматизированные задачи по расписанию или по требованию, а с помощью GitHub Pages мы можем бесплатно разместить веб-сайт нашего сообщества.
Для меня одним из наиболее важных преимуществ создания сообщества на GitHub является полная прозрачность и открытое общение. Все[1] является общедоступным, поэтому не нужно беспокоиться о том, кто к чему имеет доступ. Это означает, что каждый может внести свой вклад в развитие сообщества и любой может видеть, что происходит. Это отлично подходит для укрепления доверия и создания сообщества, которое будет инклюзивным и гостеприимным для всех.
Моей целью с такими сообществами, как BarcelonaJS, CDC и т. д., было/является создание свободных и открытых пространств для разработчиков, где они могли бы делиться и общаться. И «бесплатно» — это то, где важна прозрачность. Раньше я всегда держал руки подальше от финансовых пожертвований. Если бы компания хотела спонсировать, она могла бы заказать еду или напитки прямо на место проведения мероприятия, но я бы не помогал. Благодаря Open Collective это стало намного проще, и теперь мы можем принимать финансовые пожертвования и делать их прозрачными для сообщества. Они используются, например, для оплаты доменов, получения еды и напитков, проведения рекламных кампаний и т. д.
[1] Конечно, вы также можете создать частный репозиторий для обсуждений внутренних организаторов и т. д.
GitHub не является платформой для сообщества/мероприятий, такой как Meetup, поэтому есть некоторые предостережения. Я привык относиться к проблемам как к «событиям» или «предложениям для обсуждения» и к формам задач GitHub для структурирования заявок. Но это не идеально, и новичкам требуется время, чтобы понять: «Создайте задачу, чтобы представить доклад». Нет никаких «функций комфорта», позволяющих выбрать дату, местоположение на карте и т. д. и отправить простое уведомление по электронной почте сотням людей.
Вся эта концепция в первую очередь ориентирована на разработчиков и инженеров, поскольку она развивается вокруг GitHub и IssueOps. Чтобы дать представление о моем предыдущем опыте, вот несколько сообществ и конференций, в создании которых я участвовал:
Создавая их, я постоянно работал над набором инструментов, рабочих процессов и автоматизации, чтобы облегчить жизнь организаторам, потому что это очень тяжелая и часто неблагодарная работа. Итак, вот моя концепция открытого сообщества о том, как я создаю публичное сообщество на GitHub.
Первым шагом является настройка организации GitHub и создание двух репозиториев:
Названия очевидны: в хранилище событий — шаблоны для создания новых событий , а в хранилище переговоров — шаблоны для подачи предложений по выступлениям . Выступления можно связать с событиями, чтобы составить повестку дня, и, если вам удастся привлечь внимание сообщества (помните: это сложно!), комментарии и реакции, такие как 👍 или ❤️, можно использовать для голосования по выступлениям.
Вы также можете использовать проект GitHub для управления жизненным циклом мероприятия на этапах предложения, планирования и объявления:
На Кипре мы добавили метки для разных регионов острова, но самое главное — необходима метка «Одобрено». Все новые задачи создаются с меткой «Мероприятие», но «одобрить» мероприятие может только тот, у кого есть разрешение на сортировку (команда организаторов). Это важно, чтобы избежать спама и убедиться, что мероприятие актуально.
Теперь, когда есть организация, несколько репозиториев с проблемами и некоторая структура, пришло время автоматизировать.
GitEvents / GitEvents на GitHub берет свое начало еще в 2014 году и началось с названия gitup
как результат сотрудничества «хакерских выходных» между London Node User Group (LNUG) и Barccelona Node.js Group. В то время GitHub Actions еще не существовало, и мы пытались использовать Webhooks для решения проблем для создания структурированных данных для веб-сайтов, размещенных на GitHub, на основе данных Meetup.com. Установка была громоздкой, и проект на время был заброшен.
Сегодня GitEvents — это простой набор действий GitHub для автоматизации рабочих процессов по задачам. «Git Ops» для встреч и мероприятий. Все, что нужно, — это организация GitHub и приложение GitHub. Некоторые из особенностей:
iCal
— это стандарт для событий календаря. Люди могут просто добавить это как подписку в свой календарь, чтобы быть в курсе событий сообщества. Мы создали перенаправление на файл github, чтобы люди могли подписаться на календарь по простой ссылке: https://calendar.cdc.cy .
Все работает по принципу «подключи и работай», поэтому вы можете выбирать действия, которые вам нравятся, и их относительно легко объединить в рабочий процесс. Для примера ознакомьтесь с рабочими процессами сообщества разработчиков Кипра .
Если вы хотите начать работу с GitEvents и вам нужна помощь, обратитесь на наш сервер Discord. Работа над GitEvents находится в стадии разработки, и всегда есть над чем работать, особенно с интеграцией с другими платформами и т. д. Если вы хотите помочь, пожалуйста, связаться.
Формы задач по-прежнему являются относительно малоизвестной функцией на GitHub. Вместо обычных шаблонов Markdown можно предоставить файл YAML с конфигурацией формы.
Получать структурированные входные данные довольно здорово, но после сохранения как «Проблема» данные становятся семантически бесполезными, потому что это просто Markdown. Я экспериментировал с вехами, заголовками Markdown, метками и т. д., чтобы добавить к задаче семантическую информацию, такую как даты, местоположения и т. д., но ничего не получалось. Итак, я начал создавать парсер тела форм задач GitHub . Это помогает проанализировать проблему, созданную через форму, для извлечения дат, ссылок, изображений, списков и т. д. и преобразования их в структурированные данные JSON. Его можно напрямую передать на другие платформы, такие как Discord, EventBrite, Meetup и т. д., или использовать в рассылках, твитах и т. д.
Анализатор тела форм задач также доступен на npm
в виде библиотеки для анализа любого текста Markdown. Лишь недавно я понял, что целые файлы README.md
можно анализировать для структурирования данных веб-сайта:
query ($organization: String!, $repository: String!) { repository(owner: $organization, name: $repository) { id name object(expression: "main:README.md") { ... on Blob { text } } } }
Это запрос на получение содержимого файла из main
ветки репозитория, и вы можете передать его в «анализатор тела»:
const structuredData = await bodyParser(readmeFile()?.repository.object.text)
Вместо того, чтобы хранить еще одну копию описания вашего сообщества, теперь вы можете получить раздел About
из файла README.md
и использовать его на своем веб-сайте.
С помощью последнего веб-сайта https://cdc.cy я хотел изучить и расширить границы возможного с помощью Issues, файлов README.md
и структурированных данных JSON, и я очень доволен результатом:
README.md
или .json
на GitHub; каждый может редактировать, не требуется ни CMS, ни учетной записи и т. д.events
)
Все эти функции стали возможны благодаря API GraphQL и анализу файлов Markdown с помощью парсера тела.
Я работал над этой концепцией некоторое время, и она до сих пор время от времени меняет форму. Но основные идеи, которые я перенял у BerlinJS, не изменились:
Создание всего этого заняло много времени и энергии, и еще много чего не хватает, на что у меня нет времени:
Если вы считаете, что это может помочь вам и вашему сообществу, и хотите принять участие в сборе головоломки, обратитесь на сервер Discord gitevents , в обсуждения GitHub или напрямую по одной из проблем GitHub .
Если вы находитесь на Кипре или в Барселоне , присоединяйтесь к местным группам разработчиков и поддерживайте их.