Para leitores recentes, em janeiro de 2013, avaliei:
- Cinético
- Tecido
- Papel
- Cavalete
Por "avaliados", fiz mais do que apenas ler a documentação; Eu criei um aplicativo protótipo.
Comecei com o Fabric porque parecia ter a maior comunidade e pensei que seria a minha solução. Mas, desisti do Fabric pelos seguintes motivos:
- inconsistências de API estranhas e não documentadas que consumiam muito do meu tempo desnecessariamente.
- suporte a eventos de ponteiro inconsistentes. Especificamente, o Fabric não considera um "Caminho" como um objeto de forma verdadeira selecionável e observável. Isso não atendeu às minhas necessidades, já que os caminhos interativos são um dos principais requisitos do meu aplicativo.
- acréscimos de translações nos bastidores ao Canvas para posicionar objetos. Para mim, o Fabric tenta ser muito inteligente nesse aspecto, sem deixar claro para o desenvolvedor o que está fazendo.
- opinião excessivamente forte sobre como funciona a interatividade mover, redimensionar e girar. De muitas maneiras, é ótimo ter essa funcionalidade incorporada ao framework, mas, no meu caso, não concordo com a maneira como ela foi implementada, o que significa essencialmente ter que reimplementá-la eu mesmo.
- documentação esparsa - muitos dos casos em que a documentação de um método tem a forma: "setX (Y) - define o X para Y" :-)
Dei uma olhada no Paper e não fui muito longe. Pareceu-me abertamente obtuso e também caiu no meio do caminho - é uma biblioteca de visualização muito simples para ser um modelo de objeto simples para o Canvas, mas não é uma biblioteca de visualização suficiente para competir com o D3. Além disso, a documentação novamente não estava particularmente acessível.
Acho que Cavalete provavelmente faz muito sentido se você tem experiência em Flash / ActionScript, mas eu não tenho. Além disso, parecia excessivamente focado no jogo para minhas necessidades. O prego no caixão foi novamente documentação - insuficiente e apresentado em formato não padronizado.
Então, acabei optando pelo Kinetic porque:
- tutoriais e exemplos realmente ricos e claros
- As funções de API fazem o que são chamadas e são amplamente adivinhadas - produtividade mais rápida, curva de aprendizado mais superficial
- é razoavelmente claro sobre o que faz e o que não faz - não é tão rico quanto alguns dos outros, mas é um benefício; faz menos coisas, mas faz melhor
- Caminhos são Formas cidadãs de primeira classe, como qualquer outra Forma, o que era essencial para minhas necessidades.
Kinetic não é perfeito de forma alguma, e algumas vezes tive que mergulhar fundo no código-fonte para descobrir o que realmente está acontecendo nos bastidores. Além disso, sinto falta da análise SVG e da saída do Fabric.