quinta-feira, setembro 02, 2010

Interfaces Divisíveis (Umeboshi Server, Node Knockout parte 3 - final)

Eis uma apresentação do conceito guia do nosso projeto:



Se preferir em Português:



Demoramos um pouco p/ amadurecer o conceito, e ja adianto que ele não está 100% ainda, mas esta é a idéia básica, que consiste em:


  1. Elementos de interface possuem URLs

  2. Ao se acessar estas URLs, o elemento é então transferido ou replicado na tela de quem acessou.

  3. Listeners e dispatchers de eventos são configurados de maneira semelhante à que seriam para ouvir e enviar eventos dentro do contexto de uma página web, mas extendido para ouvir e enviar(pubsub) via rede pelo canal previamente combinado.



Para tornar isto possível, o primeiro passo foi fazer um servidor que criasse um novo canal pubsub para quem quer que precisasse de um. Em uma analogia com seres humanos, seria um instanciador de salas de chat, ou um carinha que reserva salas de reunião p/ quem pede. Este é o Umeboshi Server.

Então a sequência ou ciclo de vida de um aplicativo que quer que seus elementos conversem remotamente seria algo do tipo:


  1. pede para reservar um canal (acessa o entrypoint /channels/new ou /channels/new?fmt=json p/ resultado em json ou /channels/new?fmt=json&callback=foo para jsonp)

  2. passa de alguma forma este canal para as paginas relativas a cada elemento(que vao ser servidas em cada URL de um elemento destacável)

  3. prepara a lógica do que ouvir e do que falar e do que fazer quando ouvir algo relevante



Como se nota, o servidor em si, que foi nosso projeto, não faz muita coisa. Só dá o suporte para que aplicações do tipo das que visionamos, com interfaces quebráveis/divisíveis/espalháveis possam ser rapidamente e facilmente desenvolvidas por quem está habituado a fazer aplicativos single-page em HTML. Basta a inclusão de duas <script> tags extras, uma que é o include do client Faye e outra que é a chamada ao entrypoint JSONp que te retornará o código do canal em uma callback. A partir daí é tudo responsabilidade do developer.

E é isso aí, foi um projeto que gostei de participar, e que quero continuar trabalhando nele, estamos atualmente continuando a conversa na lista de discussões do umeboshi fireteam e desde já convido a todos que se interessarem a participar também, sugestões e patches são muito bem vindos.

[UPDATE 3-Setembro-2010] A votação acabou. Muito obrigado a todos que doaram parte do seu tempo para votar e deixar um review la na página da competição. Ao que parece, conseguimos ficar entre os top 5 na categoria inovação (4º lugar). E nos próximos dias atualizaremos a página do projeto e o código do servidor uma vez que os repositórios e a máquina onde fazemos deploy estão liberadas novamente.

Para acompanhar o progresso, por favor se inscreva na lista de discussão do Umeboshi Fireteam, estamos coordenando os próximos passos por lá.

Nenhum comentário: