Motivações e princípios
Abaixo estão as motivações e os princípios que regem a evolução do formato de Cartão Adaptável.
Motivações subjacentes ao formato
No início de 2016, várias equipes na Microsoft (incluindo Outlook, Windows e Bot Framework) chegaram à conclusão de que todas queriam algo extremamente semelhante ("cartões") e de que cada uma delas estava projetando suas próprias soluções de modo independente:
- O Windows tinha seu próprio formato de Blocos Dinâmicos e Notificações
- O Bot Framework estava usando um conjunto de modelos de cartão predefinidos dentre os quais os desenvolvedores poderiam escolher ao enviar mensagens de bot
- O Outlook estava usando seu próprio formato MessageCard para seu recurso de Mensagens Acionáveis
Simultaneamente, outras plataformas, como LINE, FaceBook Messenger, Slack e outras, estavam definindo seus próprios formatos de "cartão" proprietários. Portanto, alguns funcionários da Microsoft se reuniram e iniciaram um esforço para definir um único formato de cartão aberto e um conjunto de SDKs que:
- facilitariam o intercâmbio de cartões entre hosts;
- permitiriam que cada host mantivesse o controle sobre o estilo dos cartões para garantir a consistência visual;
- tornariam fácil para um aplicativo host exibir cartões com o mínimo de esforço por meio de SDKs prontos para uso;
- também forneceriam valor a terceiros e, eventualmente, seriam adotados amplamente pelo setor
Princípios que regem os Cartões Adaptáveis
O Cartão Adaptável é um formato de cartão simples e declarativo
- Ele não é destinado a ser uma substituição/alternativa a HTML nem a XAML
- Não há "code-behind" com Cartões Adaptáveis
- Os criadores de cartões não podem inserir código personalizado/arbitrário nos conteúdos desses cartões e, como resultado, um host de Cartão Adaptável nunca precisa executar código de terceiros
- Dinamismo e interatividade são obtidos unicamente por meio de marcação declarativa
- Isso garante que o esforço necessário para criar um SDK de Cartão Adaptável para uma nova plataforma permaneça razoável
O formato de Cartão Adaptável não pode impor o uso de nenhuma tecnologia subjacente específica
- O formato de Cartão Adaptável não depende de JavaScript, C#, Python, nem nenhuma outra linguagem
- Da mesma forma, ele não depende de HTML, XAML, nem nenhuma outra estrutura gráfica/de interface do usuário
- Dessa forma, os Cartões Adaptáveis podem ser renderizados nativamente em qualquer plataforma enquanto há um renderizador
O formato de Cartão Adaptável é uma propriedade compartilhada
- O formato, juntamente com os respectivos SDKs, deve ser software livre e a evolução dele deve ser impulsionada pela comunidade
- Portanto, o formato não é de propriedade de nenhuma equipe específica, nem é controlado por uma
O formato de Cartão Adaptável não foi projetado "apenas para uso da Microsoft"
- Em vez disso, ele foi projetado para atender às necessidades de uma ampla variedade de aplicativos e casos de uso
O Grupo de Trabalho de Cartão Adaptável governa a evolução do formato
- Esse grupo de trabalho é composto por um conjunto de funcionários da Microsoft que estão profundamente envolvidos no sucesso do formato
- O grupo de trabalho realiza reuniões semanais (atualmente na segunda-feira) durante as quais as propostas de recursos são examinadas, problemas em aberto são discutidos e triados e o progresso geral nos itens de trabalho vNext é acompanhado
- O grupo de trabalho usa muito os comentários da comunidade, incluindo equipes internas da Microsoft, para decidir como o formato evolui
- Qualquer pessoa pode participar do grupo de trabalho abrindo problemas no GitHub (veja abaixo)
- Problemas/solicitações de recurso originadas no uso real da estrutura de Cartões Adaptáveis (como um host ou um criador de cartão) têm o maior impacto no futuro do formato
- Para serem aprovados pelo grupo de trabalho, novos recursos propostos:
- precisam justificar-se por casos de uso da vida real;
- precisam ter uma especificação funcional
- O novo recurso aprovado é adicionado à lista de pendências e considerado para o vNext
- Os critérios usados para priorizar novos recursos incluem a amplitude dos cenários que o recurso permite, a complexidade/manutenção dele e muito mais
- Em caso de dúvida, deixe fora. É muito mais fácil introduzir um recurso bem projetado mais tarde do que conviver com um erro permanentemente.
- Todos os novos recursos são implementados em todos os SDKs compatíveis
- Todos os novos recursos são documentados e associados a um cartão de teste publicado na pasta de exemplos
- As novas versões do formato e dos SDKs passam por uma fase beta
- A agenda de lançamento para versões do esquema de Cartão Adaptável e do SDK é orientada por qualidade, não por data
Interoperabilidade
- Os cartões criados de acordo com o formato documentado (por exemplo, não usando nenhuma extensão específica a um host) serão renderizados corretamente em qualquer host compatível com Cartões Adaptáveis
- As únicas exceções a esses princípios são:
- Alguns hosts podem não permitir interatividade e, portanto, não renderizarão entradas nem ações
- A execução de ações de Action.Submit fica a critério do host, e nem todos os hosts, necessariamente, manipulam adequadamente todos os conteúdos de Action.Submit. Além disso, alguns hosts podem ser totalmente incompatíveis com Action.Submit
O formato precisa ser extensível
- Os hosts devem ter a liberdade de adicionar suporte para elementos personalizados ou ações personalizadas que vão além do que o formato é capaz de fazer
- Isso é particularmente importante para ações, pois vários hosts não necessariamente dão suporte ao mesmo conjunto de ações
- Essas adições ficam a critério do host
- Elas não são uma adição de fato à especificação do Cartão Adaptável
- Dessa forma, elas criam um conteúdo que as utiliza e que é incompatível com o formato de Cartão Adaptável principal
- No entanto, elas podem ser apresentadas ao grupo de trabalho e propostas como novos recursos para uma versão futura do formato, conforme descrito no ponto n. 5
O conteúdo pertence aos criadores do cartão, enquanto a aparência e a experiência pertencem ao aplicativo host
- Os aplicativos host impõem o próprio estilo, de modo que os cartões parecem ser extensões nativas da experiência do aplicativo
- Os autores de cartões podem ainda especificar o estilo, mas somente por meio de expressões semânticas de cores, tamanhos, etc.
SDKs serão fornecidos para as plataformas de desenvolvedor mais populares
- Os SDKs facilitam a renderização de conteúdos de Cartão Adaptável em qualquer host
- Isso garante que a barreira para a entrada seja tão baixa quanto possível tanto para desenvolvedores terceiros quanto para equipes da Microsoft