Salta el contingut
 

Proposta d'ús de les organitzacions en l'àmbit educatiu

Joan Puigcerver Ibáñez

Llicència: CC BY-NC-SA 4.0

(Reconeixement - NoComercial - CompartirIgual) 🅭

Proposta d'ús de les organitzacions en l'àmbit educatiu

En aquest apartat es proposa una metodologia de treball per a aprofitar les ferramentes de GitHub, facilitar la gestió del treball de l'alumnat i la revisió dels projectes per part del professorat.

Aquesta metodologia es basa en la creació d'una organització, on s'allotgen de manera centralitzada els repositoris de l'alumnat i on el professorat té accés a tots els projectes.

L'alumnat treballa en els seus propis repositoris privats i el professorat pot crear repositoris públics amb solucions o exemples. D'aquesta manera:

  • Professorat: té accés a tots els repositoris de l'alumnat.
  • Alumnat: té accés a tots els repositoris públics creats pel professorat, però només als seus propis repositoris privats.

No obstant això, aquesta metodologia és complementària i no substitueix la plataforma educativa amb què es treballa habitualment (Aules, Moodle, etc.).

Objectius d'aquesta proposta

L'objectiu principal d'aquesta proposta és que l'alumnat tinga normalitzat l'ús d'un sistema de control de versions com Git, d'ús generalitzat en el món professional.

A partir d'aquest objectiu, la proposta també pretén:

  • Revisió: facilitar la revisió del treball de l'alumnat amb el sistema de control de versions Git.

  • Normalització: familiaritzar l'alumnat i el professorat amb l'ús de Git a l'aula.

    Si el professorat l'utilitza de manera habitual, és més fàcil que l'alumnat comence a utilitzar-lo.

  • Gestió de projectes: aprofitar les ferramentes de GitHub per a facilitar la gestió de projectes en grup, el seguiment de tasques i la revisió del treball.

  • Col·laboració: facilitar i incentivar la col·laboració entre l'alumnat.

Propostes

Es proposen dues opcions, segons si el treball de l'alumnat és individual o en grup.

Treball individual

Aquest és el cas més habitual: cada alumne o alumna treballa en el seu projecte i fa les tasques de manera individual. Els passos per a preparar l'organització són:

  1. Crea una organització a GitHub.

    Personalment, m'agrada crear una organització per a cada grup i mòdul professional amb la nomenclatura {centre}-{grup}-{modul}. Per exemple, fpmislata-daw1-ed o fpmislata-dams2-psp.

    Perfil de l'organització

    Pots afegir el repositori públic .github i configurar el fitxer profile/README.md per a definir el perfil de l'organització ( Adding a public organization profile README – GitHub Docs).

    Organització fpmislata-dams2-psp a GitHub

    Organització de PSP a GitHub

    Figura 1. Organització fpmislata-dams2-psp a GitHub.

  2. Configura com a No permission els permisos dels membres de l'organització.

    D'aquesta manera, l'alumnat no pot vore els repositoris privats de la resta de la classe.

    Permisos de l'organització

    Permisos de l'organització

    Figura 2. Permisos de l'organització.

  3. Convida l'alumnat a l'organització .

    L'alumnat ha d'acceptar la invitació, que rep per correu electrònic, per a poder accedir a l'organització.

    Alumnat com a membre de l'organització

    Alumnat com a membre de l'organització

    Figura 3. Alumnat com a membre de l'organització.

  4. Indica a cada alumne o alumna que cree un repositori privat.

    Cal decidir quants repositoris privats ha de crear l'alumnat al llarg del curs acadèmic.

    Personalment, demane que creen un únic repositori per a tot el curs, amb la nomenclatura {Cognom}{Nom}-{modul}. Per exemple, PuigcerverJoan-ED o PuigcerverJoan-PSP.

    No obstant això, també pot ser interessant crear diferents repositoris, un per a cada tasca o projecte. En aquest cas, cal tindre en compte que el nombre de repositoris de l'organització augmentarà considerablement.

    Repositoris de l'alumnat en l'organització

    Repositoris de l'alumnat en l'organització

    Figura 4. Repositoris de l'alumnat en l'organització.

  5. Com a docent, crea els repositoris públics amb les solucions o exemples que consideres necessaris.

    Personalment, m'agrada crear un repositori equivalent al de l'alumnat, on resolc els exercicis que fem a classe i on publique les solucions al llarg del curs.

    El repositori .github és un repositori especial que s'utilitza per a definir el profile/README.md que apareix en la pàgina principal de l'organització.

    Repositoris públics del professorat en l'organització

    Repositoris públics del professorat en l'organització

    Figura 5. Repositoris públics del professorat en l'organització.

Treball en grup

En aquest cas, cada grup d'alumnes treballa en un mateix projecte i fa les tasques sobre el mateix repositori. Els passos per a preparar l'organització són:

  1. Crea una organització a GitHub.

    Personalment, m'agrada crear una organització per a cada grup i mòdul professional amb la nomenclatura {centre}-{grup}-{modul}. Per exemple, fpmislata-daw1-projecte.

    Perfil de l'organització

    Pots afegir el repositori públic .github i configurar el fitxer profile/README.md per a definir el perfil de l'organització ( Adding a public organization profile README – GitHub Docs).

    Organització fpmislata-daw1-projecte a GitHub

    Organització del projecte a GitHub

    Figura 6. Organització fpmislata-daw1-projecte a GitHub.

  2. Configura com a No permission els permisos dels membres de l'organització.

    D'aquesta manera, l'alumnat no pot vore els repositoris privats de la resta de la classe.

    Permisos de l'organització

    Permisos de l'organització

    Figura 7. Permisos de l'organització.

  3. Convida l'alumnat a l'organització .

    L'alumnat ha d'acceptar la invitació, que rep per correu electrònic, per a poder accedir a l'organització.

    Alumnat com a membre de l'organització

    Alumnat com a membre de l'organització

    Figura 8. Alumnat com a membre de l'organització.

  4. Convida la resta del professorat a l'organització amb el rol Owner.

    El professorat ha d'acceptar la invitació, que rep per correu electrònic. Amb aquest rol, també té accés a tots els repositoris privats de l'alumnat.

    Professorat com a propietari de l'organització

    Professorat com a propietari de l'organització

    Figura 9. Professorat com a propietari de l'organització.

  5. Crea un equip per a cada grup d'alumnes i afig-hi els seus membres.

    L'equip , el repositori privat i el projecte els pot crear el professorat o un dels membres del grup.

    Equips de l'alumnat dins de l'organització

    Equips de l'alumnat dins de l'organització

    Figura 10. Equips de l'alumnat dins de l'organització.

  6. Crea un repositori privat per a cada grup i afig-hi com a col·laborador l' equip creat anteriorment.

    Repositoris dels projectes en l'organització

    Repositoris dels projectes en l'organització

    Figura 11. Repositoris dels projectes en l'organització.

    Assignació de l'equip com a col·laborador del repositori

    Figura 12. Assignació de l'equip com a col·laborador del repositori.

  7. Crea un projecte per a cada grup, on el grup pot organitzar les tasques com a incidències.

    Projectes per a gestionar les tasques

    Projectes per a gestionar les tasques

    Figura 13. Projectes per a gestionar les tasques.

    Projecte amb la planificació de tasques

    Figura 14. Projecte amb la planificació de tasques.

  8. Com a docent, crea els repositoris públics amb les solucions, exemples o plantilles que consideres necessaris.

    En aquest cas, s'han creat els repositoris públics següents:

    • .github: repositori especial per a configurar el perfil de l'organització.
    • projecte-daw1: documentació del projecte.
    • projecte-template: plantilla del projecte.
    Repositoris públics de l'organització

    Repositoris públics de l'organització

    Figura 15. Repositoris públics de l'organització.

A partir d'aquest punt, els equips poden treballar de manera autònoma i gestionar les seues tasques dins d'un únic projecte. Per a treballar de manera col·laborativa sobre el mateix repositori, és important que facen un bon ús d'una de les Estratègies de ramificació.

A més, l'ús de GitHub és independent de la metodologia de treball que s'aplique a l'aula, com ara metodologies àgils com Scrum o Kanban.

Exemple real: projecte intermodular de 1r de DAW amb Scrum

Amb l'alumnat de 1r curs de Desenvolupament d'Aplicacions Web (DAW), hem treballat en un projecte intermodular en què es desenvolupa una aplicació web de temàtica lliure. El projecte es fa en grups de 4 o 5 persones i es treballa amb la metodologia àgil Scrum.

Cada equip gestiona les tasques amb un projecte, enllaçat a un repositori privat. Se segueix l'estratègia de ramificació següent:

  • Branques principals: s'utilitzen les branques develop i main.
  • Branques de funcionalitat: s'utilitza una branca feature per a cada tasca.
  • Pull Requests: s'utilitzen per a incorporar les branques feature en la branca develop. En cada PR:

    • S'enllacen les incidències relacionades.
    • S'habiliten les revisions per part de la resta de l'equip.
    • Es configuren Actions per a executar les proves automàticament abans de tancar la Pull Request.
    • S'utilitza merge --squash per a fusionar les Pull Requests.

Pots trobar més informació en Projecte Intermodular DAW1 – CIPFP Mislata.

Lliurament de tasques

En qualsevol dels dos casos, l'alumnat és propietari dels seus repositoris i en pot modificar el contingut en qualsevol moment, fins i tot després del termini de lliurament de la tasca.

Per tant, és important establir un mecanisme de lliurament de tasques que permeta revisar el treball que l'alumnat ha lliurat, independentment que l'haja modificat després.

L'opció més senzilla és crear una etiqueta o un llançament (release) que identifique el commit on es troba la versió del treball que es vol lliurar.

Etiquetes amb els lliuraments

Etiquetes amb els lliuraments

Figura 16. Etiquetes amb els lliuraments.

Així, el professorat pot accedir al repositori privat de l'alumne o alumna i situar-se en aquesta versió per a revisar el treball lliurat.

Es recomana utilitzar una etiqueta anotada per a poder comprovar la data en què s'ha creat.

Un altre aspecte que cal tindre en compte és que, si es delega en l'alumnat la creació dels repositoris privats, l'alumnat els pot esborrar i perdre tot el treball, la qual cosa dificultaria la revisió del treball lliurat en una reclamació posterior.

Per aquest motiu, personalment m'agrada demanar que lliuren el codi de la tasca comprimit en la plataforma educativa oficial (Aules), amb l'enllaç al seu repositori.

Lliurament d'una tasca a Aules

Definició de la tasca a Aules

Figura 17. Definició de la tasca a Aules.

Lliurament d'una tasca a Aules

Figura 18. Lliurament d'una tasca a Aules.

En la pràctica, no revise el codi lliurat a Aules, sinó que el consulte directament en el repositori privat.

No obstant això, de vegades l'alumnat ha tingut algun problema amb Git i, gràcies a aquesta còpia de seguretat, l'he pogut avaluar.

Gestió de l'organització

Un dels principals reptes d'aquesta proposta és la gestió dels membres i dels repositoris de l'organització:

  • Gestió dels membres: GitHub no proporciona una manera senzilla de convidar i gestionar en massa els membres de l'organització.

  • Gestió dels repositoris de l'alumnat: el nombre de repositoris de l'alumnat pot ser molt elevat, i gestionar-los individualment pot ser complicat.

Per aquesta raó, he desenvolupat ghot (GitHub Organization Tools), una ferramenta de línia d'ordres que permet gestionar de manera senzilla i ràpida els membres i els repositoris d'una organització. Aquesta ferramenta permet fer les accions següents de manera massiva:

  • Membres: convidar i eliminar membres de l'organització.
  • Repositoris: crear, eliminar, clonar i actualitzar (pull) repositoris.
  • Incidències: crear incidències en els repositoris.

Documentació: GitHub Organization Tools – ghot

ghot és una ferramenta en estat experimental. Et recomane executar primer les ordres amb l'opció --dry per a comprovar que tot funciona correctament.

A més, si trobes algun error o tens alguna proposta de millora, pots indicar-ho en la secció Issues del repositori de ghot.

No cal utilitzar ghot per a aplicar aquesta proposta: totes les accions es poden fer manualment.

Exemple: Convidar l'alumnat a l'organització mitjançant ghot

El primer pas és crear un fitxer estudiants.csv a partir de les dades exportades de la plataforma educativa Aules.

Nom,Cognoms,username
ADA,LOVELACE,adalovelace,
"ALAN MATHISON",TURING,alanturing,

S'han eliminat les columnes amb el correu electrònic i el grup, i s'ha afegit la columna username, amb el nom d'usuari de cada alumne o alumna.

A continuació, es configura ghot per a definir les dades de cada alumne o alumna:

  • id: identificador amb el format {nom}.{cognom}, en minúscules i sense accents.
  • username: nom d'usuari de GitHub.
  • repo: nom del repositori, amb el format {Nom}{Cognom}-ED, sense accents, on ED és el mòdul professional.

En tots els casos, words(0) només agafa la primera paraula del nom i del cognom, i remove_accents() elimina els accents.

ghot config csv.pattern.id "{f0.words(0).lower().remove_accents()}.{f1.words(0).lower().remove_accents()}"
ghot config csv.pattern.username "{f2}"
ghot config csv.pattern.repo "{f0.words(0).title().remove_accents()}{f1.words(0).title().remove_accents()}-ED"

Aquestes ordres guarden la configuració en el fitxer .ghot del directori actual:

.ghot
[csv]
pattern.id = {f0.words(0).lower().remove_accents()}.{f1.words(0).lower().remove_accents()}
pattern.username = {f2}
pattern.repo = {f0.words(0).title().remove_accents()}{f1.words(0).title().remove_accents()}-ED

Finalment, ja es pot:

  1. Convidar l'alumnat a l'organització amb ghot user invite.
  2. Crear els repositoris privats amb ghot repo create.
  3. Convidar cada alumne o alumna al seu repositori amb ghot repo invite.
joapuiib@fp:~ $ ghot user invite --dry fpmislata-daw1-ed estudiants.csv
Total members: 1
Pending invitations: 0
ada.lovelace: Invitation sent to 'adalovelace' (dry).
alan.turing: Invitation sent to 'alanturing' (dry).

joapuiib@fp:~ $ ghot repo create --dry --private fpmislata-daw1-ed estudiants.csv
ada.lovelace: Repository 'fpmislata-daw1-ed/AdaLovelace-ED' created (private) (dry).
alan.turing: Repository 'fpmislata-daw1-ed/AlanTuring-ED' created (private) (dry).

joapuiib@fp:~ $ ghot repo invite --dry fpmislata-daw1-ed estudiants.csv
ada.lovelace: User 'adalovelace' is not a member of the organization.
alan.turing: User 'alanturing' is not a member of the organization.

S'observa que ghot repo invite no funciona en aquest cas: com que les ordres anteriors s'han executat amb --dry, l'alumnat encara no és membre de l'organització.

📌 Aquest document pot quedar desactualitzat després d’imprimir-lo. Pots consultar la versió més recent a la pàgina web.
🌿 Abans d’imprimir aquest document, considera si és realment necessari. Redueix el consum de paper i ajuda a protegir el nostre entorn.