GULLUM/Ateliers

De Wiki de l'AÉDIROUM

Le séminaire du GULLUM est une série hebdomadaire de présentations et tutoriels destinés à favoriser l’adoption des logiciels libres.

Session d’automne

Semaine 0 — Introduction

Semaine 1 — Base de la ligne de commande

Un terminal VT100

Objectifs pédagogiques

  • Connaître la syntaxe générale d’une commande (nom, flags, arguments)
  • Savoir obtenir de l’aide (--help, man, whatis, apropos)
  • Se déplacer dans le système de fichiers avec la ligne de commande (cd, pwd, ls)
  • Copier, déplacer, supprimer des fichiers (cp, mv, rm, rmdir)
  • Lire et modifier des fichiers (cat, tail, head, less, touch, >, >>)
  • Faire des manipulations simples de données avec les pipes (cowsay, lolcat, fortune, tr, sort, uniq, wc)
  • Voir et communiquer avec les autres utilisateurs du système (last, who, write, wall, mesg)
  • Manipuler le terminal avec les séquences de contrôle (Ctrl-C, Ctrl-D, Ctrl-Z, Ctrl-\)
  • Se familiariser avec les philosophies Unix (Do One Thing and Do It Well, Everything is a File)

Activités

  • Une présentation
  • Défis dans un conteneur Linux préparé à l’avance pour démontrer le potentiel de la ligne de commande
    • Système de fichiers
      • Trouver et afficher un fichier situé quelque part dans le système de fichiers
      • Identifier les fichiers doublon (qui ont le même contenu) dans un répertoire
      • Renommer tous les fichiers d’un répertoire selon un motif spécifique
    • Pipes
      • Lister les utilisateurs les plus souvent connectés sur la machine
      • Compter le nombre de mots uniques dans un texte
    • Everything is a File
      • Lister les fichiers ouverts dans un processus
  • Écouter “The UNIX Operating System” (Bell Labs)

Semaine 2 — Linux et ses distributions

Arbre généalogique des principales distributions Linux

Objectifs pédagogiques

  • Comprendre le rôle des éléments principaux d’un système Linux (chargeur d’amorçage, noyau Linux, processus d’initialisation, programmes GNU, environnement de bureau, distribution)
  • Connaître les caractéristiques principales des distributions (minimaliste vs batteries included, rolling release vs point release, stable vs le plus à jour)
  • Installer une distribution Linux sur une machine
  • Rechercher et installer des nouveaux logiciels avec le gestionnaire de paquets ou avec Snap/Flatpak
    • Différence entre les utilisateurs réguliers et les super utilisateurs - sudo
  • Effectuer la maintenance routinière d’une installation (mettre à jour les paquets, diagnostiquer les erreurs communes, sauvegarder ses données)
  • Se familiariser avec l’histoire de Linux et de ses distributions (arbre généalogique)

Activités

  • Présentation principale
  • Premier installfest!
  • Atelier de ricing
  • Présentations secondaires avancées de distributions en particulier

Semaine 3 — Préparation de documents

Page préparée avec des caractères en plomb

Objectifs pédagogiques

  • Savoir distinguer formats de travail et formats de sortie
  • Comprendre l’intérêt des langages de balisage (représentation de la structure des documents)
  • Comprendre les enjeux liés à l’accessibilité, la portabilité et l’archivage des documents
  • Connaître la différence entre WYSIWYG et non-WYSIWYG
  • Être capable de composer un document de base avec Markdown
  • Être capable de composer un document de base avec LaTeX
  • Développer une familiarité avec l’éditeur collaboratif Overleaf

Activités

  • Présentation principale
  • Présentations secondaires
    • Présentation sur la production graphique (SVG, TikZ)
    • Présentation sur les présentations (meta) (Beamer, LibreOffice)
  • Atelier LaTeX sur Overleaf
  • Atelier avec Pandoc
    • Conversion de documents entre langages de balisage (Markdown, HTML, LaTeX)
    • Génération de documents dans un format de sortie (ODF, PDF, ePUB)

Semaine 4 — Gestion de versions (Git)

Objectifs pédagogiques

  • Survol de l'histoire de GIT avec mention d'autres gestionnaires de versions
  • Apprendre l'intérêt d'utiliser un gestionnaire de versions
    • Garder un historique des versions de ton code
    • Faciliter la collaboration et le partage de fichiers textes
  • Connaitre quelques commandes de base du programme GIT
    • base - init, status, diff, add, commit
    • historique - show, log
    • intéraction avec le serveur - clone, pull, push
    • branchement - branch, switch, merge
  • Comprendre la théorie derrière GIT
  • Survoler les hébergeurs de répertoires GIT - GitHub, GitLab
  • Survoler les clients graphiques pour GIT - GitK, Git gui, gitg
  • Savoir bien écrire un message de commit

Activités

  • Présentation principale
  • Atelier bisect

Semaine 5 — Suite ligne de commande

Objectifs pédagogiques

  • Système de fichier avancé - ln, permission bits, chmod, chown
  • Comment les programmes sont executés - ELF, hashbang et interpretes, compilateurs+linking, $PATH
  • Variables d'environnement
  • Gestion des processus - kill, ps, top/htop, jobs, fg/bg
  • Commandes de recherches et d'édition - find, grep, sed, awk
  • Multiplexage - tmux, screen
  • Outils de construction - make

Activités

  • Présentation principale

Semaine 6 — Éditeurs de texte

Objectifs pédagogiques

  • Connaître les philosophies de différents éditeurs
    • Simple vs batteries-included (extensibilité, IDE)
    • Interaction au clavier et/ou à la souris
    • Graphique ou terminal
    • Modal ou non-modal
  • Choisir un éditeur de façon informée
  • Se familiariser avec l'histoire des éditeurs libres (arbre généalogique)

Activités

  • Présentation principale
    • État des lieux et généalogie des éditeurs de texte
      • Emacs
      • Ed/Vi/Vim/NeoVim
      • Nano/Micro
      • VSCodium/VSCode
      • Acme
  • Atelier Emacs
  • Atelier Vim

Semaine 7 — Licences de logiciel et droits d’auteur

Comparaison des licences Creative Commons

Objectifs pédagogiques

  • Comprendre c'est quoi le droit d'auteur
    • Comprendre que le droit d'auteur existe par défaut pour tout son code
    • Différence entre les brevets logiciels et le droit d'auteur
  • Apprendre les différences entre les licences les plus communes
    • Licences restrictive/permissives GPL, LiLiQ, MIT, Apache, MPL, OQL, WTFPL
  • Apprendre l'histoire du mouvement du logiciel libre - GNU, FSF
  • Creative commons - CC0
  • Domaine public
  • Copyleft

Activités

  • Présentation principale

Semaine 8 — Réseau et sécurité

Objectifs pédagogiques

  • Comprendre comment utiliser SSH
    • Gestion de clés SSH, mots de passe (gestionnaires de mot de passe ex: keypass)
    • Transfer et synchronisation des fichiers - scp, rsync, syncthing
  • Cryptographie de base - chiffrement symétrique, asymétrique, signatures, hachage, gpg
  • Introduction au protocoles à la base - http, ftp, sftp, telnet, curl
    • intro dhcp/dns - dig
  • Surveiller l'activité réseau - wireshark, netcat
  • Connection local sans-fil - bluetooth, wifi direct
  • Connexion au Wi-Fi de l'université sous Linux

Activités

  • Présentation principale

Session d’hiver

Semaine 9 — Web

Objectifs pédagogiques

  • Connaître les éléments de base du web (HTTP, HTML/CSS, JS)
  • Se familiariser avec le navigateur (dev tools, extensions)
  • Publier un site web minimaliste
  • Comprendre les enjeux liés à l’accessibilité du web
  • Suivre l'activité d'une page web avec RSS
  • Récupérer et manipuler des données du web (API, scraping, web sémantique)
  • Comprendre les modèles économiques dominants associés aux contenus du web
  • Connaître les principales techniques de pistage sur le web et savoir s'en protéger

Activités

  • Présentation principale
  • Atelier Wikipedia & Wikidata
  • Atelier OpenStreetMap
    • Découverte de la carte et du modèle de données
    • Extraction de données avec Overpass
    • Contribution avec JOSM

Semaine 10 — VMs et Conteneurs (Docker)

Semaine 11 — Création médiatique

  • Présentation principale
    • Blender, OpenSCAD, Inkscape, Krita, GIMP, Godot, Kdenlive, VLC, Audacity

Semaine 12 — Productivité

  • Présentation principale
    • Thunderbird => calendrier + rss + setupper courriel + config + installation du adblock

Semaine 13 — Open Hardware

  • Présentation principale
    • Raspberry pi, arduino, system76, frame.work, pine64, tuxedo computers, RISC V, keybs

Semaine 14 — Keyboard layouts

Semaine 15 — Contributions aux projets open source

Semaine 16 — Recherche académique

  • OpenAlex, CORE
  • HAL, arXiv, bioRxiv
  • JabRef, Zotero
  • Articles en accès libre/ouvert