1. 1
Antonio Cañas Vargas
El interior de SWAD
6 de julio de 2016
Antonio Cañas Vargas
@acanasvargas acanas@ugr.es acanas@openswad.org
https://openswad.org/ @openswad
2. 2
Antonio Cañas Vargas
Shared Workspace At a Distance
https://openswad.org/
https://swad.ugr.es/
Es una plataforma web para gestionar
asignaturas, estudiantes y profesores,
con funciones de apoyo a la docencia y
al aprendizaje.
¿Qué es SWAD?
14. 14
Antonio Cañas Vargas
Claves del éxito en la UGR
● Plataforma abierta a toda la UGR
● Formación a profesores hasta alcanzar masa
crítica (muy poca los últimos años)
● Atención al usuario
● Desarrollada atendiendo las peticiones de los
usuarios
● Fortalezas de la herramienta
19. 19
Antonio Cañas Vargas
Fortalezas de la herramienta
● Funcionalidad y usabilidad
● Sencillez (aunque no para todos)
● Tiene lo que necesitan muchos profesores
● Fiabilidad y seguridad
● Funciona las 24 horas, rápido y sin fallos
● Consume pocos recursos
● Núcleo programado en C (criticado, se convirtió en virtud)
● Un único servidor → decenas-cientos de miles de usuarios
20. 20
Antonio Cañas Vargas
Más sobre el núcleo
● Escrito en C y compilado
● Inconveniente: ausencia de funciones de biblioteca
especializadas en web
● Ventajas: rapidez, estabilidad código fuente en el tiempo
● Todo programado desde cero, excepto:
● MySQL C API http://dev.mysql.com/doc/refman/5.0/en/c-api.html
● Cifrado SHA-256 y SHA-512 http://www.ouah.org/ogay/sha2/
● Servicio web gSOAP http://www.cs.fsu.edu/~engelen/soap.html
● Drag-and-drop DropzoneJS http://www.dropzonejs.com/
● Timezone detection JSTZ http://pellepim.bitbucket.org/jstz/
21. 21
Antonio Cañas Vargas
Complementos
● Es posible desarrollar complementos (plugins)
que pueden ejecutarse en otros servidores o en
móviles. Ejemplos: SWADroid, iSWAD
● Los complementos interactúan con el núcleo
swad-core a través de un servicio web SOAP
con varias operaciones o funciones descritas
en https://openswad.org/ws/
22. 22
Antonio Cañas Vargas
Servidores en la UGR
2004-2006
Pentium 4 HT
RAM 2 GiB
2 HD 160 GB
Fedora 3
2007-2008
Core 2 Duo
RAM 4 GiB
2 HD 500 GB
Fedora 6
2009-2010
Core 2 Quad
RAM 4 GiB
2 HD 146 GB
2 HD 1 TB
Fedora 10
2011-2016
2 Xeon Quad
RAM 24 GiB
4 HD 146 GB
4 HD 500 GB
CentOS 5.7
1999-2003
Servidor
compartido
23. 23
Antonio Cañas Vargas
Servidor actual en la UGR
● HP Proliant DL380 G6, 2 Xeon Quad, RAM 24
GiB, año 2011
4 HD 146 GB
SAS 15000 rpm
RAID 1+0 (292 GB)
SO CentOS 5.7
Base de datos MySQL
/home
4 HD 500 GB
SAS 7200 rpm
RAID 5 (1,5 TB)
Archivos web
( /var/www )
24. 24
Antonio Cañas Vargas
Servidor actual en la UGR
● 2 procesadores Intel Xeon E5540 (2009)
● 2,53 GHz, 4 núcleos, 8 hebras, 8MiB de caché L3,
reloj DDR3 a 1066 MHz.
● 24 GiB de memoria RAM DDR3-1333
● PC3-10600 registered ECC, 6 módulos DIMM 4 GiB,
funcionando a 1066 MHz.
● Cada procesador: 12 GiB, 3 canales (3 DIMM 4 GiB)
25. 25
Antonio Cañas Vargas
Servidor actual en la UGR
copias de
seguridad
archivos de
usuarios
fotos de
tipo carné
base de
datos
log del
servidor
web
estadísticas
de visitas
26. 26
Antonio Cañas Vargas
● 15K rpm, RAID 1+0: SO, BD, /home
● + velocidad, + fiabilidad
● – espacio
● https://es.wikipedia.org/wiki/RAID#RAID_1.2B0
Servidor actual en la UGR
By JaviMZN, GFDL o CC-BY-3.0, https://upload.wikimedia.org/wikipedia/commons/6/61/Raid10.png
27. 27
Antonio Cañas Vargas
Servidor actual en la UGR
● 7,2K rpm, RAID 5: archivos web ( /var/www )
● + espacio
● – velocidad
● https://es.wikipedia.org/wiki/RAID#RAID_5
By JaviMZN, GFDL o CC-BY-3.0, https://upload.wikimedia.org/wikipedia/commons/6/61/Raid10.png
31. 31
Antonio Cañas Vargas
Tablas de titulac. y asignaturas
● institutions(OpenSWAD:22552,UGR:22224),
centres(OpenSWAD:706,UGR:71),
degrees(OpenSWAD:1053,UGR:428),
courses(OpenSWAD:789,UGR:7089)...
● Información titulaciones y asignaturas:
● Titulaciones en cada centro
● Asignaturas en cada titulación
● Asignaturas con usuarios
● Usuarios (según rol) por centro, titulación,
asignatura, grupo...
32. 32
Antonio Cañas Vargas
Tablas de usuarios
● usr_data(OpenSWAD:8813,UGR:115856),
usr_last(OpenSWAD:8277,UGR:112155)...
● Información de usuarios:
● Sexo
● Edad
● Lugar de origen y domicilio
● Perfiles en internet
● Preferencias
…
● Importante: LOPD
33. 33
Antonio Cañas Vargas
Tablas de usuarios
● crs_usr(OpenSWAD:1458,UGR:367597),
crs_grp_usr(OpenSWAD:308,UGR:111844),
crs_records(OpenSWAD:12,UGR:14219)
● Usuarios por:
● Asignatura
● Titulación
● Centro
● Institución
● Asignaturas por usuario
● Fichas personalizadas para cada asignatura
34. 34
Antonio Cañas Vargas
Fotografías de usuarios
● swad.ugr.es:
● 90 K fotografías
● Originales
● Procesadas (tipo carné)
● 23 GiB
● Originales 21,6 GiB
● Procesadas 1,4 GiB
● Muy útiles para investigación en detección de rostros
● Distribuirlas en abierto requeriría consentimiento
36. 36
Antonio Cañas Vargas
Tablas de tests
● tst_questions(OpenSWAD:239,UGR:31734),
tst_tags(OpenSWAD:94,UGR:2359),
tst_question_tags(OpenSWAD:330,UGR:40292),
tst_answers(OpenSWAD:855,UGR:105885)...
● Información sobre las preguntas:
● Nº de preguntas por asignatura
● Tipo de preguntas
● Puntuación promedio de las preguntas
37. 37
Antonio Cañas Vargas
Tablas de tests
● tst_exams(OpenSWAD:243,UGR:134740),
tst_exam_questions(OpenSWAD:2342,UGR:2365256)
● Información sobre los exámenes:
● Quiénes responden
● Cuándo responden
● Dónde se equivocan
● Trayectoria de cada estudiante
38. 38
Antonio Cañas Vargas
Tablas de mensajes
● msg_snt(OpenSWAD:324,UGR:1184774),
msg_rcv(OpenSWAD:1108,UGR:13362847),
msg_content(OpenSWAD:328,UGR:1541093)...
● Información sobre mensajes:
● Nº de mensajes
● Nº de mensajes por asignatura
● Nº de mensajes por usuario
● Nº de destinatarios
● Tamaño de los mensajes
● Tiempo en responder
39. 39
Antonio Cañas Vargas
Tablas de foros
● forum_thread(OpenSWAD:76,UGR:8403),
forum_post(OpenSWAD:218,UGR:59040),
forum_thr_read(OpenSWAD:542,UGR:245468)...
● Información sobre foros:
● Nº de discusiones
● Nº de posts por discusión
● Usuarios que escriben en los foros
40. 40
Antonio Cañas Vargas
Tablas de encuestas
● surveys(OpenSWAD:3,UGR:126),
svy_questions(OpenSWAD:11,UGR:668),
svy_answers(OpenSWAD:48,UGR:3023),
svy_grp(OpenSWAD:1,UGR:15),
svy_users(OpenSWAD:0,UGR:3935)
● Información sobre encuestas:
● Nº de encuestas
● Nº de encuestas por asignatura
● Usuarios que han respondido
● Estadísticas de las encuestas
41. 41
Antonio Cañas Vargas
Tabla de log (registro de accesos)
● log_full(OpenSWAD:734409,UGR:410636738),
log_recent(OpenSWAD:14609,UGR:844237)
● Mucha información de accesos:
● Por rol de usuario
● Por usuario
● Por acción
● Por titulación
● Por asignatura
● Por fechas
UGR: 410 millones de accesos desde 01/01/2005
42. 42
Antonio Cañas Vargas
Tabla de log (registro de accesos)
● Cada vez que un usuario pulsa en alguna
opción, Apache llama a ejecutar el núcleo de
swad (CGI, programa compilado)
● Hasta 2000 veces por minuto (30 por segundo)
● Normalmente 300 veces por minuto (5 por segundo)
● El núcleo consulta la BD, genera todo el código
XHTML de la página, y lo envía al navegador
● Se guarda el acceso en las tablas de log
● Además el núcleo se ejecuta varias veces / s
para refrescar conectados
43. 43
Antonio Cañas Vargas
100K-300K veces al día
Tabla de log (registro de accesos)
“clic”
acceso registrado
XHTML
servidor
base de datos
swad-core
49. 49
Antonio Cañas Vargas
Tabla de log (registro de accesos)
● ¿Y si convertimos cada clic (página generada)
en un sonido (18 feb 2013)?
● A la 1 am:
● http://swad.ugr.es/stat/clicks/clicks_1am.wav
● A la 1 pm:
● http://swad.ugr.es/stat/clicks/clicks_1pm.wav
● Eligiendo grupos (sonido):
● http://swad.ugr.es/stat/clicks/clicks_grupos.wav
50. 50
Antonio Cañas Vargas
SO (swad.ugr.es)
Windows 69%
Android 16%
22 sep.-10 dic. 2014
iOS 8%
Mac 5%
GNU/Linux 3%
51. 51
Antonio Cañas Vargas
Navegadores (swad.ugr.es)
Chrome 65%
Firefox 14%
Safari 10%
Navegador Android 4%
Internet Explorer 6%
22 sep.-10 dic. 2014
54. 54
Antonio Cañas Vargas
¿Quiénes lo hemos desarrollado?
● Programadores principales (equipo actual):
● Antonio Cañas Vargas (swad-core, swad-prado,
coordinación, servidores, administración, cursos)
● Daniel J. Calandria Hernández (fotomaton,
foto_promedio, swad-ircd, chat)
● Juan Miguel Boyero Corral (SWADroid, coordinador)
● Juan Antonio Rodríguez Ortiz (iSWAD, TFG)
● Raúl Álvarez Hinojosa (iSWAD, TFG)
● Rubén Martín Hidalgo (SWADroid, TFG)
(verde = software libre)
55. 55
Antonio Cañas Vargas
¿Quiénes lo hemos desarrollado?
● Antiguos programadores (I):
● Jesús Álvarez Martín (fotomaton)
● Alberto E. Rodrigo Gámiz (fotomaton)
● Ana Belén Cara Carmona (chat y pizarra)
● Carlos Moreno Muñoz (chat y pizarra)
56. 56
Antonio Cañas Vargas
¿Quiénes lo hemos desarrollado?
● Antiguos programadores (II):
● Antonio Manuel Aguilera Malagón (SWADroid)
● Helena Rodríguez Gijón (SWADroid)
● José Antonio Guerrero Avilés (SWADroid)
● Alejandro Alcalde Barros (SWADroid, colaborador)
● Marta Muñoz López (SWAD2Moodle, módulo Moodle)
● Miguel Ángel Cerrailo Valle (Triswados, app Android)
57. 57
Antonio Cañas Vargas
¿Quiénes lo hemos desarrollado?
● Programad. de módulos que no se usaron:
● Andrés Ramón Masegosa Aredondo (fotomaton)
● Raúl Jiménez Benítez (chat)
● María Beatriz Medina Yáñez (pizarra)
● Raquel Cazalilla Sáez (chat y pizarra)
● Emiliano Luis Rincón Vallejos (editor enriquecido)
● Diego Montesinos Hervás (iSWAD)
● Lucas Ortiz Velasco (SWADMyPage)
● David Medina Godoy (SWADE, editor enriquecido)
58. 58
Antonio Cañas Vargas
¿Quiénes lo hemos desarrollado?
● Traductores:
● Antonio Cañas Vargas (CA,DE,EN,ES,FR,GN,IT,PL,PT)
● Joan Lluís Díaz Rodríguez (CA)
● Rafael Barranco Droege (DE)
● Giuseppe Antonio Pagin, Antonella Grande, Francisco
Manuel Herrero Pérez, Nicola Comunale Rizzo (IT)
● Wojtek Kieca, Tomasz Olechowski, Mateusz Stanko
(PL)
59. 59
Antonio Cañas Vargas
¿Quiénes lo hemos desarrollado?
● Colaboradores:
● Francisco A. Ocaña Lara (preguntas frecuentes - FAQ)
● Javier Fernández Baldomero (foros)
● Antonio F. Díaz García (servidores)
● Eva Martínez Ortigosa (administración)
● Adrián Gómez Anaya (WikiSwad)
● Paloma Marín Arraiza (vídeotutoriales)
● técnicos y becarios CEVUG
● ~120 administradores de titulaciones
● ...y muchos más
61. 61
Antonio Cañas Vargas
Software libre
● Software con licencia copyleft que garantice
derechos de uso, copia, modificación y
redistribución
Free software
centrado
en la libertad
Open source
centrado en el modelo
de desarrollo cooperativo
cc by Beatrice Murch
http://commons.wikimedia.org/wiki/User:Blmurch
cc by Brian Solis,
http://www.briansolis.com/
63. 63
Antonio Cañas Vargas
Pasos para liberar el núcleo
1. Escribir el código en inglés (100%)
2. Independizarlo de la UGR (100%)
3. Traducir cadenas a 9 idiomas (70%)
4. Añadir cabeceras AGPL a los archivos (100%)
5. Publicar el código fuente (100%) https://openswad.org/source/
6. Publicar proc. Instalación (100%) https://openswad.org/install/
7. Usar sistema de control de versiones git (100%)
8. Subir a GitHub (100%) https://github.com/acanas/swad-core
9. Automatizar instalación (0%)
64. 64
Antonio Cañas Vargas
Programas liberados
● swad-core A. Cañas
CGI: c; base de datos: mysql
● fotomaton D. J. Calandria
c++, OpenCV de Intel
● foto_mediana/foto_promedio D. J. Calandria
c++, OpenCV de Intel
● swad-ircd (servidor de chat) D. J. Calandria
c++; protocolo IRC
● SWADroid (app Android) J. M. Boyero, A. Aguilera, H. Rodríguez
Java, liberado antes de la 1ª línea J. A. Guerrero, A. Alcalde, R. Martín
● iSWAD (app iOS) D. Montesinos, J. A. Rodríguez, R. Álvarez
Objective C, Swift
65. 65
Antonio Cañas Vargas
Programar usando software libre
● Permite (legalmente) usar software libre de
terceros e incluir código libre escrito por otros
MySQL, OpenCV, SHA2, gSOAP, iconos Nuvola,
iconos Font Awesome...
● Hay acceso gratuito a buenos manuales
http://dev.mysql.com/doc/refman/5.0/es/
● Y muchísima ayuda de otros programadores
http://stackoverflow.com/
66. 66
Antonio Cañas Vargas
Crear software libre
● Facilita aprendizaje y desarrollo colaborativos
Cuarto Hackathon de proyectos de software libre de la UGR, 13-16/04/2012. Foto: A. Cañas
67. 67
Antonio Cañas Vargas
Crear software libre
● Anima a programar mejor
@psicobyte_ explica las bondades del software libre. Foto: A. Cañas
68. 68
Antonio Cañas Vargas
Crear software libre
● Mejora el código: muchos ojos ven más que dos
Hackathon de SWADroid y SWAD, 25/03/2013. Foto: A. Cañas
69. 69
Antonio Cañas Vargas
Crear software libre
● Da libertad y seguridad a los usuarios
http://www.gnu.org/philosophy/
70. 70
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Con 20 años no veía muy claro que
un informático pudiera contribuir al
bien de la humanidad. Cuando
descubrí el software libre y sobre
todo cuando escuché por primera
vez a Richard Stallman encontré la
oportunidad para un programador
de colaborar en la utopía de un
mundo mejor.”
Antonio
Cañas
71. 71
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“También me animó a liberar SWAD
la decepción de ver cómo decenas
de miles de líneas de código
escritas como parte de mi tesis
quedaron en el olvido el día que la
leí. No quiero repetir la experiencia
de dejar tanto trabajo creado con
cariño abandonado en un cajón.
Todo padre está orgulloso de sus
hijos y quiere verlos crecer libres.”
Antonio
Cañas
72. 72
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Yo siempre me he sentido en
deuda con todos los programadores
que de forma altruista han ayudado
a mi aprendizaje liberando código
de sus proyectos. Yo le debo todo lo
que sé de visión artificial a esa
gente. ¡Qué menos que yo también
haga lo mismo, para que otros
puedan seguir aprendiendo!”
Daniel
Calandria
73. 73
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Otra razón son los principios que
me han inculcado mis padres al
educarme: me han hecho ver desde
muy pequeño que la sociedad se
tiene que fundamentar sobre el
cooperativismo. Puede que por ello
vea el compartir el código como
algo totalmente natural, sin
plantearme buscar nada a cambio.”
Daniel
Calandria
74. 74
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Para devolver al software libre una
parte de lo recibido.”
“Para facilitar el desarrollo de otros
proyectos permitiéndoles consultar y
reutilizar el código.”
“Para evitar que el proyecto muera
por falta de tiempo.”
“¿Y por qué no?”
Juan Miguel
Boyero
75. 75
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Siempre que he podido he
colaborado con la comunidad, ya
sea realizando sugerencias o
aportando mi granito de arena.”
“Otra razón es que el proyecto
pueda ser continuado y mejorado,
ya que seguro hay muchas cosas
que se pueden hacer mejor.”
Diego
Montesinos
76. 76
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“En tercer lugar, para devolver una
mínima parte de todo lo que yo he
recibido desde que empecé con la
informática. Han sido muchos lo
apuros y enredos de los que he
salido gracias a código compartido
por otros.”Diego
Montesinos
77. 77
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Mi trabajo ha sido añadir nuevas
funcionalidades a una herramienta
que ya era libre, y utilizando otro
software que también es libre
(ZXing), por lo que mis razones son:
que mi trabajo se ha basado en
código libre ya existente
que otros puedan reutilizar mi
código”
Antonio
Aguilera
78. 78
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Porque unos de los pilares del
software libre es la cooperación y
difusión del conocimiento.
SWADroid, que nació dentro de la
Universidad pública, debía seguir
esta política.”
Helena
Rodríguez
79. 79
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Para agradecer a la comunidad que
durante tantos años ha compartido
su conocimiento conmigo
desinteresadamente. La comunidad
del SW libre.”
J. Antonio
Guerrero
80. 80
Antonio Cañas Vargas
¿Por qué he liberado mi código?
“Porque creo que se obtiene mucho
feedback de la gente que lee tu
código y le hace modificaciones,
sobre todo en GitHub.”
Alejandro
Alcalde
81. 81
Antonio Cañas Vargas
¿Cuánto trabajo hay detrás?
● Núcleo de SWAD (A. Cañas)
● https://github.com/acanas/swad-core
● 213 976 líneas, 2 contribuidores, 55 personas-año,
3 005 838 $
https://www.openhub.net/p/swad-core
● 10000-16000 horas
82. 82
Antonio Cañas Vargas
¿Cuánto trabajo hay detrás?
● Procesamiento de fotos (D. Calandria)
● https://github.com/dcalandria/swad-fotomaton
● https://github.com/dcalandria/foto_promedio
● 2980 líneas
● 1500 horas (muchas de ellas de estudio)
● Servidor de chat (D. Calandria)
● https://github.com/dcalandria/swad-ircd
● 2976 líneas
● 100-200 horas
83. 83
Antonio Cañas Vargas
¿Cuánto trabajo hay detrás?
● SWADroid (J. M. Boyero y otros)
● https://github.com/Amab/SWADroid
● 38 732 líneas, 8 contribuidores, 9
personas-año, 494 313 $
https://www.openhub.net/p/swadroid
J. M. Boyero: 1200-1500 horas
A. Aguilera: 550-800 horas
H. Rodríguez: 500-750 horas
J. A. Guerrero: 280-300 horas
A. Alcalde: 70-80 horas
84. 84
Antonio Cañas Vargas
¿Cuánto trabajo hay detrás?
● iSWAD (D. Montesinos)
● https://github.com/diegort/iSWAD
● Licencia BSD
● 200-350 horas
85. 85
Antonio Cañas Vargas
Fuera de la UGR
● Escasa difusión
● Coste de la publicidad
● Ausencia de instalación sencilla
● Competencia
● Faltan funcionalidades de otros LMS, principalmente
edición de contenidos
● Liberada en 2010 (GitHub desde 2014)
● Programadores acostumbrados a PHP
● Mucho trabajo, pocas personas
86. 86
Antonio Cañas Vargas
El proyecto OpenSWAD.org
● SWAD en la nube
● Para cualquier país del mundo, gratuito, con
posibilidad de contenidos abiertos
● Asociación sin ánimo de lucro OpenSWAD
Association
● Funcionando en http://openswad.org/ desde
2012, pero...
● Coste alto de publicidad
● Necesitamos socios o colaboradores (sobre todo en Derecho
y Marketing)
87. 87
Antonio Cañas Vargas
Pasos para internacionalización
1. Código en inglés (100%)
2. Código independiente de la UGR (100%)
3. Traducción a 9 idiomas (70%, 100% inglés y español)
4. Formato ISO 8601 para fechas-horas (100%)
5. Fechas-horas independientes de la ubicación (100%)
6. Calendarios independientes de la ubicación (100%)
7. Semanas comenzando en lunes o domingo (100%)
8. Formato de punto/coma decimal (10%)
9. Textos en UTF8 (0%)
88. 88
Antonio Cañas Vargas
¿Cómo colaborar?
● Si quieres programar:
● Hay multitud de mejoras posibles:
https://openswad.org/roadmap/
● Ejemplos:
● Editor de texto enriquecido con enlaces, imágenes, fórmulas...
● Maquetación con CSS
● Mejorar fotomaton
● Lo más fácil es desarrollar complementos u otros
módulos independientes de swad-core
● Ejemplos:
● SWADroid, iSWAD, SWAD2Moodle, Triswados, Chat, Pizarra
89. 89
Antonio Cañas Vargas
¿Cómo colaborar?
● Si quieres administrar sistemas:
● Servidor openswad.org
● Copias de seguridad
● Base de datos
● Probar o automatizar procedimiento de instalación
90. 90
Antonio Cañas Vargas
¿Cómo colaborar?
● Si no quieres programar ni administrar
sistemas:
● Aspectos legales, asociación, LPI, LOPD
● SEO, difusión y marketing
● Traducción: https://openswad.org/translation/
● Manuales: https://openswad.org/manual/
● Videotutoriales: https://openswad.org/video/
● Diseño gráfico
● Administración asignaturas y usuarios
● Learning analytics
91. 91
Antonio Cañas Vargas
Muchas gracias
Antonio Cañas Vargas
@acanasvargas acanas@ugr.es acanas@openswad.org
https://openswad.org/ @openswad