Continuando a discussão de Discourse Calendar:
O Projeto Fedora atualmente tem nosso próprio aplicativo web de calendário, Fedocal. Ele está programado para uma atualização, e estou pensando se poderíamos substituir os calendários no Discourse em vez de reescrever o aplicativo autônomo. Isso não é realmente uma solicitação de recurso, mas sim uma captura de nossos casos de uso e do que considero que está faltando enquanto avaliamos o que fazer.
Casos de Uso
Existem três casos de uso importantes que posso ver para o Fedocal. Se houver mais, por favor, me avise e eu os adicionarei à consideração.
- Agendamento de reuniões. Este é de longe o mais importante.
- Permitir que as pessoas compartilhem sua disponibilidade. Atualmente, solicitamos que pessoas com responsabilidade no projeto insiram isso para férias, mas poucas pessoas realmente o fazem. (Eu, pessoalmente, acho muito complicado quando me lembro.)
- Exibição de eventos do Fedora como Flock to Fedora, Semana da Diversidade ou Festas de Lançamento. Na verdade, não fazemos isso hoje.
Outras Possibilidades
- Tentamos usar o Fedocal para a programação da conferência Flock em 2013, mas não o fazemos desde então. Seria bom se tivéssemos uma solução que tornasse isso atraente e fácil.
- Exibição da própria programação de lançamento do Fedora. Atualmente, acho que usamos isso apenas para agendar as reuniões de “go/no-go”, não a programação em si. Se fizéssemos isso, precisaria vir automaticamente de Fedora Project schedules em vez de exigir entrada manual.
Deficiências do plugin atual do Discourse Calendar
O sistema de “eventos” que está sendo adicionado a ele está atualmente incorreto para o que precisamos. (Ele coleta “eventos” de postagens de todo o site e os coloca em um único calendário global. Precisamos de muito mais do que isso.
Minha primeira suposição é que nos concentraríamos em estender a parte “tradicional” do plugin de calendário, que tem um calendário na primeira resposta a um tópico que é “alimentado” por respostas apenas a esse tópico. No entanto, poderia ser possível que a outra abordagem — capturar eventos em todo o site — fosse melhor. Nesse caso, porém, precisaríamos estendê-lo para poder ter múltiplos calendários para direcionar. (E nesse caso, seria bom poder incorporá-los em tópicos fixados, não apenas escondidos no menu hambúrguer.)
Dito isso, aqui estão algumas coisas que precisaríamos:
Em geral
- A exibição do calendário em si é bastante rudimentar.
- Poderia ser muito mais bonito
- Não escala ou se adapta à forma como está sendo exibido de forma alguma
- É codificado para semanas de segunda a domingo no estilo da UE
- Parece mostrar sempre os dias em UTC, embora as entradas estejam em fusos horários locais, o que faz com que eventos de um dia inteiro em um fuso horário local pareçam abranger dois dias no calendário. (A equipe do Discourse está ciente desse bug.)
- A visualização mensal atualmente mostra apenas os primeiros caracteres da descrição de um evento. Isso é bom se o calendário for apenas sobre uma coisa simples (veja em uso aqui para Fedora Social Hour, mas não é bom para um calendário com muitas coisas diferentes.
- Atualmente, a versão “Feriado” do calendário pode atribuir cores aos eventos, mas o faz usando um valor derivado programaticamente do nome de usuário. Isso deveria ser configurável por evento e se aplicar a todos os calendários, não apenas ao de feriados.
- Não acho que haja um feed .ical? Seria bom para as pessoas poderem adicionar ao Google Agenda ou o que quer que seja.
- Bom ter: capacidade de gerar e-mails de lembrete enviados para listas de e-mail, não apenas para usuários inscritos. Ainda não temos todos no Discourse!
- Bom ter: uma visualização de calendário pessoal onde você opta por quais entradas rastrear.
Caso de Uso de Reuniões
- O Fedocal tem dois “eixos” principais — o grupo ao qual a entrada do calendário pertence (como “conselho”) e o local (como “#fedora-meeting”). O plugin de calendário pode fazer um ou outro: podemos criar um tópico “Reuniões do Conselho Fedora” ou um tópico “Canal de Reuniões Fedora”, mas as entradas não seriam vinculadas. Não tenho muita certeza de qual seria o melhor design para isso como um plugin — acho que poderíamos usar alguma experiência de designer de UX para pensar sobre isso.
- Estaria tudo bem se o eixo “grupo” fossem grupos do Discourse, especialmente porque NÓS UM DIA EM BREVE ESPERO teremos grupos do Discourse vinculados ao nosso SSO.
- Ou, possivelmente, o eixo “grupo” do calendário poderia ser uma tag. Isso pode ser mais flexível e funcionaria para nós porque estamos planejando um mapeamento de grupo para tag para a organização do nosso site.
- O eixo “locais” é curto — temos um punhado de canais de reunião, e provavelmente é suficiente permitir um local “outro” para casos incomuns.
- Crítico: O sistema precisa impedir — ou pelo menos avisar sobre — conflitos em ambos os eixos. Ou seja, não pode haver duas reuniões do grupo do conselho ao mesmo tempo, e não pode haver duas reuniões de um grupo diferente no mesmo local ao mesmo tempo.
- exceto se tivermos um “outro” genérico… então, acho que alguns locais deveriam permitir sobreposições.
- A sintaxe para eventos recorrentes é meio estranha, mas ok. No entanto, eventos recorrentes apenas aparecem na grade do calendário como recorrentes (e no lembrete como atualizados para o próximo), nada mais. E deveria haver mais:
- Crítico: Deve ser possível para os usuários se inscreverem em uma notificação para cada evento recorrente, por entrada de calendário.
- Bom ter: uma configuração por grupo do Discourse para as notificações padrão para um determinado calendário, de modo que, por exemplo, os membros do grupo do conselho recebam notificações padrão para as entradas do calendário do conselho.
- Bom ter: capacidade de configurar também notificações de aviso de 15 minutos para reuniões futuras.
- Importante: Deve ser possível marcar eventos específicos para serem pulados (ou para serem realizados em outro horário) sem alterar tudo.
- No momento, a duração do evento é feita com entradas como
[date=2021-11-28 time=12:00:00 timezone="America/New_York"] → [date=2021-11-28 time=13:00:00 timezone="America/New_York"]. Isso é tedioso de inserir e o resultado (2021-11-28T17:00:00Z → 2021-11-28T18:00:00Z) não é imediatamente óbvio. Seria bom ter[date=2021-11-28 time=12:00:00 timezone="America/New_York" duration="1 hour"]em vez disso. - Bom ter: Entradas sem duração devem ser visualmente diferentes — e talvez permitidas apenas para entradas “dia inteiro”.
- Bom ter: cada entrada de calendário (separadamente para as recorrentes) poderia ter um link para um tópico de pauta + notas. Este tópico não seria criado automaticamente sem interação, mas deveria ser fácil de iniciar com um clique, e uma vez criado, vinculado automaticamente.
Caso de Uso de “Feriados”
- O calendário de feriados também deve ter consciência de grupo. Atualmente, ele tem alguns tratamentos especiais para a equipe (do site Discourse) — isso deve ser generalizado e configurável, e diferentes calendários permitidos para diferentes grupos, bem como um global.
- Em sua configuração padrão, o calendário de feriados mostra feriados nacionais padrão para todas as pessoas que têm sua localidade configurada. Se isso for mais do que, digamos, cinco pessoas em não mais do que dois locais diferentes, ele sobrecarrega todo o resto. O Discourse nos forneceu um hack temporário para ocultar isso, no entanto.
- Bom ter: Atualmente, os membros da equipe recebem um emoji
ao lado de seus nomes de usuário quando estão de férias, visível apenas para outros membros da equipe. A visibilidade deste ícone deve ser configurável. - Bom ter: permitir a configuração de qual emoji é mostrado.
- Bônus bom ter: permitir que os usuários selecionem de uma lista de emojis e motivos para um determinado período de indisponibilidade (férias, doente, viagem, etc.)
Eventos Fedora
Na verdade, acho que o que temos hoje funcionaria para isso. No entanto, algumas das coisas acima — exibição de calendário mais bonita e flexível, notificações, cores — seriam úteis.
Para outras possibilidades
- O caso de uso da programação de conferências é apenas o caso de uso da programação de reuniões, mas de forma muito intensa. Manter o controle manual de conflitos torna-se impossível. Para isso, pode ser necessário um eixo de nível de usuário em vez de um eixo de nível de grupo. (Palestrantes não podem estar em dois lugares ao mesmo tempo.) E ao contrário de nossos locais de sala de reunião, que não mudaram muito nos últimos 15 anos (exceto por atualizações de URL) e provavelmente não mudarão nos próximos 15, cada evento tem seu próprio conjunto de locais.
- Calendário de programação de lançamento: Acho que isso é principalmente uma questão de automação na importação dos dados de programação existentes. O plugin de calendário existente poderia funcionar na maior parte, acho. Novamente, como com os Eventos Fedora, a codificação por cores seria bom.