Salta el contingut
 

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

Joan Puigcerver Ibáñez

j.puigcerveribanez@edu.gva.es

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 tal d'aprofitar les eines de GitHub i 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'allotjaran els repositoris dels estudiants de manera centralitzada i on el docent tindrà accés a tots els projectes.

Els estudiants treballaran en els seus propis repositoris privats i el docent pot crear repositoris públics amb solucions o exemples.

D'aquesta manera:

  • El professorat tindrà accés a tots els repositoris dels estudiants.
  • L'alumnat tindrà accés a tots els repositoris públics creats pel professorat, però sols tindrà accés als seus propis repositoris privats.

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

Aquesta proposta 🆚 GitHub Classroom

GitHub Classroom és una plataforma educativa que permet realitzar el seguiment del treball de l'alumnat i la revisió dels projectes dins d'una organització de GitHub.

Incorpora funcionalitats molt útils per a la gestió de l'alumnat dins de l'organització, com ara plantilles per als repositoris les tasques o automatització de les correccions mitjançant GitHub Actions.

No obstant això, personalment, preferisc utilitzar les organitzacions per gestionar el treball de l'alumnat d'una manera més "manual" per diferents motius:

  • Aquesta proposta no substitueix a la plataforma educativa oficial: Aules, sinó que la complementa i facilita la revisió per part del professorat i normalitza l'ús de Git entre l'alumnat.

  • GitHub Classroom es basa en la creació d'un repositori per cada tasca o projecte. Personalment preferisc treballar amb únic repositori per estudiant o equip, que anirà actualitzant-se al llarg del curs acadèmic.

  • L'automatització de les correccions mitjançant GitHub Actions és una funcionalitat molt interessant, però sols serveix per a tasques molt concretes que permeten ser automatitzades.

    Tasques més complexes o creatives són pràcticament impossibles d'automatitzar.

Vos anime a explorar i provar GitHub Classroom i així també podreu comparar les dues opcions i valorar la metodologia de treball que més s'adapte a les vostres necessitats.

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 és Git, d'ús generalitzat en el món professional.

Tenint en compte aquest objectiu, aquesta proposta també pretén:

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

  • Familiaritzar i normalitzar l'ús de Git a l'aula, per part de l'alumnat i el professorat.

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

  • Aprofitar les eines de GitHub per facilitar la gestió de projectes grupals, el seguiment de tasques i la revisió del treball.

  • Facilitar i incentivar la col·laboració entre els estudiants.

Propostes

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

Treball individual

Aquest cas pot ser el més habitual, on cada estudiant treballa en el seu projecte i va realitzant les seues tasques de manera individual.

  1. Crear una organització a GitHub.

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

    • fpmislata-daw1-ed
    • fpmislata-dams2-psp
    Perfil de l'organització

    Pots afegir el repositori públic .github i configurar el fitxer profile/README.md per 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. Configurar els permisos dels membres de l'organització com a No permission.

    D'aquesta manera, els estudiants no podran veure els repositoris privats d'altres companys de classe.

    Permisos de l'organització

    Permisos de la organització

    Figura 2. Permisos de la organització

  3. Convidar els estudiants a la organització.

    Els estudiants han d'acceptar la invitació, que rebran per correu electrònic, per tal de poder accedir a la organització.

    Estudiants com a membres de l'organització

    Estudiants com a membres de l'organització

    Figura 3. Estudiants com a membres de l'organització

  4. Indicar a cada estudiant que s'ha de crear un repositori privat.

    Hem de decidir quants repositoris privats han de crear els estudiants al llarg del curs acadèmic.

    Personalment, jo els demane que creen un únic repositori que utilitzaran durant tot el curs, amb la nomenclatura {Cognom}{Nom}-{modul}.

    • PuigcerverJoan-ED
    • PuigcerverJoan-PSP

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

    Repositoris dels estudiants de l'organització

    Repositoris dels estudiants de l'organització

    Figura 4. Repositoris dels estudiants de l'organització

  5. Com a docent, crear els repositoris públics amb solucions o exemples que es consideren necessaris.

    Personalment, m'agrada crear un repositori equivalent al que tenen els estudiants, sobre el qual vaig resolent els exercicis que fem a classe i on vaig publicant les solucions al llarg del curs.

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

    Repositoris públics del professorat de l'organització

    Repositoris públics del professorat de l'organització

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

Treball en grup

En aquest cas, cada grup d'estudiants treballa en un mateix projecte i realitza les tasques sobre el mateix repositori.

  1. Crear una organització a GitHub.

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

    • fpmislata-daw1-projecte
    Perfil de l'organització

    Pots afegir el repositori públic .github i configurar el fitxer profile/README.md per 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. Configurar els permisos dels membres de l'organització com a No permission.

    D'aquesta manera, els estudiants no podran veure els repositoris privats d'altres companys de classe.

    Permisos de l'organització

    Permisos de la organització

    Figura 7. Permisos de la organització

  3. Convidar els estudiants a la organització.

    Els estudiants han d'acceptar la invitació, que rebran per correu electrònic, per tal de poder accedir a la organització.

    Estudiants com a membres de l'organització

    Estudiants com a membres de l'organització

    Figura 8. Estudiants com a membres de l'organització

  4. Convidar a la resta de docents a la organització com a Owner.

    Els docents han d'acceptar la invitació, que rebran per correu electrònic.

    En aquest cas, també tindran accés a tots els repositoris privats dels estudiants.

    Docents com a propietaris de l'organització

    Docents com a propietaris de l'organització

    Figura 9. Docents com a propietaris de l'organització

  5. Crear un equip per a cada grup d'estudiants i afegir els estudiants a l'equip.

    Info

    La creació de l'equip, el repositori privat i el projecte pot ser realitzada per part del professorat o per part d'un dels estudiants del grup.

    Equips dels estudiants dins de l'organització

    Equips dels estudiants dins de l'organització

    Figura 10. Equips dels estudiants dins de l'organització

  6. Crear un repositori privat per a cada grup d'estudiants i afegir l'equip creat anteriorment com a col·laborador.

    Repositoris dels projectes a l'organització

    Repositoris dels projectes a l'organització

    Figura 11. Repositoris dels projectes a l'organització

    Assignació a l'equip com col·laboradors del repositori

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

  7. Crear un projecte per cada grup, on poden organitzar les tasques com a incidències.

    Projectes per gestionar les tasques

    Projectes per gestionar les tasques

    Figura 13. Projectes per gestionar les tasques

    Projecte amb la planificació de tasques

    Figura 14. Projecte amb la planificació de tasques

  8. Com a docent, crear els repositoris públics amb solucions, exemples o plantilles que es consideren necessaris.

    En aquest cas, hem creat els següents repositoris públics:

    • .github – Repositori especial per a la configuració del 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 de treball poden treballar de manera autònoma i gestionar les seues tasques dins d'un únic projecte. Per poder 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 per exemple, metodologies àgils com Scrum o Kanban.

Exemple real aplicat en un projecte intermodular a 1r de DAW amb Scrum

Amb els estudiants de 1r curs de Desenvolupament d'Aplicacions Web (DAW), hem estat treballant en un projecte intermodular on es desenvolupa una aplicació web de temàtica lliure. El projecte es porta a terme en grups de 4-5 estudiants i es treballa amb la metodologia àgil Scrum.

Cada equip gestiona les tasques amb un projecte, enllaçat a un repositori privat.

Es segueix la següent estratègia de ramificació:

  • Utilització de les branques develop i main.
  • Utilització de les branques feature per a cada tasca.
  • Pull Requests per a incorporar les branques feature a la branca develop.

    • Enllaçar les incidències relacionades.
    • Habilitar les revisions per part dels companys.
    • Configurar Actions per executar les proves automàticament abans de tancar la Pull Request.
    • merge --squash per fusionar les Pull Requests.

Podeu trobar més informació a Projecte Intermodular DAW1 – CIPFP Mislata.

Lliurament de tasques

En qualsevol dels casos, els estudiants són els propietaris dels seus repositoris i poden fer canvis sobre el seu 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, per poder revisar el treball que els estudiants han lliurat, independentment si després l'han modificat.

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

Etiquetes amb els lliuraments

Etiquetes amb els lliuraments

Figura 16. Etiquetes amb els lliuraments

El professorat, podrà accedir al repositori privat de l'estudiant i situar-se en aquesta versió per tal de revisar el treball lliurat.

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

Un altre aspecte a tindre en compte és que, si es delega la creació dels repositoris privats als estudiants, tenen la possibilitat d'esborrar-lo i podrien perdre tot el treball realitzat, dificultant la revisió del treball lliurat en una reclamació posterior.

Per aquest motiu, personalment m'agrada demanar-los que lliuren el codi de la tasca de manera comprimida a la plataforma educativa oficial (Aules), indicant 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'un estudiant a Aules

Figura 18. Lliurament d'un estudiant a Aules

En la pràctica, no revise el codi lliurat a la tasca d'Aules i el consulte directament en el repositori privat.

No obstant això, és cert que de vegades els estudiants han tingut algun problema amb Git i gràcies a aquest backup els he pogut avaluar.

Gestió de l'organització

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

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

  • 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ó, s'ha desenvolupat ghot (GitHub Organization Tools), una eina de línia de comandes que permet gestionar els membres i repositoris d'una organització de manera senzilla i ràpida.

Aquesta eina permet realitzar les següents accions de manera massiva:

  • Convidar i eliminar membres de l'organització.
  • Crear, eliminar, clonar i actualitzar (pull) repositoris.
  • Crear incidències als repositoris.

Documentació

Podeu trobar la informació sobre la instal·lació i ús de ghot a la documentació: GitHub Organization Tools

Advertència

ghot és una eina en estat experimental. Vos recomane que executeu les ordres amb l'opció --dry primer per verificar que tot funciona correctament.

A més, si trobeu algun error o teniu alguna proposta de millora, podeu indicar-ho a la secció d' Issues del repositori de ghot.

Important

No és necessari fer ús de ghot per aplicar aquesta proposta. Totes les accions poden ser realitzades manualment.

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

El primer pas és crear un fitxer estudiants.csv, el qual ha segut exportat de la plataforma educativa Aules.

Nom,Cognoms,username
ADA,LOVELACE,adalovelace,
"ALAN MATHISON",TURING,alanturing,
  • He eliminat les columnes amb el correu electrònic i el grup.
  • He afegit la columna username, on es recull el nom d'usuari de cada estudiant.

A continuació, he configurat l'eina ghot per tal de poder de definir les dades de cada estudiant:

  • Un identificador id amb el format {cognom}.{nom}, en minúscules.
  • Un username amb el nom d'usuari de cada estudiant.
  • Un repo amb el format {Cognom}{Nom}-ED, on ED és el mòdul professional.
ghot config csv.pattern.id "{f0.replace(' ', '.').lower()}.{f1.replace(' ', ',').lower()}"
ghot config csv.pattern.username "{f2}"
ghot config csv.pattern.repo "{f0.title().replace(' ', '')}{f1.title().replace(' ', '')}-ED"

Per últim, ja podem:

  • Convidar els estudiants a l'organització amb ghot user invite.
  • Crear els repositoris privats amb ghot repo create.
  • Convidar els estudiants als repositoris corresponents amb ghot repo invite.

Recomanació

És recomanable executar les ordres amb l'opció --dry per tal de comprovar prèviament que tot funciona correctament.

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.mathison.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.mathison.turing: Repository 'fpmislata-daw1-ed/AlanMathisonTuring-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.mathison.turing: User 'alanturing' is not a member of the organization.

ghot repo invite no funciona correctament en aquest cas perquè les comandes prèvies no s'han executat realment i els estudiants no són membres 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.