martes, octubre 31, 2006

Feina per al DFWikiTeam3: Backups

Referent al tema backups, he estat parlant amb el Marc aquest migdia, i hem decidit aplicar una solució en dues fases. Primer s'arreglarà el codi per tal que funcionin totes les possibles situacions d'exportació/importació. I després es farà que sigui compatible amb totes les versions de NWiki.

La primera fase començarà de forma immediata. La segona, començarà quan s'hagin fet les modificacions relatives a la base de dades en XML. D'aquesta manera en assegurem que no haurém de modificar codi degut a aquest tema. Encara que ens interessa a tots que la segona fase s'acabi com més aviat millor, porto desde Juliol insistint en aquest tema, no ens podem permetre perdre el temps implementant solucions que ens poden durar un parell de releases.

Aquesta tarda he estat parlant amb el Javi i en Marc i els he fet una mica d'introducció al sistema de backups de Moodle i al nostre sistema d'export/import.

Mentre feiem aquesta intro., ja em localitzat un parell de coses que no es tenien en compte. Basicament, el que els he dit que fessin és que provin en profunditat els dos sistemes i arreglin les quatre tonteries que ens hem olvidat (per exemple els vots). Ara mateix es poden fer restauracións que funcionen, en les que no perd contingut i amb les que es pot treballar.

La única situació que no està implementada és la seguent: quan s'utilitza l'eina d'importació d'XML, també es deixa escollir un backup d'un curs. Amb aquesta acció, s'han de reconeixer si dins del backup hi ha una e-wiki o nwiki i aplicar l'algorisme corresponent. S'hauria de trobar la manera de diferenciar l'una de l'altra, ja que ara no es fa bé.

He quedat que el DFWikiTeam3, que dedicarien un parell de dies a provar la NWiki i a arreglar les errades i uns 5 o 7 dies a implementar el que falta. D' aquesta manera, el dimecres que bé segurament tot torni a funcionar com és degut i per la següent reunió, tindrem implementada una funcionalitat nova.

Annex: Creació dels jocs de proves

Us he comentat en l'altre post que feciu un backup de codi i dades. Amb això amb referia que consevesiu el zip original de Moodle. Aquest és suficient per restaurar el codi original. Per fer un backup de les dades la millor manera és fer una copia de la base de dades.

Per que tothom tingui accés al joc de proves de la migració de e-Wiki i quedi per la posteritat, he tingut una idea. Quan tingueu creat el Moodle amb els 2 o 3 cursos i amb les 4 o 5 wikis de torn, accediu a la base de dades i la exporteu-la a SQL. Tindreu un arxiu .sql de menys d'un mega.

D'aquesta manera, tothom podra executar l'SQL i crear-se una base de dades consistent on fer proves. D'igual forma, a vosaltres, us anirà perfecte a l'hora de restaurar l'estat inicial cada vegada que peti la instal·lació. Només caldrà fer un drop de la base de dades i carregar l'arxiu.

Feina per al DFWikiTeam1: Instal·lació de la Nwiki.

Comencem pel principi. Quan ens van dir que la DFWiki substituiria la e-Wiki de Moodle, ens van demanar una seguit de coses. La més rellevant per al cas que vaig a tractar ara, era que li canviessim el nom. La DFWiki tenia que deixar-se de dir així i ser només Wiki.


Quan era DFWiki no hi havia cap problema, aquesta i la e-Wiki convivien sense cap problema. Cada una estava dins de la seva carpeta del directori mod i tenia les seves taules. Ara la NWiki, està dins de la carpeta mod/wiki, on originariament hi havia la e-wiki i les seves taules comencen, tal i com diuen els estàndars, per “prefix”_wiki. Aquest últim fet porta bastants mal de caps.


Quin és el problema?

Quan es borra el directori mod/wiki antic i es fica el nostra, la versió de la wiki ha canviat. Per tant, quan s'accedeix a la pantalla d'administració, salta l'script d'upgrade (mysql.php). Aquest, serveix per que anem afegint el codi necessari per modificar la base de dades, és a dir, per que la gent que s'instal·la la NWiki de 0 i la gent que en fa un actualització tinguin una DB idèntica.


Però he dit que la wiki que hi havia instal·lada no era la nostra, no podem fer els alters tal qual, hi ha taules que tenen el mateix nom en les dues version, però n'hi ha que no son pas comunes. El procediement a seguir, abans de fer res, detectar quina wiki hi ha en els sistema. Si es la nostra contiunuar tranquil·lament, sino, procedir amb la migració.


Pot ser que la wiki antigua tingui instàncies en el sistema i pot ser que no. Per assegurar-nos, hem de fer una substitució del mòdul antic per el nostre sense que el sistema s'en adoni. Fins i tot l'identificador de mòdul, ha de ser el mateix.


Estat de la migració i feina a fer

Des de Maig d'aquest any, no es s'actualitza el protocol de migració de la e-Wiki i ara com ara, no funciona gents bé.



Primera cosa:
if ($oldversion < 2006042801 ..... wiki_synonimous...
mirar si existeix la taula de sinonims, és bona idea; haver de saber en tot moment la versió de ewiki és un merder. Realment cal tindre en compte aquest numero? No es pot fer directament? La taula wiki_synonymous ha existit sempre, no? Caldria comprovar-ho.


Suposem que això no és cap problema i seguim analitzant el codi. Es comprova si la dfwiki esta instal·lada. Si ho esta, es fan tot un seguit d'actualitzacions; sino s'instal·la una dfwiki temporal. Un cop fet, es migra tot el contigut de la e-Wiki a DFWiki i després de DFWiki a NWiki. Dos pajaros de un tiro.


Però cal tanta història? Suposo que si. Caldria analitzar-ho amb més profunditat. El que trobo lleig, és el tema de crear o actualitzar la DFWiki. Si per algun motiu, treiem una versió nova de la DFWiki(cosa poc probable), es tindria que actualitzar aquest codi. S'hauria de provar de treure el codi que actualitza la DFWiki fora del mysql.php i cridar a una altra operació que ho fés. La idea seria que poguessim incluir el mysql.php de la DFWiki en totes les releases de la NWiki per estalviar-nos feina i fer-ho tot més extensible. La majoria de problemes que tenim a la NWiki és mai pensem en fer les coses ampliables i sempre ho fem tot estatic. Es podria fer el mateix amb el mysql.sql de la DFWiki, per el cas que s'hagi de crear una DFWiki temporal.


Un cop tenim una DFWiki i una e-Wiki, s'ha de migrar tot d'un costat cap a l'altre. Es fa correctament? Quan això funcioni, s'han de migrar totes les DFWiki's a NWiki. En teoria, aixó està implementat correctament en l'operació del bloc d'administració, només deuen faltar els camps que guarden el tamany de l'editor.


Procediment a seguir

S'hauria de crear un servidor de Moodle 1.6 exclusiu per a aquestes proves.

El tema seria:

  1. Crear ewikis:

  • crear una ewiki amb varies pagines. Aquestes pàgines han de contindre tota la sintaxis d'aquesta wiki. També s'han de crear pàgines amb l'editor html. Hi ha d'haver attachments.

  • crear una ewiki per grups per a 3 o 4 grups amb varies pàgines. Aquesta wiki ha de tindre pagines comunes als dos grups i pagines propies. Ara ja no cal provar tant extensament la sintaxis.

  • crear una ewiki per usuaris per a 3 o 4 usuaris. Ha de tindre un contingut semblant a la wiki anterior.

  1. S'hauria de fer una copia d'aquesta instal·lació de Moodle (codi+dades). Aquesta copia de seguretat ens serviria per fer totes les proves a partir d'ara.

  1. Instal·lar la NWiki i trobar on falla.

  1. Restaurar la copia de seguretat, modificar el codi de migració i repetir 3. fins que funcioni correctament.

Una altra cosa a provar, és la correcta migració a UTF-8. Pot ser que la ewiki estigui en UTF-8 o en ISO-8859. Així doncs, caldria probar aquest dos casos.


Bueno, em sembla que no em deixo res. Si hi hagués alguna cosa que em descuidés, ja us la comentaria aquí o al fòrum.

sábado, octubre 28, 2006

Backups

Partint de la base que hem de tindre en compte existeixen 3 wikis per a Moodle(DFWiki, NWiki i eWiki), quina seria la situació perfecte? Desde NWiki s'hauria de poder carregar qualsevol cosa que vingués dels altres mòduls. Quina és la situació actual?

Ara com ara, amb la última versió que hem publicat, la NWiki exporta i importa perfectament els continguts en XML. Aquesta acció es pot realitzar des del bloc d'administració de la NWiki.

Una altra operació possible és fer un backup d'un curs. Si s'hi ha afegit alguna NWiki, s'ha de guardar el contigut de la wiki dins del XML que genera Moodle, consevant el seu format i regles. L'operació de restaurat d'un curs també funciona perfectament. Això es pot fer des del bloc d'administració del curs.

Ara bé quan la cosa es complica, quan es fa servir l'eina "Importar XML" de la NWiki, et permet fer servir el backup d'un curs. Després d'escullir un zip, analitza el contigut del XML en busca de tags "wiki" i et dona a escullir quina wiki de les que ha trobat és la que vols restaurar. Tal i com esta implementada aquest operació, no es fa cap diferenciació entre eWiki i Nwiki. Això ha de canviar.

Una altra cosa de les que jo tinc etiquetades com "vaya coñazo implemetar esto" és la compatibilitat de backups i XMLs entre les diferents versions de la NWiki. Fins ara el que hem estat fen ha estat el seguent: Cada vegada que es canvia la base de dades es canvia backuplib, el restorelib i el emportxmlib. Hauriem de fer-ho de forma estandar per poder restaurar un XML o un backup fet amb qualsevol versió.

Feina pendent:
  • Implementar una forma de restaurat de curs i de XML que reconeixés la versió de procedencia i carregués els camps de forma correcta a la bases de dades. I una mica més dificil, que descartés els camp eliminats i deduis els afegits en la versió del sistema.
  • La NWiki ha d'acceptar backups i XMLs de DFWiki i de eWiki.

viernes, octubre 27, 2006

Okay, East Perth, we've had a problem here.

'Okay, East Perth, we've had a problem here.'
'This is East Perth HQ. Say again please.'
'East Perth, we've had a problem. We've not updated ewiki migration protocol in some months.'

No voldria dir que tenim un problema tant gran com els tripulants de l'Apollo13, però en tenim un dels cabrons.

Com a introducció a aquesta nova història per no dormir diré, per a qui no ho sapiga, que durant la instal·lació de la NWiki es migra tot el contingut de les eWikis ja creades en el site a NWikis. No volem pas putejar a ningú, si hi ha gent que faci servir la versió que incorpora Moodle, té tot el dret a conservar el seu treball (inclús incluem un parser de ewiki para nostagicos).

Resulta que la última vegada que es va revisar el protocol a seguir en la instal·lació de la NWiki va se el Maig passat. Les modificacions les va fer l'Eloy Lafuente (uno de los grandes de Moodle) i ho va fer basant-se en l'script de creació de les taules de la NWiki que hi havia al repositori de Sourceforge. Per aquelles epoques, nosaltres haviem abandonat aquell servidor i ens haviem mudat a LaFarga. Això significa que fa nosequantes versions de la NWiki que no es fa la migració de eWiki o no es fa correctament.

He estat mirant per sobre el mysql.php i vaya tela. No se si intentar arreglar el codi o si començar-lo de zero... Em sembla que a partir de la setmana vinent ens haurem de replantejar algunes prioritats.

Grades in Wiki

El quatri passat, les DFWikiTeam girls, van dissenyar i implementar el mètode d'avaluacions de les wikis.

Ara, hauriem de plantejar-nos la opció de seguir on ho van deixar elles. Moodle té el menú de grades, on el professor pot veure i editar les notes que tenen els seus alumnes en les activitats puntuables que s'han afegit al curs. Si el professor ho permet, aquests alumnes poden entrar a aquest menú i fer un seguiment de les seves avaluacions i saber en tot moment com porten l'assignatura.

Tal i com està ara el sistema notes de la wiki, només caldria implentar la funció wiki_grades per tal de que Moodle i la NWiki intercanviin aquesta informació. L'únic problema que tenim, com sempre, és que la nostra wiki és diferent a les altres activitats. Un qüestionari, una tasca o una lliçó són activitats que es realitzen i s'obté una sola nota. Un alumne que edita una wiki, pot tindre moltes notes diferents. El professor pot puntuar el seu treball individual en una versió d'una pàgina, després pot evaluar l'edició global d'aquesta (ja son 2 notes) i després els seus companys poden avaluar el treball que ha fet. Facilment, podem trobar-nos en la situació que un estudiant té varis centenar o milers de notes.

Com ens ho podem fer per calcular una sola nota per a aquesta activitat? Està clar que això ha de ser una opció que ha de poder configurar el professor. S'haurien de tindre en compte els vots de les pàgines per calcular les notes? Doncs, és una possibilitat. Hauriem de mirar com ho fan els fòrums per recopilar tota la informació i retornar un sol resultat per persona.

Una altra cosa que tenim en contra és que sempre que parlem de grades, ho relacionem amb numeros. Resulta que la NWiki permet tant avaluacions quantitatives com qualitatives. És a dir, hem de pensar que hem de poder calcular una nota final a partir d'un text que s'ha introduit en un desplegable.

Em sembla que patirem amb aquest tema...




D'esquerra a dreta, l'Agatha, jo i la Roser
Ag&Ru, us trobem a faltar...

Recent Activity

Després d'haver estat currant aquesta setmana amb el bloc recent activity, he recordat que la NWiki encara no te implementada la operació de alimenta aquest bloc.

Seria bona idea dedicar cinc minuts a pensar les dos o tres sentencies SQL que calen per programar aquesta operació. Basicament, el que ha de fer la funció wiki_print_recent_activity és, donat un curs i una hora, printar totes les actualitzacions fetes a la wiki en una taula. Una chorrada, vamos, (en quan a programació) però més funcionalitat i més integració amb Moodle.

Un petit pas per l'home peró un gran pas per a la comunitat

Després de molts mesos currant, acabo de fer un zip el codi que es possarà a HEAD de Moodle. D'aquí a poques hores la wiki que incorpora Moodle desapareixarà i es colocarà la nostra en el seu lloc.

David i Ferran, segur que us pensaveu que aquest dia no arribaria mai.

Suposo que dilluns ja podrem començar a treballar directament a la branca de desenvolupament de Moodle i podrem començar a tocar coses que fins ara no podiem. Vaya gozada.

Ara només queda començar a currar a saco per adaptar-nos als requeriments de la versió 1.7 de Moodle que ja fa unes setmanes que corre i començar a implentar les opcions previstes per a 1.8. Així d'aquí uns mesos, quan sorti la beta 1.8 de Moodle, ja podrem deixar de fer zips i histories rares.

Ja som oficials!

Conflictes entre NWiki i DFWiki

Fa uns mesos, quan encara estava fent el projecte, vaig detectar que la NWiki i la DFWiki tenien problemes si co-existien en un mateix Moodle.

Ara que s'està ampliant el curs en format wiki, per a que es pugui treballar amb la wiki sense haver d'entrar dins de l'activitat, encara s'han accentuat més aquests problemes. Quan vaig estar traballant en la integració de totes les funcionalitat de DFWiki cap a NWiki, ja vaig detectar problemes amb ead_tools. Si per algun motiu, algun bloc feia importacions de forma dinàmica de mòduls i es donava el cas que carregava les nostres dues wikis, donava error. Quan es feia la consulta a la base de dades, es retornaven els noms dels mòduls en ordre alfabetic, es carregaven les llibreries de la DFWiki i quan arribava el torn de la NWiki, es trobava que hi havia classes que ja s'havien importat, macros que ja s'havien definit, funcions js que es sobreescribien...

Per aquest motiu, ahir vaig decidir dedicar una estona al find&replace. Tot nom clau que s'usava tant a la DFWiki com a la NWiki, el vaig canviar en aquesta última afegint-li el prefix "wiki_" o alguna cosa semblant. De pasada, vaig canviar el nom d'alguns arxius, per fer el projecte més entenedor. A més a més vaig haver de modificar el codi del curs wiki per tal que la última cosa que es fés, fos recarregar els js i redefinir les variables que contenien les imatges, i així, d'assegurar-nos que es feien les crides correctes i que es trobarien les imatges.

Ara com ara sembla que les dues implementacions de la wiki poden co-existir sense que surti cap error. He aconseguit que el bloc recent activity es pugui ficar en els nostres cursos i que els blocs que fan servir arbres (index, index_current, page_list) funcionin bé. Amb aquesta modificació en el curs, a part fer funcionar bé els trees en els blocs, es permet que funcioni el tree de l'editor wiki i que es puguin plegar i desplegar els arxius que hi ha pujats al servidor.

Com a última cosa a fer, tocarà revisar el wiki_tree.js i el buttons.js, que conté el codi que permet plegar i desplegar el menú de les emoticones. Aquest menu funciona perfectament dins de l'activitat wiki, però dins del curs, un cop desplegat, ja no es pot tornar a plegar més. Suposo que com que no s'havia pensat per funcionar en aquest entorn, s'hauran de fer unes quantes modificacions.

jueves, octubre 26, 2006

Intro

Faré servir aquest blog per documentar les histories varies que s'em ocurreixin sobre la NWiki.