|
|
Ligne 1 : |
Ligne 1 : |
| Le séminaire du [[GULLUM]] est une série hebdomadaire de présentations et tutoriels destinés à favoriser l’adoption des logiciels libres. | | Le séminaire du [[GULLUM]] est une série de présentations et tutoriels destinés à favoriser l’adoption des logiciels libres. |
|
| |
|
| = Session d’automne: Outils fondamentaux = | | = Session d’automne: Outils fondamentaux = |
|
| |
|
| == Semaine 0: Introduction ==
| | * 25 septembre – 1ᵉʳ octobre — [[GULLUM/Séminaire/Bases de la ligne de commande|Bases de la ligne de commande]] |
| | | * 2 octobre – 8 octobre – [[GULLUM/Séminaire/Linux et ses distributions|Linux et ses distributions]] |
| == Semaine 1: Bases de la ligne de commande ==
| | * (à venir) – [[GULLUM/Séminaire/Préparation de documents|Préparation de documents]] |
| | | * (à venir) – [[GULLUM/Séminaire/Gestion de versions|Gestion de versions]] |
| [[Fichier:GULLUM-Seminaire-Semaine1-Terminal.jpg|thumb|200px|Un terminal VT100]] | | * (à venir) – [[GULLUM/Séminaire/Ligne de commande avancée|Ligne de commande avancée]] |
| | | * (à venir) – [[GULLUM/Séminaire/Éditeurs de texte|Éditeurs de texte]] |
| === Objectifs pédagogiques ===
| | * (à venir) – [[GULLUM/Séminaire/Licences de logiciel et droit d’auteur|Licences de logiciel et droit d’auteur]] |
| | | * (à venir) – [[GULLUM/Séminaire/Web|Web]] |
| *Se connecter à et utiliser les systèmes Linux du DIRO
| |
| *Connaître la syntaxe générale d’une commande (nom, flags, arguments)
| |
| *Savoir obtenir de l’aide (<code>--help</code>, <code>man</code>, <code>whatis</code>, <code>apropos</code>)
| |
| *Se déplacer dans le système de fichiers avec la ligne de commande (<code>cd</code>, <code>pwd</code>, <code>ls</code>)
| |
| *Copier, déplacer, supprimer des fichiers (<code>cp</code>, <code>mv</code>, <code>rm</code>, <code>rmdir</code>, <code>mkdir</code>)
| |
| *Lire et modifier des fichiers (<code>cat</code>, <code>tail</code>, <code>head</code>, <code>less</code>, <code>touch</code>, <code>></code>, <code>>></code>)
| |
| *Faire des manipulations simples de données avec les ''pipes'' (<code>cowsay</code>, <code>lolcat</code>, <code>fortune</code>, <code>tr</code>, <code>sort</code>, <code>uniq</code>, <code>wc</code>)
| |
| *Voir et communiquer avec les autres utilisateurs du système (<code>last</code>, <code>who</code>, <code>write</code>, <code>wall</code>, <code>mesg</code>)
| |
| *Manipuler le terminal avec les séquences de contrôle (<code>Ctrl-C</code>, <code>Ctrl-D</code>, <code>Ctrl-Z</code>, <code>Ctrl-\</code>)
| |
| *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 [https://www.youtube.com/watch?v=tc4ROCJYbm0 ''“The UNIX Operating System”'' (Bell Labs)]
| |
| | |
| == Semaine 2: Linux et ses distributions ==
| |
| | |
| [[Fichier:GULLUM-Seminaire-Semaine2-Distributions.png|thumb|200px|Arbre généalogique des principales distributions Linux]]
| |
| | |
| === Objectifs pédagogiques ===
| |
| | |
| *Se connecter à et utiliser les systèmes Linux du DIRO
| |
| *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 ==
| |
| | |
| [[Fichier:GULLUM-Seminaire-Semaine3-Documents.jpg|thumb|200px|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, Asymptote)
| |
| **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) ==
| |
| | |
| [[Fichier:GULLUM-Seminaire-Semaine4-Versions.png|thumb|200px|Graphe de révisions d’un gestionnaire de versions]]
| |
| | |
| === 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
| |
| *Savoir utiliser les commandes principales du programme Git
| |
| **Création d’un dépôt: <code>init</code>
| |
| **Création de ''commits'': <code>status</code>, <code>add</code>, <code>restore</code>, <code>commit</code>
| |
| **Inspection de l’historique: <code>show</code>, <code>diff</code>, <code>log</code>, <code>blame</code>
| |
| **Interaction avec un serveur: <code>clone</code>, <code>pull</code>, <code>push</code>, <code>remote</code>
| |
| **Branchement et fusion: <code>branch</code>, <code>switch</code>, <code>merge</code>
| |
| *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
| |
| *Écrire de bons messages de commit
| |
| | |
| === Activités ===
| |
| | |
| *Présentation principale
| |
| *Atelier bisect: Identification de commits en log n
| |
| | |
| == Semaine 5: Ligne de commande avancée ==
| |
| | |
| === Objectifs pédagogiques ===
| |
| | |
| *Comprendre le fonctionnement des liens dans le système de fichiers (<code>ln</code>, soft links, inodes, hard links) | |
| *Utiliser le système de permissions de base de Linux (permission bits, <code>chmod</code>, <code>chown</code>)
| |
| *Rechercher et éditer du texte (<code>find</code>, <code>grep</code>, <code>sed</code>, <code>awk</code>)
| |
| *Savoir ce qu'est un processus (code, mémoire, fichiers ouverts, environnement, <code>/proc</code>)
| |
| *Gérer les processus (<code>ps</code>, <code>pgrep</code>, <code>kill</code>, <code>top</code>/<code>htop</code>, <code>jobs</code>, <code>fg</code>/<code>bg</code>/<code>disown</code>)
| |
| *Inspecter les appels systèmes (<code>strace</code>)
| |
| *Comprendre la différence entre un programme interprété (hashbang) et un programme binaire (ELF)
| |
| *Comprendre comment le shell exécute des programmes (<code>$PATH</code>, built-ins)
| |
| *Se familiariser avec le linking et les librairies partagées (<code>ldd</code>)
| |
| *Multiplexer sa session de terminal (<code>tmux</code>, <code>screen</code>)
| |
| *Automatiser des tâches avec <code>make</code>
| |
| | |
| === 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
| |
| ***Éditeurs modaux: Vim, Kakoune, Helix
| |
| *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
| |
| ***Jupyter Notebook/JupyterLab/Jupyter QtConsole
| |
| *Atelier Emacs
| |
| *Atelier Vim
| |
| | |
| == Semaine 7: Licences de logiciel et droits d’auteur ==
| |
| | |
| [[Fichier:GULLUM-Seminaire-Semaine7-Licences.png|thumb|200px|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 brevets logiciels, droit d'auteur et marques de commerce
| |
| *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: 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
| |
|
| |
|
| = Session d’hiver: Sujets avancés = | | = Session d’hiver: Sujets avancés = |