Trabajo tanto en casa como en la escuela con mis amigos. En la escuela, todos los puertos excepto el puerto 80 y el puerto 443 (HTTP/HTTPS) están bloqueados, por lo que es difícil configurar un "espacio de trabajo" colaborativo.
Estoy buscando un programa que cree una carpeta virtual en nuestro escritorio (como Groove) en la que podemos poner nuestro proyecto, y cuando escribimos nuestro archivo en el disco (con el editor de texto o IDE de nuestra elección), el los cambios se difundirán automáticamente en todas las computadoras.
Debe ser portátil (no se requieren derechos de administrador) y, preferiblemente, debe ser gratuito.
¿Ya se ha hecho este tipo de programa?
Codenvy es un IDE de aplicación web puro que podría adaptarse a sus requisitos para la colaboración en tiempo real. Parece un IDE bastante completo que se ejecuta íntegramente en Chrome.
Según el editor:
El entorno es colaborativo y los espacios de trabajo se pueden compartir en pantalla como WebEx, colaborativos como Google Docs y bifurcados como GitHub.
(También se integra con BitBucket).
Creo que debería reconsiderar la idea de que varias personas editen en vivo un solo archivo de código. Eso puede ser excelente para enseñar o programar en pareja (es decir, trabajar en lo mismo ), pero no para trabajar en cosas diferentes. Se pisarán los dedos de los pies unos a otros en un grado terrible y no podrán hacer ningún trabajo. En esencia, tendrá los mismos conflictos de código que cuando realiza una "fusión" en un VCS, pero los tendrá constantemente . Difícilmente podrá compilar el programa en algún momento, y mucho menos probar su propio trabajo, debido al código a medio terminar de otras personas. También le resultará más difícil beneficiarse de las sugerencias del IDE, los garabatos de error, la finalización del código, etc.
El desarrollo paralelo es muy parecido a la computación paralela. El rendimiento no escala linealmente. Extendiendo la analogía, obtener un buen rendimiento en paralelo proviene de minimizar la sincronización. La mejor aceleración proviene de problemas "vergonzosamente paralelos", donde cada nodo realiza un trabajo completamente independiente. La peor aceleración proviene de algoritmos que, en cada paso, requieren datos de todos los demás nodos.
La metodología VCS es un buen enfoque. Cada persona revisa una versión del código que compila y, más o menos, funciona. Hacen cambios sin que nadie más interfiera. Con la frecuencia óptima (de una vez por semana a una vez por hora, según la rapidez con la que cambie el código), se sincronizan mediante la confirmación del código y la creación de una nueva versión del código base que compila y funciona. Otros tiran de ese cambio, tal vez hacen los ajustes necesarios y continúan trabajando. Recuerde, la sincronización es necesaria independientemente, pero mantenerla al mínimo permite que las personas se concentren en el trabajo útil.
Git resuelve muy bien los objetivos de VCS. Tirar/empujar/combinar funciona mejor que en otros VCS. Tiene una curva de aprendizaje empinada y, en general, una GUI deficiente (en Windows), pero es una herramienta muy útil para aprender. Mencionas hacer un empujón forzado y borrar el historial. Tiene razón en que esto es muy indeseable, por lo que se debe prohibir el empuje forzado en el servidor a través del interruptor de configuración.
Sin embargo, persiste el problema de cómo desarrollar características que dependen unas de otras. No desaparece ni disminuye si lo editas en vivo. Un enfoque es hacer uso de objetos simulados. Estos son objetos falsos que devuelven respuestas enlatadas (en lugar de realizar una lógica real). Se utilizan en el contexto de las pruebas unitarias, donde prueba el código que ha escrito en un caso de uso particular. Escribir una prueba unitaria que use simulacros le permite probar ese caso de uso y, por lo tanto, su código, sin tener escritas las partes dependientes. Un enfoque alternativo es simplemente escribir el código sin ninguna prueba y luego probar una vez que el código real esté disponible. Sin embargo, hacer pruebas y corregir errores al final es más difícil, especialmentepara los nuevos programadores (que cometen muchos errores pequeños y tontos que son diabólicos para que los resuelvan más adelante). Pero, escribir simulacros y pruebas unitarias implica sus propios costos de tiempo. (Estos están más que compensados a largo plazo porque ayudan a cambiar el código sin que se introduzcan nuevos errores, pero a corto plazo pueden no ser una ganancia de productividad). De cualquier manera, considere la mejor manera de dividir el trabajo.
Codeanywhere afirma en su sitio web que son una plataforma de colaboración para desarrolladores. Y tienen un editor web realmente bueno que funciona desde cualquier navegador, por lo que el firewall no es el problema. Usando Codeanywhere, puede crear DevBox, que es básicamente un pequeño vps que puede personalizar de la forma que desee y puede ejecutar prácticamente cualquier lenguaje de programación y tiene un terminal ssh integrado en el editor. Luego puede compartir su proyecto con sus amigos y colaborar incluso en tiempo real (varios usuarios editando el mismo archivo en tiempo real).
Las respuestas de los demás son muy buenas para mostrar por qué es posible que no quieras hacerlo, pero si estás decidido a colaborar (lo que creo que tiene algunos beneficios): ¿has probado c9.io ? Eso parece ser exactamente lo que estás buscando. He hecho una buena cantidad de trabajo con este IDE, y creo que este es probablemente el mejor IDE en línea que podría. Y brinda soporte de terminal casi completo, lo cual es muy útil para todo tipo de trabajo de servidor, brinda un espacio de trabajo casi idéntico a Sublis para descargar o instalar nuevos paquetes de Python o nodo. Son paquetes muy lentos. Es muy lento. En general, esto parece una muy buena opción. Especialmente para la colaboración, si desea continuar con la colaboración, ya que otros notan que podría no ser la mejor opción, esta parece ser perfecta, lo más cerca posible.
¿Has considerado Bitbucket ?
Usted mencionó en su pregunta que probó Github, pero quería llamar su atención sobre otra alternativa.
Bitbucket, a diferencia de Github, brinda repositorios privados gratuitos ilimitados y tiene la capacidad de deshabilitar los empujes forzados.
Bitbucket es compatible con varios sistemas de control de versiones, pero recomiendo encarecidamente a sus amigos que echen un segundo vistazo a git. Si bien puede ser algo difícil a veces, git realmente hace un mejor trabajo que cualquier otra cosa que haya probado.
Para responder a la pregunta "Estoy buscando un programa que cree una carpeta virtual", sugiero Bittorrent Sync como una buena aplicación de sincronización de carpetas estilo Dropbox sin nube. Viene con un instalador, pero creo que también funcionará de forma portátil. AFAIK, debería transmitirse automáticamente a través de HTTP para sortear su firewall. SyncThing como una aplicación de sincronización de carpetas al estilo de Dropbox sin nube y de código abierto.
Empecé a usar ownCloud hace una semana y me sorprendió que incluso pudiera usarse en su caso cuando se amplía con algunas de las "aplicaciones ownCloud" disponibles. Como tiene los puertos 80 y 443 disponibles, puede alojar una instalación incluso en alguna máquina externa ( ownCloud también ofrece alojamiento). Los clientes de escritorio también están disponibles para múltiples plataformas (no estoy seguro de si necesitan "permiso de administrador" para instalarse, ya que aún no los he usado).
Aunque las carpetas no estarían en el escritorio de las máquinas locales (a menos que decida trabajar localmente y sincronizar directorios a través de WebDAV, que también sería una opción), podría coincidir bastante bien con sus requisitos:
ownCloud incluye un editor compatible con el plegado de código, que se puede ampliar de varias maneras (por ejemplo, lo uso con el complemento Markdown, por lo que el editor tiene incluso una vista previa en tiempo real). Incluso hay soporte para OpenDocument Text, y más. Puede compartir documentos en un grupo, por lo que es posible la colaboración. Entonces, básicamente, el trabajo podría hacerse "en línea".
Otra ventaja es ownCloud versionando sus documentos. Entonces, si algo se estropea, puede volver a una de las versiones anteriores.
Como mencionó EtherPad: incluso hay una aplicación EtherPad ownCloud disponible, que se integra con ese servicio.
Debo admitir que todavía no he usado ownCloud de manera colaborativa, por lo que no puedo decir qué tan bien funciona con varios usuarios que editan el mismo archivo al mismo tiempo, pero diría que al menos vale la pena echarle un vistazo.
Jeff-Inventor ChromeOS
viejobarro0
tizoide
viejobarro0
tizoide
viejobarro0
unor
Alejandro Dubinsky
viejobarro0
Alejandro Dubinsky
Alejandro Dubinsky
niutech
viejobarro0