« GULLUM/Ateliers » : différence entre les versions
< GULLUM
m (:() |
(Dichotomie session automne/hiver pour sujets fondamentaux/avancés) |
||
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 hebdomadaire de présentations et tutoriels destinés à favoriser l’adoption des logiciels libres. | ||
= Session d’automne = | = Session d’automne: Outils fondamentaux = | ||
== Semaine 0 | == Semaine 0: Introduction == | ||
== Semaine 1 | == Semaine 1: Base de la ligne de commande == | ||
[[Fichier:GULLUM-Seminaire-Semaine1-Terminal.jpg|thumb|200px|Un terminal VT100]] | [[Fichier:GULLUM-Seminaire-Semaine1-Terminal.jpg|thumb|200px|Un terminal VT100]] | ||
Ligne 36 : | Ligne 36 : | ||
* Écouter [https://www.youtube.com/watch?v=tc4ROCJYbm0 ''“The UNIX Operating System”'' (Bell Labs)] | * Écouter [https://www.youtube.com/watch?v=tc4ROCJYbm0 ''“The UNIX Operating System”'' (Bell Labs)] | ||
== Semaine 2 | == Semaine 2: Linux et ses distributions == | ||
[[Fichier:GULLUM-Seminaire-Semaine2-Distributions.png|thumb|200px|Arbre généalogique des principales distributions Linux]] | [[Fichier:GULLUM-Seminaire-Semaine2-Distributions.png|thumb|200px|Arbre généalogique des principales distributions Linux]] | ||
Ligne 58 : | Ligne 58 : | ||
*Présentations secondaires avancées de distributions en particulier | *Présentations secondaires avancées de distributions en particulier | ||
== Semaine 3 | == Semaine 3: Préparation de documents == | ||
[[Fichier:GULLUM-Seminaire-Semaine3-Documents.jpg|thumb|200px|Page préparée avec des caractères en plomb]] | [[Fichier:GULLUM-Seminaire-Semaine3-Documents.jpg|thumb|200px|Page préparée avec des caractères en plomb]] | ||
Ligne 83 : | Ligne 83 : | ||
**Génération de documents dans un format de sortie (ODF, PDF, ePUB) | **Génération de documents dans un format de sortie (ODF, PDF, ePUB) | ||
== Semaine 4 | == Semaine 4: Gestion de versions (Git) == | ||
[[Fichier:GULLUM-Seminaire-Semaine4-Versions.png|thumb|200px|Graphe de révisions d’un gestionnaire de versions]] | [[Fichier:GULLUM-Seminaire-Semaine4-Versions.png|thumb|200px|Graphe de révisions d’un gestionnaire de versions]] | ||
Ligne 109 : | Ligne 109 : | ||
*Atelier bisect: Identification de commits en log n | *Atelier bisect: Identification de commits en log n | ||
== Semaine 5 | == Semaine 5: Ligne de commande avancée == | ||
=== Objectifs pédagogiques === | === Objectifs pédagogiques === | ||
Ligne 128 : | Ligne 128 : | ||
*Présentation principale | *Présentation principale | ||
== Semaine 6 | == Semaine 6: Éditeurs de texte == | ||
=== Objectifs pédagogiques === | === Objectifs pédagogiques === | ||
Ligne 152 : | Ligne 152 : | ||
*Atelier Vim | *Atelier Vim | ||
== Semaine 7 | == Semaine 7: Licences de logiciel et droits d’auteur == | ||
[[Fichier:GULLUM-Seminaire-Semaine7-Licences.png|thumb|200px|Comparaison des licences Creative Commons]] | [[Fichier:GULLUM-Seminaire-Semaine7-Licences.png|thumb|200px|Comparaison des licences Creative Commons]] | ||
Ligne 172 : | Ligne 172 : | ||
*Présentation principale | *Présentation principale | ||
== Semaine 8 | == Semaine 8: Réseau et sécurité == | ||
=== Objectifs pédagogiques === | === Objectifs pédagogiques === | ||
Ligne 191 : | Ligne 191 : | ||
*Présentation principale | *Présentation principale | ||
= Session d’hiver = | = Session d’hiver: Sujets avancés = | ||
== Semaine 9 | == Semaine 9: Web == | ||
=== Objectifs pédagogiques === | === Objectifs pédagogiques === | ||
Ligne 215 : | Ligne 215 : | ||
**Contribution avec JOSM | **Contribution avec JOSM | ||
== Semaine 10 | == Semaine 10: VMs et Conteneurs (Docker) == | ||
== Semaine 11 | == Semaine 11: Création médiatique == | ||
*Présentation principale | *Présentation principale | ||
**Blender, OpenSCAD, Inkscape, Krita, GIMP, Godot, Kdenlive, VLC, Audacity | **Blender, OpenSCAD, Inkscape, Krita, GIMP, Godot, Kdenlive, VLC, Audacity | ||
== Semaine 12 | == Semaine 12: Productivité == | ||
*Présentation principale | *Présentation principale | ||
**Thunderbird => calendrier + rss + setupper courriel + config + installation du adblock | **Thunderbird => calendrier + rss + setupper courriel + config + installation du adblock | ||
== Semaine 13 | == Semaine 13: Open Hardware == | ||
*Présentation principale | *Présentation principale | ||
**Raspberry pi, arduino, system76, frame.work, pine64, tuxedo computers, RISC V, keybs | **Raspberry pi, arduino, system76, frame.work, pine64, tuxedo computers, RISC V, keybs | ||
== Semaine 14 | == Semaine 14: Claviers == | ||
*Dispositions de claviers | |||
*Firmware de claviers | |||
== Semaine 16 | == Semaine 15: Contributions aux projets open source == | ||
== Semaine 16: Recherche académique == | |||
*OpenAlex, CORE | *OpenAlex, CORE |
Version du 20 juin 2023 à 12:15
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: Outils fondamentaux
Semaine 0: Introduction
Semaine 1: Base de la ligne de commande
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
- Système de fichiers
- Écouter “The UNIX Operating System” (Bell Labs)
Semaine 2: Linux et ses distributions
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
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)
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:
init
- Création de commits:
status
,add
,restore
,commit
- Inspection de l’historique:
show
,diff
,log
,blame
- Interaction avec un serveur:
clone
,pull
,push
,remote
- Branchement et fusion:
branch
,switch
,merge
- Création d’un dépôt:
- 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 (
ln
, soft links, inodes, hard links) - Utiliser le système de permissions de base de Linux (permission bits,
chmod
,chown
) - Rechercher et éditer du texte (
find
,grep
,sed
,awk
) - Savoir ce qu'est un processus (code, mémoire, fichiers ouverts, environnement,
/proc
) - Gérer les processus (
ps
,pgrep
,kill
,top
/htop
,jobs
,fg
/bg
/disown
) - Comprendre la différence entre un programme interprété (hashbang) et un programme binaire (ELF)
- Comprendre comment le shell exécute des programmes (
$PATH
, built-ins) - Se familiariser avec le linking et les librairies partagées (
ldd
) - Multiplexer sa session de terminal (
tmux
,screen
) - Automatiser des tâches avec
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
- État des lieux et généalogie des éditeurs de texte
- Atelier Emacs
- Atelier Vim
Semaine 7: Licences de logiciel et droits d’auteur
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: 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
- Tor
Activités
- Présentation principale
Session d’hiver: Sujets avancés
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: Claviers
- Dispositions de claviers
- Firmware de claviers
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