[PIZARRA] Investigación
Investigar sobre cómo funcionaría la sección PIZARRA (probablemente renombrada a PROYECTOS)
Plantillas, scm-modules, o lo que sea. Cambios y novedades comentarlas aquí.
Plazo : Hasta Lunes 1 de Agosto
Plantillas, scm-modules, o lo que sea. Cambios y novedades comentarlas aquí.
Plazo : Hasta Lunes 1 de Agosto
Leave a comment
... por lo que tengo entendido la idea del area de proyectos es tener un lugar en la comunidad donde se pueda desarrollar y compartir codigo entre los usuarios de la comunidad, para esto es necesario un sistema de manejo de codigo (SCM). Mi propuesta es montar servidor Fossil-scm, el cual es un scm que tiene sistema de ticket integrado, ademas el servidor fossil permite modificar el css que muestra las paginas... Tambien tiene un wiki y un sistema de blog, todo esto en un scm distribuido, lo que quiere decir que todo el contenido (tickets,wiki,blog,codigo) se distribuye a los desarrolladores que hagan un pull. Otra ventaja es que usa una interfaz grafica web de modo que no es necesario usar herramientas aparte del binario fossil...
ahora... a idear una manera de integrar el sistema fossil a gAp.
Primero, para integrarlo a la pagina de proyectos/pizarra creo que lo mas facil seria usar un iframe en el div "contenido" para mostar las paginas servidas por fossil... Mi idea es esta... al buscar los proyectos se mostraria una pagina que tendria algunas opciones de administracion de proyectos, etc y mostrara una lista de repositorios, al hacer click en el link del repositorio se mostraria el iframe con el contenido servido por fossil... Claro que la interfaz servida por fossil seria modificada adecuadamente para integrase con el diseno de gAp...
Segundo, para integrarlo a nivel de usuarios... Lo que se me ocurrio es esto; los repositorios de fossil al ser clonados heredan la configuracion del repositorio padre, incluso hay una manera de incluir usuarios, entonces la idea seria tener un repositorio vacio que solo tuviera la interfaz modificada (para ser importada al clonar) y que cuando se registre un usuario se incluya en este repositorio un usario con el mismo nick y mismo password, (asi al acceder al repositorio se pediria "confirmacion") y luego cuando se creen nuevos proyectos lo que se haga sea clonar este repositorio... creo que tambien hay una manera de sincronizar usuarios de un repositorio a otro, pero tendria que investigar mas.
Primero, para integrarlo a la pagina de proyectos/pizarra creo que lo mas facil seria usar un iframe en el div "contenido" para mostar las paginas servidas por fossil... Mi idea es esta... al buscar los proyectos se mostraria una pagina que tendria algunas opciones de administracion de proyectos, etc y mostrara una lista de repositorios, al hacer click en el link del repositorio se mostraria el iframe con el contenido servido por fossil... Claro que la interfaz servida por fossil seria modificada adecuadamente para integrase con el diseno de gAp...
Segundo, para integrarlo a nivel de usuarios... Lo que se me ocurrio es esto; los repositorios de fossil al ser clonados heredan la configuracion del repositorio padre, incluso hay una manera de incluir usuarios, entonces la idea seria tener un repositorio vacio que solo tuviera la interfaz modificada (para ser importada al clonar) y que cuando se registre un usuario se incluya en este repositorio un usario con el mismo nick y mismo password, (asi al acceder al repositorio se pediria "confirmacion") y luego cuando se creen nuevos proyectos lo que se haga sea clonar este repositorio... creo que tambien hay una manera de sincronizar usuarios de un repositorio a otro, pero tendria que investigar mas.
bueno... ahora unos links
Pagina de fossil
http://www.fossil-scm.org/
varias modificaciones posibles para fossil
http://fossil-scm.org/index.html/wiki?name=Cookbook
control de claves
http://www.fossil-scm.org/fossil/doc/trunk/www/password.wiki
otra cosa que se me olvido mencionar antes... los repositorios de fossil son bases de datos SQLite... no se si es bueno o malo; pero asi es.
Bueno comenten, a ver que piensan...
Pagina de fossil
http://www.fossil-scm.org/
varias modificaciones posibles para fossil
http://fossil-scm.org/index.html/wiki?name=Cookbook
control de claves
http://www.fossil-scm.org/fossil/doc/trunk/www/password.wiki
otra cosa que se me olvido mencionar antes... los repositorios de fossil son bases de datos SQLite... no se si es bueno o malo; pero asi es.
Bueno comenten, a ver que piensan...
si... yo creo que el problema principal es que fossil guarda a los usuarios en cada repositorio, lo que siginifica que de haber varios repositorios habria que mantenerlos sincronizados... Por eso proponia un repositorio central que tenga todos los usuarios y configuracion, asi se exportarian los usarios de ese repositorio cada tantas horas y se mantendrian sincronizados (eso significa que los usuarios nuevos no podrian acceder de forma completa hasta que se hayan exportado sus datos a los demas repositorios). Crear los usuarios en el repositorio al registrarse no deberia ser tan dificil, un posible problema es que fossil no permite borrar usuarios, asi que para hacerlo habria que modificar la base de datos manualmente. Otra opcion seria registrar a los usuarios en una cuenta generica y que estos hagan un pedido a los administradores para poder tener una cuenta propia con permisos apropiados en el repositorio apropiado, esto deberia resolver casi todos los problemas de sincronizacion.
Otra cosa es que el lenguaje de la interfaz es en ingles, hay ciertas cosas que se pueden modificar desde la interfaz pero otras cosas no; como por ejemplo la linea de tiempo, asi que habria que modicar el codigo fuente para que lo muestre en español.
Otra cosa es que el lenguaje de la interfaz es en ingles, hay ciertas cosas que se pueden modificar desde la interfaz pero otras cosas no; como por ejemplo la linea de tiempo, asi que habria que modicar el codigo fuente para que lo muestre en español.
ok, este fin de semana tratare de montar un sistema fossil en mi compu e integrarlo con lo que ya se ha desarrollado en la pagina, si no lo logro entonces investigare otras opciones con scm mas tradicionales (bazzar, git, etc), si aun asi no es viable entonces habra que desarrollar nuestra propia solucion, en cualquier caso colocare aqui lo que vaya encontrando para que sigan informados.
jejeje... logre compilar a fossil !! lamentablemente yo uso windows asi que tambien habra que compilarlo para linux despues que haya modificado la fuente, para compilar solo depende de zlib. Solo modificare el codigo para mostrar el lenguaje en español asi que en teoria deberia compilar igual... y ya tengo la idea para integrar el diseno. Para la creacion de plantillas de diseno se modifica el html y el CSS desde la interfaz web de fossil y luego se hace
para aplicar plantillas se hace asi
fossil configuration export skin filenametoexportconf.txt
para aplicar plantillas se hace asi
fossil configuration import filenametoexportconf.txt
Para integrar con las bases de datos... esto para mi seria lo mas dificil, principalmente porque no tengo muchos conocimientos de bases de datos, lo qu se me ocurre es tener una cuenta generica, el usuario en ella tendra permisos para ver el codigo, descargar archivos, y ver el wiki, para tener mas acceso tendria que solicitar a un admin que le suministre una cuenta; ahora el admin haria una cuenta y le daria los permisos apropiados en el repositorio apropiado, si lo hacemos de esta manera no habria que sincronizar los repos comodije anteriormente, ya que fossil tiene un sistema de single login, que permite modificar cuentas a traves de varios repositorios. para hacer esto habria que seguir un procedimiento pero lo explicare luego...
Lo que no entiendo todavia del area de proyectos es esto; podran los usarios crear sus propios proyectos? o solo podran crear proyectos los admins?
Lo que no entiendo todavia del area de proyectos es esto; podran los usarios crear sus propios proyectos? o solo podran crear proyectos los admins?
ayer estuve leyendo un poco del codigo fuente de fossil y modificando un poco la interfaz para parecerse mas a la que tenemos actualmente. Aqui van algunas cosas interesantes que aprendi:
Primero hay que montar un servidor fossil pero esto es facil ... un script cgi que diga
y ya esta!!
Ahora, suponiendo que el script esta en
para hacer login se puede usar la interfaz grafica en
...o se puede hacer lo siguiente
donde "u" es el usuario y "p" es la clave, en este caso haria login el usuario "yo" con clave "1234", ademas soporta una variable "g" hacia la cual se redirecciona al hacer login... y para salir del sistema se puede hacer esto
como habia dicho anteriormente los usuarios solo pueden ser creados por el administrador o por usarios con permisos "setup"
otra alternativa seria ponerlos manualmente en la base de datos con sqlite3 o registrarlos con el binario fossil desde php con algo asi
esto crearia un usuario con permisos minimos, el administrador o un usuario "setup" tendria que dar los permisos adecuados mediante la interfaz grafica.
Primero hay que montar un servidor fossil pero esto es facil ... un script cgi que diga
#! path/to/fossil
repository: /full/path/to/repository/file.fsl
y ya esta!!
Ahora, suponiendo que el script esta en
http://localhost/cgi-bin/fossil.cgi
para hacer login se puede usar la interfaz grafica en
http://localhost/cgi-bin/fossil.cgi/login
...o se puede hacer lo siguiente
http://localhost/cgi-bin/fossil.cgi/login?u=yo&p=1234&g=/timeline
donde "u" es el usuario y "p" es la clave, en este caso haria login el usuario "yo" con clave "1234", ademas soporta una variable "g" hacia la cual se redirecciona al hacer login... y para salir del sistema se puede hacer esto
http://localhost/cgi-bin/fossil.cgi/login?out=1
como habia dicho anteriormente los usuarios solo pueden ser creados por el administrador o por usarios con permisos "setup"
otra alternativa seria ponerlos manualmente en la base de datos con sqlite3 o registrarlos con el binario fossil desde php con algo asi
<?php error= `fossil user new nombreuser correo@correo.com clave123` ?>
esto crearia un usuario con permisos minimos, el administrador o un usuario "setup" tendria que dar los permisos adecuados mediante la interfaz grafica.
Esta semana andaba de viaje y por eso no habia actualizado mas el ticket... segun dice el plazo es hasta manana asi que todavia estoy a tiempo, buscando un poco mas me encontre con flint una plataforma web para permitir alojamiento de repositorios fossil, dicha plataforma es la que se usa para http://chiselapp.com/ un servicio de alojamiento fossil, me parece que esta opcion seria la mas facil de implementar y adaptar a nuestras necesidades, un tema importarte es que el codigo de flint esta licenciado bajo la AGPLv3 asi que de hacer modificaciones habria que liberarlas bajo dicha licencia, no se si esto presenta algun problema....