# Editor colaborativo em tempo real

Um editor colaborativo em tempo real é um tipo de software colaborativo ou aplicativo da web que permite edição colaborativa em tempo real, edição simultânea ou edição ao vivo do mesmo documento digital, arquivo de computador ou dados armazenados na nuvem - como uma planilha online, Word processamento de documentos, bancos de dados ou apresentações – ao mesmo tempo por diferentes usuários em diferentes computadores ou dispositivos móveis, com fusão automática e quase instantânea de suas edições.
A edição em tempo real realiza sincronização automática, periódica e muitas vezes quase instantânea das edições de todos os usuários on-line à medida que editam o documento em seus próprios dispositivos. Isto foi projetado para evitar ou minimizar conflitos de edição .
Com a edição colaborativa assíncrona (ou seja, não em tempo real, atrasada ou off-line), cada usuário normalmente deve enviar manualmente (publicar, enviar por push ou confirmar), atualizar (atualizar, extrair, baixar ou sincronizar) e (se ocorrer algum conflito de edição) mesclar suas edições. Devido à natureza atrasada da edição colaborativa assíncrona, vários usuários podem acabar editando a mesma linha, palavra, elemento, dados, linha ou campo, resultando em conflitos de edição que exigem mesclagem ou substituição de edição manual, exigindo que o usuário escolha quais edições usar ou (dependendo do sistema e da configuração) sobrescrevendo automaticamente suas edições ou as edições de outras pessoas, com ou sem aviso.

## História dos principais produtos

A primeira instância de um editor colaborativo em tempo real foi demonstrada por Douglas Engelbart em 1968, em The Mother of All Demos . Implementações amplamente disponíveis do conceito levaram décadas para aparecer.
Um software chamado Instant Update foi lançado para o Mac OS clássico em 1991 pela ON Technology .
Ele permitia a edição em tempo real de um único documento por vários usuários em uma LAN e dependia de um servidor de grupo de trabalho .$^[$
O interesse na edição colaborativa em tempo real pela internet levou ao desenvolvimento do MoonEdit e do SubEthaEdit no período 2003-2005, seguido logo depois pelo Gobby .$^[$
Com a introdução da tecnologia Ajax e a função de "conteúdo editável" nos navegadores, a edição colaborativa baseada na Web em tempo real desenvolveu-se como parte do fenômeno Web 2.0 por volta de 2005. Em particular, um produto chamado Writely teve um crescimento explosivo de usuários e foi comprado pelo Google em março de 2006 (que ficou conhecido como Google Docs e mais tarde renomeado para Google Drive ). Ele fornecia edições simultâneas em todo o documento, embora as alterações de outros usuários só fossem refletidas após o programa cliente consultar o servidor (a cada meio minuto ou mais). Outra solução inicial baseada na web foi o JotSpotLive, em que a edição simultânea linha por linha estava disponível quase em tempo real. No entanto, após a compra da controladora JotSpot pelo Google em novembro de 2006, o site foi fechado. O Google Sites foi lançado em fevereiro de 2007 como uma refatoração do JotSpot, mas não possui as habilidades multiusuário em tempo real do JotLive. Os projetos Synchroedit (rich text) e MobWrite (texto simples) são duas tentativas mais recentes de código aberto para preencher a lacuna na edição colaborativa em tempo real baseada em navegador, embora ainda incapazes de alcançar um verdadeiro desempenho em tempo real, especialmente em um arquitetura em grande escala. $^[$
Em 2009, o Google iniciou testes beta do Google Wave, um ambiente de colaboração em tempo real que o Google esperava que eventualmente substituísse o e-mail e as mensagens instantâneas. O EtherPad foi adquirido pelo Google, que alocou a equipe EtherPad para trabalhar no projeto Wave. No entanto, o Google anunciou em agosto de 2010 em seu blog que havia decidido parar de desenvolver o Wave como um projeto independente, devido à adoção insuficiente pelos usuários. Depois que o Google lançou o código-fonte abandonado do EtherPad como código aberto em dezembro de 2009, a comunidade assumiu seu desenvolvimento e produziu uma reescrita completa chamada Etherpad lite, que é escrita inteiramente em JavaScript e construída sobre Node.js. Outra ferramenta notável baseada na tecnologia de transformação operacional é o CKEditor . 2020 viu um aumento de interesse no conceito, já que a Microsoft também lançou recentemente sua estrutura Fluid, que se baseia em uma nova tecnologia Total Order Broadcast, em oposição a OT ou CRDT. Fluid é atualmente independente de estrutura. A Microsoft afirma que ainda não está pronto para uso em produção.
Em junho de 2016, a Collabora Productivity lançou a V1.0 do Collabora Online, um pacote de escritório online de código aberto usando a tecnologia LibreOffice, que pode ser integrado a qualquer site com algumas linhas de código. Existe um kit de desenvolvimento de software com exemplo de código de integração em diversas linguagens Node.js, PHP, Python, ReactJS e . NET, possuem especificações de API que permitem integrações interoperáveis com interfaces de usuário personalizáveis. Com o Collabora Online, os documentos permanecem no servidor, cada usuário compartilha o mesmo documento simultaneamente, permitindo que apenas um documento seja editado em tempo real e de forma interativa, sem atraso ou latência extra para ver a digitação de outros usuários. Evita a necessidade de bloqueio de parágrafos em documentos de texto. Ele permite a edição colaborativa em tempo real de documentos de processamento de texto, planilhas, apresentações, desenhos e gráficos vetoriais.$^[$
Recentemente, a edição colaborativa em tempo real retornou aos aplicativos independentes de edição de texto com extensões para Atom e Visual Studio Code lançadas em 2020.

## Outros exemplos

A edição colaborativa em tempo real pode ocorrer online em aplicativos da web, como o Microsoft Office na web (anteriormente Office Online ) – que oferece suporte à edição simultânea online ( baseada na web ) (que a Microsoft chama de "Coautoria") de documentos do Word, Planilhas Excel, PowerPoint e outros documentos do Microsoft Office armazenados no Office.com, OneDrive ou armazenamento em nuvem SharePoint – ou Google Docs e outros aplicativos de produtividade do Google Workspace (pacote de escritório) – para edição colaborativa online de processamento de texto e outros documentos armazenados no Google Drive . A edição colaborativa em tempo real também pode ocorrer de maneira híbrida, como com Power Sheet BI para Excel, em edição colaborativa off-line, baseada na Web e on-line em software de desktop, bem como em aplicativos móveis e baseados na Web, que podem ser sincronizado automaticamente com acesso instantâneo ao histórico de versões. Em 2020, assistiu-se a um ressurgimento do interesse na incorporação destas aplicações em aplicações Web seguras, especialmente para casos de utilização empresariais, com a Microsoft e a Vaadin a assumirem a liderança com back-ends de colaboração especializados em tempo real que lidam com as complexidades da partilha síncrona de dados em tempo real, que os desenvolvedores podem utilizar por meio de APIs. A Mozilla lançou em 2013 a biblioteca javascript TogetherJS, que adiciona edição colaborativa em tempo real a qualquer aplicativo da web por meio de um sistema de mensagens e, opcionalmente, um algoritmo de transformação operacional para sincronização de formulários.
Vaadin Ltd., fornecedor da plataforma Vaadin, lançou V1.0 de seu Collaboration Engine em outubro de 2020, com a premissa de permitir que os desenvolvedores criem rapidamente colaboração em tempo real e recursos de edição em qualquer aplicativo da web com back-ends Java usando algumas linhas de códigos (para casos de uso específicos por meio de suas APIs de alto nível, ainda limitadas). Este recurso atualmente oferece suporte a Java, embora o fornecedor observe que uma API baseada em TypeScript também está chegando, em linha com a recente expansão contínua da plataforma Vaadin para permitir também a construção de UI baseada em TypeScript no futuro por meio de sua futura estrutura Fusion.

## Desafios técnicos

A complexidade das soluções de edição colaborativa em tempo real decorre da latência da comunicação. Em teoria, se a comunicação fosse instantânea, criar um editor colaborativo em tempo real não seria mais difícil do que criar um editor de usuário único, porque um documento poderia ser editado usando um algoritmo semelhante ao seguinte:
* Solicite um token de 'edição de documento' do servidor
* Espere até que o servidor diga que é a nossa vez de editar o documento
* Diga ao servidor como editar o documento
* Libere o token 'editar documento'

## Veja também

* Computação distribuída
* Sistema de tempo real
* Wikipédia
* Programação em par