Collaborazione in tempo reale tramite tmux / screen

1

Come sono sicuro che molti di voi sono consapevoli; tmux e screen hanno funzionalità che consentono la condivisione di una sessione terminale concorrente con un host remoto.

In un primo momento questo sembra grandioso, e per alcuni scopi lo è, ma c'è un problema: anche se entrambi gli utenti (locale e remoto) sono in grado di inviare le chiavi e osservare le modifiche dal vivo (cioè simultaneamente e in tempo reale); c'è solo un cursore. Ciò significa che tutto va bene fintanto che una sola persona digita mentre l'altra semplicemente osserva.

Non appena entrambi gli utenti provano a digitare allo stesso tempo, stanno essenzialmente combattendo per il controllo della tastiera e quindi dello standard input, e così via.

Quindi, mentre mantiene grandi promesse per i programmatori, ecc. come una via per la collaborazione in tempo reale, alla fine non è all'altezza di una soluzione basata sul web, di cui almeno uno sa che funziona alla grande.

Quello che voglio sapere è:

  • Come può essere risolto il problema?
  • Quali considerazioni devono essere prese in considerazione da qualcuno che desidera implementare una funzione come questa (vale a dire il potenziale per ciascun utente di avere il proprio cursore o una soluzione simile)?
posta tjt263 21.06.2016 - 15:50
fonte

2 risposte

1

Un approccio diverso è quello utilizzato da Google Documenti . Quando più utenti lavorano sullo stesso documento, ogni persona ha la propria visione del documento e può modificare diverse parti del documento in parallelo. Le modifiche vengono propagate tramite WebSockets a tutti gli utenti, rendendo possibile visualizzare le modifiche in tempo reale.

Il modello è precedente a Google Docs di decenni ed è ben noto in un particolare dominio dei giochi multiplayer . Puoi immaginare che il mondo sia un documento o un file sorgente, e i giocatori possono vedere il mondo indipendentemente dagli altri giocatori, e quando un giocatore modifica il mondo, le modifiche vengono propagate ad altri giocatori.

Questo è essenzialmente ciò di cui hai bisogno qui.

Un approccio diverso (e più basilare) che potrebbe funzionare nel tuo caso è quello di avere una conversazione telefonica durante la sessione di programmazione; gli sviluppatori si accorderebbero semplicemente su chi sta prendendo i comandi e l'altra persona non dovrebbe digitare o spostare il cursore, a meno che entrambe le persone non siano d'accordo.

    
risposta data 21.07.2016 - 18:41
fonte
0

How can the problem be overcome?

A meno che non si sia disposti a scrivere il proprio editor di testo o soluzione shell, non vedo come si possa risolvere il problema a meno che non si instauri semplicemente un protocollo di qualche tipo che semplicemente proibisca l'accesso concorrente (ma proibisca anche la collaborazione concorrente). Il meglio che posso immaginare sarebbe una configurazione a schermo diviso, ogni client nel suo schermo che sarebbe OK per la programmazione di coppia tty, ma non so se tmux lo supporta. Alcune risorse in merito: link

What considerations need to be taken into account by someone wanting to implement a feature like this (i.e. the potential for each user to have their own cursor, or a similar solution)?

È un po 'vago, ma suppongo che tu debba implementare comunque uno schema client / server; farlo come un groviglio del web ha senso perché si avvantaggia immediatamente della GUI, copia / incolla / annulla locale per ogni client. Quindi devi collegarlo con gli strumenti di sistema sucha come git, compilatore laguage / interprete ...

    
risposta data 21.06.2016 - 16:08
fonte