Функции плагина календаря, которые сделают его по-настоящему полезным для нас

Продолжение обсуждения из Discourse Calendar:

Проект Fedora в настоящее время имеет собственное веб-приложение для календаря Fedocal. Оно требует обновления, и я размышляю о том, сможем ли мы заменить его календарями в Discourse, вместо того чтобы переписывать автономное приложение. Это не совсем запрос на новую функцию, а скорее фиксация наших вариантов использования и того, чего, как мне кажется, не хватает, пока мы оцениваем дальнейшие шаги.

Варианты использования

Я вижу три важных варианта использования для Fedocal. Если их больше, пожалуйста, сообщите, и я добавлю их в рассмотрение.

  1. Планирование встреч. Это, безусловно, самое важное.
  2. Возможность для людей делиться своей доступностью. В настоящее время мы просим людей, несущих ответственность в проекте, указывать это для отпусков, но мало кто это действительно делает. (Я лично считаю это слишком неудобным, даже когда вспоминаю об этом.)
  3. Отображение мероприятий Fedora, таких как Flock to Fedora, Неделя разнообразия или вечеринки по случаю выпуска. На самом деле сегодня мы этого не делаем.

Другие возможности

  • Мы пытались использовать Fedocal для расписания конференции Flock в 2013 году, но с тех пор не возвращались к этому. Было бы приятно, если бы у нас было решение, которое делало бы это привлекательным и простым.
  • Отображение самого графика выпусков Fedora. В настоящее время, насколько я знаю, мы используем это только для планирования встреч по принятию решения о переходе к следующей фазе (go/no-go), а не самого графика. Если мы будем это делать, данные должны автоматически подтягиваться с Fedora Project schedules, а не вводиться вручную.

Недостатки текущего плагина календаря Discourse

Добавляемая в него система «событий» в настоящее время не подходит для наших нужд. (Она собирает «события» из сообщений по всему сайту и помещает их в один глобальный календарь. Нам нужно гораздо больше этого.

Мое первое предположение состоит в том, что мы сосредоточимся на расширении «традиционной» части плагина календаря, где календарь находится в первом ответе темы и «питается» только ответами на эту тему. Однако возможно, что другой подход — сбор событий со всего сайта — будет лучше. В таком случае нам потребуется расширить его возможность иметь несколько целевых календарей. (И в этом случае было бы неплохо иметь возможность встраивать их в закрепленные темы, а не прятать только в меню-гамбургер.)

Итак, учитывая вышесказанное, вот что нам понадобится:

В общем

  1. Сам дисплей календаря довольно примитивен.
    • Он мог бы быть намного красивее
    • Он не масштабируется и не адаптируется к способу отображения каким-либо образом
    • Он жестко задан для недель с понедельника по воскресенье в европейском стиле
    • Кажется, он всегда показывает дни в UTC, хотя записи сделаны в локальных часовых поясах, из-за чего однодневные события в локальном часовом поясе могут выглядеть так, будто они охватывают два дня в календаре. (Команда Discourse знает об этой ошибке.)
    • Просмотр месяца в настоящее время показывает только первые несколько символов описания события. Это нормально, если календарь касается только одного простого элемента (см. пример использования здесь для Fedora Social Hour), но не подходит для календаря с множеством разных вещей.
    • В настоящее время версия календаря «Праздники» может назначать цвета событиям, но делает это, используя значение, программно полученное из имени пользователя. Вместо этого это должно быть настраиваемым для каждого события отдельно и применяться ко всем календарям, а не только к праздничному.
  2. Мне кажется, нет .ical-канала? Это было бы здорово, чтобы люди могли добавить его в свой Google Календарь или что-то подобное.
  3. Желательно: возможность генерировать письма-напоминания, отправляемые на рассылки, а не только подписчикам. У нас еще не все в Discourse!
  4. Желательно: персональный вид календаря, где вы сами выбираете, какие именно записи отслеживать.

Вариант использования: Встречи

  1. В Fedocal есть две основные «оси» — группа, к которой принадлежит запись календаря (например, «совет»), и местоположение (например, «#fedora-meeting»). Плагин календаря может делать то или другое: мы можем создать тему «Встречи совета Fedora» или тему «Канал встреч Fedora», но записи не будут связаны. Я не совсем уверен, как лучше всего спроектировать это как плагин — думаю, нам пригодится экспертиза UX-дизайнеров для обдумывания этого.
    • Было бы вполне достаточно, если бы ось «группа» соответствовала группам Discourse, особенно потому что мы НАДЕЮСЬ, ЧТО СКОРО перейдем на связывание групп Discourse с нашей SSO.
    • Или, возможно, ось «группа» календаря могла бы быть тегом. Это могло бы быть более гибким и подошло бы нам, так как мы планируем сопоставление групп с тегами для организации нашего сайта.
    • Ось «местоположения» короткая — у нас несколько каналов для встреч, и, вероятно, достаточно разрешить местоположение «другое» для нестандартных случаев.
  2. Критично: Система должна предотвращать — или хотя бы предупреждать о — конфликтах по обеим осям. То есть не может быть двух встреч группы совета в одно и то же время, и не может быть двух встреч от другой группы в одном и том же месте в одно и то же время.
    • за исключением случая, если у нас есть универсальное «другое»… так что, я полагаю, некоторые места должны допускать наложения.
  3. Синтаксис повторяющихся событий немного странный, но приемлемый. Однако повторяющиеся события просто отображаются в сетке календаря как повторяющиеся (и в напоминании обновляются до следующего), не более того. А должно быть больше:
    • Критично: Должна быть возможность для пользователей подписаться на уведомление для каждого повторяющегося события на основе каждой записи календаря.
      • Желательно: конфигурация на уровне группы Discourse для уведомлений по умолчанию для конкретного календаря, чтобы, например, участники группы совета по умолчанию получали уведомления о записях календаря совета.
      • Желательно: возможность также настроить уведомления-предупреждения за 15 минут до предстоящих встреч.
    • Важно: Должна быть возможность пометить конкретное событие как пропущенное (или перенесенное на другое время) без изменения всего события.
  4. Сейчас длительность события задается записями вида [date=2021-11-28 time=12:00:00 timezone="America/New_York"] → [date=2021-11-28 time=13:00:00 timezone="America/New_York"]. Это утомительно вводить, и результат (2021-11-28T17:00:00Z2021-11-28T18:00:00Z) не сразу очевиден. Было бы здорово иметь [date=2021-11-28 time=12:00:00 timezone="America/New_York" duration="1 hour"] вместо этого.
    1. Желательно: Записи без указания длительности должны визуально отличаться — и, возможно, разрешаться только для записей «на весь день».
  5. Желательно: каждая запись календаря (отдельно для повторяющихся) могла бы иметь ссылку на тему с повесткой дня и заметками. Эта тема не должна создаваться автоматически без взаимодействия, но ее должно быть легко начать в один клик, и после создания она должна автоматически связываться.

Вариант использования: «Праздники»

  1. Праздничный календарь также должен учитывать группы. В настоящее время есть специальная обработка для (персонала сайта Discourse) — это должно быть обобщено и сделано настраиваемым, а также разрешены разные календари для разных групп, а также глобальный.
  2. В конфигурации по умолчанию праздничный календарь показывает стандартные национальные праздники для каждого человека, у которого настроен его локаль. Если это больше, скажем, пяти человек в двух разных местах, это перегружает всё остальное. Discourse предоставил нам временный обходной путь для скрытия этого, хотя.
  3. Желательно: В настоящее время сотрудники получают эмодзи :palm_tree: рядом со своим именем пользователя, когда они в отпуске, видимый только другим сотрудникам. Видимость этого значка должна быть настраиваемой.
  4. Желательно: разрешить настройку отображаемого эмодзи.
    • Бонус: разрешить пользователям выбирать из списка эмодзи и причин для недоступного времени (отпуск, болезнь, командировка и т. д.).

Мероприятия Fedora

На самом деле, я думаю, то, что у нас есть сегодня, может сработать для этого. Однако некоторые из вышеперечисленных функций — более красивый и гибкий дисплей календаря, уведомления, цвета — были бы полезны.

Для других возможностей

  • Сценарий использования расписания конференции — это просто сценарий использования расписания встреч, но в гораздо более интенсивном масштабе. Вручную отслеживать конфликты становится невозможно. Для этого может потребоваться ось на уровне пользователя, а не группы. (Спикеры не могут быть в двух местах одновременно.) И в отличие от наших мест проведения встреч, которые не менялись сильно за 15 лет (кроме обновлений URL) и, вероятно, не изменятся еще 15 лет, у каждого события есть свой набор мест.
  • Календарь графика выпусков: я думаю, это в основном вопрос автоматизации импорта из существующих данных графика. Существующий плагин календаря, я думаю, мог бы в основном работать. Опять же, как и с мероприятиями Fedora, было бы неплохо иметь цветовую кодировку.
14 лайков

Pavilion работает над плагином интеграции событий для Discourse (DEIP), который, в частности, позволит публиковать события в Discourse из других сервисов и платформ. Мы подали заявку в DAPSI (программу ЕС NGI), которая была одобрена для финансирования. Программа только что стартовала (вчера вечером), и мы приступили к работе над ней. Это пересечется с некоторыми из поднятых вами вопросов.

Редактированная версия резюме из предложения

В настоящее время не существует абстрактной модели данных для календарных событий, которая широко использовалась бы онлайн-сервисами мероприятий. Сначала мы определим и создадим прототип рабочей модели данных на основе обобщения предыдущих попыток стандартизации и моделей данных популярных сервисов мероприятий («Спецификация и прототип DEIP»). Затем мы превратим эту спецификацию в продукт в виде плагина с открытым исходным кодом для Discourse, который позволит онлайн-сообществам легко передавать данные календарных событий между популярными платформами управления событиями (первоначально Eventbrite, Meetup и Zoom) и Discourse — самым популярным программным обеспечением для сообществ с открытым исходным кодом («Продукт DEIP»). Мы будем предлагать бизнес-ориентированные подписки для компаний, использующих MVP, чтобы обеспечить долгосрочную жизнеспособность плагина.

Продукт DEIP станет коммерчески жизнеспособной альтернативой с открытым исходным кодом недавно запущенному Официальному API событий от Facebook, который предоставляет аналогичный функционал, но только для «закрытого сада» данных сообщества Facebook. Facebook уже давно инвестирует в функции сообщества, и эти инвестиции растут. Постоянное внимание Facebook к этому аспекту своего продукта означает, что альтернативы с открытым исходным кодом должны постоянно улучшать аналогичные предложения, чтобы оставаться жизнеспособными. Спецификация и продукт DEIP станут важнейшими инструментами в этой борьбе.

Discourse — одна из немногих по-настоящему жизнеспособных платформ с открытым исходным кодом для онлайн-сообществ. Это самый популярный проект сообщества на GitHub, и недавно компания привлекла 20 миллионов долларов США для дальнейшего роста своей расширяющейся организации (55 сотрудников поддерживают более 32 000 сообществ). Платформа Discourse на 100% имеет открытый исходный код и глубоко интегрирована в сообщества и культуру программного обеспечения с открытым исходным кодом.

Pavilion (Заявитель) — кооператив разработчиков и менеджеров продуктов, являющийся официальным партнером Discourse. Мы работаем с Discourse более 6 лет и создали значительную часть существующих плагинов сторонних разработчиков для Discourse, включая самый популярный плагин Discourse и ряд плагинов, которые впоследствии были приняты (стали «официальными») Discourse.org.

Совокупная спецификация и продукт послужат как экспонентом стандартизации модели данных календарных событий, так и обеспечат эффективное решение с открытым исходным кодом для управления событиями в десятках тысяч онлайн-сообществ, использующих Discourse.

Резюме (Проблема и решение)

Основная проблема, с которой сталкиваются онлайн-сообщества при управлении событиями, — это интеграция сервисов. Сообщества используют смесь маркетинговых платформ, таких как Eventbrite, платформ для поиска мероприятий, таких как meetup.com, инструментов для встреч, таких как Zoom, или комплексных решений, таких как Facebook. Сложность управления сообществом через несколько сервисов создает стимул использовать проприетарные решения, предлагающие удобство в ущерб прозрачности и переносимости.

DEIP станет как спецификацией и прототипом модели данных календарных событий, так и коммерчески жизнеспособным плагином для Discourse с открытым исходным кодом. Вкратце, DEIP будет:

  1. Определить практическую спецификацию модели данных календарных событий.
  2. Реализовать спецификацию в рабочем прототипе.
  3. Разработать прототип в плагин для Discourse с поддержкой импорта из популярных сервисов мероприятий и экспорта с использованием стандартных календарных форматов.
  4. Выпустить плагин как продукт с открытым исходным кодом с сервисом подписки, ориентированным на бизнес-пользователей.

Спецификация (Исследовательский компонент)

Основными стандартами в управлении календарными событиями являются RFC 5545 (формат .ics) и RFC 4791 (CalDAV, или «iCal-каналы»). Проблема этих стандартов заключается в том, что они в настоящее время не используются для моделирования данных календарных событий, доступных через современные API. Аналогичные объекты, доступные через API Eventbrite, Meetup и Zoom, не переводятся в RFC 5545 и не соответствуют друг другу. Попытки отраслевых организаций разработать Абстрактный API календаризации пока не увенчались успехом, несмотря на некоторые недавние попытки. Более того, проприетарные сервисы не предоставляют календарные каналы CalDAV на уровне группы/сайта/сообщества (иногда они предоставляют каналы, специфичные для пользователя). Короче говоря, существует значительный дефицит стандартизации модели данных календарных событий.

Основным исследовательским компонентом DEIP станет определение абстрактной модели данных событий, которая реализует существующие попытки стандартизации, сохраняя при этом практическую применимость по отношению к наиболее популярным проприетарным сервисам, связанным с событиями («Спецификация DEIP»). Эта спецификация затем будет преобразована в рабочий прототип (первоначально на Ruby; впоследствии на других языках), позволяющий создавать, читать, обновлять и удалять общие календарные события («Прототип DEIP»). В зависимости от результатов этой работы мы можем попытаться упаковать прототип DEIP для распространения через различные системы пакетов, например, ruby gems.

Помимо того, что спецификация и прототип станут основой MVP (см. ниже), они будут опубликованы на целевой странице DEIP с сопутствующими объяснениями логики их создания. Мы также выделим раздел в нашем собственном сообществе для дальнейшего обсуждения. Мы хотим быть активными участниками усилий по сближению сервисов программного обеспечения для мероприятий с использованием стандартных моделей данных для улучшения совместимости и переносимости сервисов.

Разработка (Компонент разработки)

Мы разработаем спецификацию и прототип DEIP в MVP плагин для Discourse, предлагающий следующие функции:

  • API событий Discourse с поддержкой создания, чтения и удаления. Поддержка обновления (то есть двусторонняя связь) будет добавлена в более поздней версии продукта.
  • Специальная поддержка популярных сервисов. Изначально Eventbrite, Meetup и Zoom.
  • Интеграция с плагином событий Discourse для отображения событий внутри тем Discourse и предоставления календаря событий непосредственно в Discourse.
  • Сервер CalDAV для предоставления единого канала всех событий в сообществе с возможностью фильтрации по категории и пользователю.
  • Интеграция с плагином юридических инструментов для поддержки GDPR и плагином местоположений для картографирования местоположений GeoJSON с использованием решений с открытым исходным кодом.

Развертывание (Актуальность, влияние и преимущества)

Pavilion поддерживает тысячи онлайн-сообществ через нашу оплачиваемую консультационную работу и бесплатную работу с открытым исходным кодом, многие из которых явно нуждаются в продукте DEIP, включая университетских исследователей, сообщества поддержки здоровья, любителей, малый бизнес, соседские сообщества, стартапы, некоммерческие организации, компании из списка Fortune 500, писателей фэнтези и энтузиастов природной фотографии. Для примера этого спроса см. здесь, здесь, здесь, здесь, здесь, здесь и здесь. Отсутствие удобства переносимости и интеграции событий часто является ключевым фактором при выборе между проприетарными решениями с закрытым доступом, такими как Facebook, и решениями с открытым исходным кодом, такими как Discourse.

Участники Pavilion лично развернут продукт DEIP для наших существующих клиентов, проводящих мероприятия, а также помогут многим пользователям с открытым исходным кодом нашей работы, таким как те, что указаны выше. Помимо работы Pavilion внутри сообщества Discourse, DEIP будет иметь:

  • Отдельный веб-сайт продукта, включая спецификацию и прототип DEIP.
  • Документацию по API.
  • Поддержку через каналы поддержки Pavilion.

Наша цель — сделать продукт DEIP жизнеспособной альтернативой управлению событиями на проприетарных платформах сообществ, а спецификацию и прототип DEIP — инструментом для продвижения усилий по стандартизации модели данных календарных событий.

Бизнес-модель (Коммерческая эксплуатация)

Pavilion разработала модель подписки для наших плагинов Discourse с открытым исходным кодом, которая сохраняет наши обязательства перед открытым исходным кодом и поддержкой некоммерческих сообществ, одновременно обеспечивая адекватную компенсацию работы наших участников. Модель имеет следующие особенности:

  • Код на 100% с открытым исходным кодом.
  • Выбранные «бизнес-функции», которые не видны в клиентском приложении, если менеджер сообщества не приобрел подписку.
  • Бесплатные подписки для некоммерческих сообществ, использующих «бизнес-функции».
  • Бизнес-ориентированные услуги для платных подписчиков.

Ограничение функциональности в базе кода с открытым исходным кодом на 100% можно программно обойти, однако это не относится к целевому рынку платных подписок. Бизнес хочет платить за услуги, которые приносят им пользу, а те, кто выбирает обход ограничений, не являются целевыми клиентами для этой части продукта.

Мы потенциально могли бы расширить масштаб этого проекта, включив в него некоторые из упомянутых вами других вещей, то есть тех, что сосредоточены на функциях событий внутри самого Discourse, однако для этого потребовалось бы дополнительное финансирование. Если вы хотите обсудить это подробнее, вы можете написать мне в личные сообщения. В любом случае, по мере продвижения проекта DEIP я буду делиться более подробной информацией о нем здесь, на meta.

10 лайков

Поздравляем, Энгус!!! Это замечательно. У этого есть потенциал внести значительный вклад в создание лучшего мира (не просто набор форумов, хотя и это здорово). У вас всё получится!

8 лайков

Привет, Ангус,

Есть ли какие-то успехи в этом вопросе? Это постоянная проблема для всех моих форумов, из-за которой люди уходят на другие платформы для встреч и тому подобного.

2 лайка

Привет, Нейтан, примерно через месяц мы сможем поделиться некоторыми новостями. А пока вы можете связаться со мной в личном сообщении на coop.pavilion.tech, и я помогу вам настроить события на вашем форуме.

Помимо проекта DEIP мы думаем о возрождении плагина Events и, возможно, будем использовать его для решения некоторых из вышеупомянутых проблем.

4 лайка

Как и обещал, представляю полный отчёт о первом этапе проекта по интеграции плагинов событий Discourse.

https://docs.google.com/document/d/1-oJsXivT_KRBZ-wUQ-TbHdO7Z-qf7z4GeiRiJ014V-E/edit?usp=sharing

А вот прототип реализации модели данных событий (Ruby-гем). Обратите внимание, что гем находится в стадии разработки и не готов к использованию в производственной среде.

https://github.com/paviliondev/omnievent

Как вы поймёте, прочитав отчёт об исследовании, сам плагин будет создан на втором этапе проекта.

4 лайка

Это впечатляющая работа, Ангус. С нетерпением жду результатов в ближайшее время!

Меня заинтриговало, сколько параллелей существует с моей сферой — медицинской информатикой. Мы сталкиваемся с теми же проблемами: множество органически развивающихся проприетарных моделей данных, которые несовместимы друг с другом. И пациенты страдают от этого.

Существует впечатляющий проект открытой данных, который по сути стремится сделать то же самое для всех медицинских данных:

2 лайка

Просто ещё одно обновление: наша работа на первом этапе была положительно оценена DAPSI, и проект переходит ко второму этапу, то есть к разработке плагина интеграции событий. Часть этой работы будет включать обновление плагина «События Павильона».

Действительно. У меня была хорошая беседа с @pacharanero об этом пересечении во время обеда в Йорке.

5 лайков

И последнее замечание: бета-версия плагина интеграции мероприятий уже доступна :slight_smile:

Дальнейшие обновления я опубликую в этой теме.

5 лайков