Bibliography workflow

This commit is contained in:
Clément Grennerat 2026-02-11 18:42:54 +01:00
commit 47982ce73a
12 changed files with 623 additions and 0 deletions

10
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,10 @@
# Default ignored files
/shelf/
/workspace.xml
# Ignored default folder with query files
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

View File

@ -0,0 +1,17 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<list />
</option>
</inspection_tool>
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="src.*" />
</list>
</option>
</inspection_tool>
</profile>
</component>

6
.idea/misc.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/PPH.iml" filepath="$PROJECT_DIR$/PPH.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

8
PPH.iml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="GENERAL_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

41
justfile Normal file
View File

@ -0,0 +1,41 @@
watch:
typst watch main.typ
watch-bib:
#!/usr/bin/env zsh
BIB_URL="http://127.0.0.1:23119/better-bibtex/export?/library;id:1/collection;key:B7TICUAL/PPH.biblatex"
# Initial download and compile
curl -o references.bib "$BIB_URL"
typst compile main.typ
# Background process to watch URL for changes
(
while true; do
TEMP_FILE=$(mktemp)
curl -s -o "$TEMP_FILE" "$BIB_URL"
if ! cmp -s "$TEMP_FILE" references.bib; then
echo "Bibliography updated from URL"
mv "$TEMP_FILE" references.bib
typst compile main.typ
else
rm "$TEMP_FILE"
fi
sleep 10
done
) &
URL_WATCHER_PID=$!
# Trap to kill background process on exit
trap "kill $URL_WATCHER_PID 2>/dev/null; exit" INT TERM EXIT
# Watch local files for changes
fswatch -o main.typ tplib-clement.typ references.bib | while read num; do
typst compile main.typ
done
update-bib:
curl -o references.bib "http://127.0.0.1:23119/better-bibtex/export?/library;id:1/collection;key:B7TICUAL/PPH.bibtex"
typst compile main.typ

BIN
main.pdf Normal file

Binary file not shown.

96
main.typ Normal file
View File

@ -0,0 +1,96 @@
#import "tplib-clement.typ": *
#import table: cell
#show: tplib-clement.with(
title: [Comment les big tech dominent ?\ État des lieux et perspectives.],
authors: (
("Clément", "Grennerat"),
),
left_footer: [PPH 4IF],
date: [Février 2026],
show_toc: true,
break_toc: true,
break_h1: true,
tight_h1: false,
lang: "fr",
)
#show link: this => {
underline(text(this, fill: blue.darken(50%)))
}
#let comment = setup_comments.with(visible: true)
#comment[
= Refs
- The four Le règne des quatre—Scott Galloway. (s. d.). Babelio. Consulté 5 janvier 2026, à ladresse https://www.babelio.com/livres/Galloway-The-four-Le-regne-des-quatre/1185863
- (1) De la liberté du logiciel et de son ouverture: Tour dhorizon et perspectives. (s. d.). Consulté 27 janvier 2026, à ladresse https://www.academia.edu/1246995/De_la_libert%C3%A9_du_logiciel_et_de_son_ouverture_tour_d_horizon_et_perspectives?email_work_card=view-paper
- Les employés des GAFAM, plus gros contributeurs du logiciel libre. (s. d.). Polytechnique Insights. Consulté 4 janvier 2026, à ladresse https://www.polytechnique-insights.com/dossiers/digital/des-machines-et-des-hommes-les-defis-du-numerique/comment-les-geants-du-numerique-sapproprient-le-logiciel-libre/
- An Office without GAFAM? (s. d.). Consulté 4 janvier 2026, à ladresse https://publication2023.bits-und-baeume.org/values-for-transformation/an-office-without-gafam/
- Redacción. (2024, septembre 4). How do we protect ourselves from dependence on the tech giants? Thediplomatinspain.Com. https://thediplomatinspain.com/en/2024/09/04/como-nos-defendemos-de-la-dependencia-de-los-gigantes-tecnologicos/
]
#comment[
= II. Sujet ciblé sur le contrôle des big tech
#align(center)[
_LHomme esclave des big tech, état des lieux et perspectives._
_Comment lHomme moderne est-t-il devenu esclave des big tech? État des lieux et perspectives._
]
- Nécessité dutiliser les software des big tech pour sintégrer en société
- La messagerie instantanée aujourdhui
- Lemail aujourdhui et le monopôle des fournisseurs
- Le marché des systèmes dexploitation et suites bureautique
- opacité
- Alternatives
- logiciels open-source.
- associations dhébergement et self-hosting.
- Exemple : éducation nationale
- limites (rémunérations, contributions malveillantes) et sensibilisation du grand publique.
- Conclusion : comment naviguer dans ce monde
]
= Introduction
#comment[
- Définition des big tech
- État des lieux actuels (chiffres, ...)
- Enjeux
- Introduction de la problèmatique
]
Dans le glossaire relatif à la confidentialité de Brave @QuestceQueBig2023, le terme "Big tech" est défini par "un terme générique qui se rapporte aux grandes entreprises technologiques qui fabriquent du matériel et des logiciels largement utilisés, et qui ont généralement une immense influence sur la technologie, Internet et léconomie dans son ensemble."
Ce terme est souvent utilisé en faisant référence à cinq entreprises : Amazon, Apple, Alphabet (Google), Meta, et Microsoft. Mais on peut aussi le voir de manière plus large en intégrant toutes les très grande entreprises de linformatique qui dominent dans leur milieu.
= Pourquoi tout le monde utilise les big tech
== En entreprise
== Personnellement
= Pourquoi vouloir quitter les big tech
== Centralisation du pouvoir
== On ne sait pas comment ça marche : obfuscation
= Comment quitter les big tech
== Introduction à lopen-source
== Cas de léducation nationale
== Sensibilisation du grand public, ou pourquoi tout le monde sen fout
= Conclusion
== Ce que nous ont apportés les big tech
= Bibliographie
#bibliography("references.bib", title: none, style: "apa")

134
references.bib Normal file
View File

@ -0,0 +1,134 @@
@online{1LusageLogiciels,
title = {(1) {{L}}'usage Des Logiciels Libres : Regards Croisés Entre Le {{Québec}} et La {{France}}},
url = {https://www.academia.edu/113218003/Lusage_des_logiciels_libres_regards_crois%C3%A9s_entre_le_Qu%C3%A9bec_et_la_France?uc-sb-sw=10299076},
urldate = {2026-01-04},
file = {/Users/clement/Zotero/storage/VCBZ8B3A/Lusage_des_logiciels_libres_regards_croisés_entre_le_Québec_et_la_France.html}
}
@online{bigotDigitalSovereigntyWhy2025,
title = {Digital Sovereignty: Why leaving the GAFAM is an absolute urgency (and what to replace them with) L'intelligence Artificielle pour les entreprises},
shorttitle = {Digital Sovereignty},
author = {Bigot, Rémy},
date = {2025-04-25T07:11:08+00:00},
url = {https://www.montersonbusiness.com/entreprise/digital-sovereignty-why-leaving-gafam-absolute-urgency/},
urldate = {2026-01-04},
abstract = {Share at: ChatGPT Perplexity WhatsApp LinkedIn X Grok Google AI The digital war is silent but ruthless. Our data, businesses, and administrations are massively dependent on GAFAM (Google, Apple, Facebook/Meta, Amazon, Microsoft). This dependence is far from trivial, exposing us to major risks: loss of strategic control, foreign interference, censorship, and economic vulnerability. 90\% of […]},
langid = {french},
organization = {L'intelligence Artificielle pour les entreprises},
file = {/Users/clement/Zotero/storage/NBL7YNDZ/digital-sovereignty-why-leaving-gafam-absolute-urgency.html}
}
@online{DigitalSovereigntyWhen2025,
title = {Digital sovereignty: when public actors move from words to action},
shorttitle = {Digital sovereignty},
date = {2025-10-22T18:03:27+00:00},
url = {https://www.exoplatform.com/blog/digital-sovereignty-when-public-actors-move-from-words-to-action/},
urldate = {2026-01-04},
abstract = {The Polytechnique school suspends its migration to Microsoft 365. The state of Schleswig-Holstein in northern Germany gives up Microsoft tools in favor of open source alternatives. The Occitanie region is gradually freeing itself from GAFAM.},
langid = {french},
organization = {eXo Platform},
file = {/Users/clement/Zotero/storage/5I5AB38V/digital-sovereignty-when-public-actors-move-from-words-to-action.html}
}
@online{EmployesGAFAMGros,
title = {Les employés des GAFAM, plus gros contributeurs du logiciel libre},
url = {https://www.polytechnique-insights.com/dossiers/digital/des-machines-et-des-hommes-les-defis-du-numerique/comment-les-geants-du-numerique-sapproprient-le-logiciel-libre/},
urldate = {2026-01-04},
abstract = {Découvrez dès maintenant l'épisode Les employés des GAFAM, plus gros contributeurs du logiciel libre sur Polytechnique Insights.},
langid = {french},
organization = {Polytechnique Insights},
file = {/Users/clement/Zotero/storage/LR3UGVWT/comment-les-geants-du-numerique-sapproprient-le-logiciel-libre.html}
}
@online{FourRegneQuatre,
title = {The four - Le règne des quatre - Scott Galloway},
url = {https://www.babelio.com/livres/Galloway-The-four-Le-regne-des-quatre/1185863},
urldate = {2026-01-05},
abstract = {Critiques (3), citations, extraits de The four - Le règne des quatre de Scott Galloway. Intéressé par le sujet, l'approche comparatif des 4 cavaliers Américai...},
langid = {french},
organization = {Babelio},
file = {/Users/clement/Zotero/storage/FLI6SIKZ/1185863.html}
}
@online{goziOpenSourceEducation2025,
title = {Open source en éducation : avantages pour enseignants et élèves},
shorttitle = {Open source en éducation},
author = {Gozi, Simon},
date = {2025-12-04T07:35:38+00:00},
url = {https://www.regardsurlenumerique.fr/open-source-education-benefices/},
urldate = {2026-01-04},
abstract = {Découvrez comment lopen source révolutionne léducation en offrant aux enseignants et élèves des outils libres, innovants et accessibles.},
langid = {french},
organization = {Regards sur le numérique},
file = {/Users/clement/Zotero/storage/PCCHJRDP/open-source-education-benefices.html}
}
@online{LiberteLogicielSon,
title = {De La Liberté Du Logiciel et de Son Ouverture : Tour dhorizon et Perspectives},
url = {https://www.academia.edu/1246995/De_la_libert%C3%A9_du_logiciel_et_de_son_ouverture_tour_d_horizon_et_perspectives?email_work_card=view-paper},
urldate = {2026-01-27},
file = {/Users/clement/Zotero/storage/EUSDZ85Y/De_la_liberté_du_logiciel_et_de_son_ouverture_tour_d_horizon_et_perspectives.html}
}
@online{OfficeGAFAM,
title = {An {{Office}} without {{GAFAM}}?},
url = {https://publication2023.bits-und-baeume.org/values-for-transformation/an-office-without-gafam/},
urldate = {2026-01-04},
file = {/Users/clement/Zotero/storage/G2ATCLCA/an-office-without-gafam.html}
}
@online{QuestceQueBig2023,
title = {Quest-ce que la Big Tech ?},
date = {2023-03-13T00:00:00+00:00},
url = {https://brave.com/fr/glossary/big-tech/},
urldate = {2026-02-10},
abstract = {Il nest pas toujours facile de saisir tous les enjeux de la confidentialité en ligne. Cette liste regroupe des définitions concises des principaux termes liés à la confidentialité et à Internet, tels que «~Big Tech~». Consultez le glossaire relatif à la confidentialité de Brave ici.},
langid = {french},
organization = {Brave},
file = {/Users/clement/Zotero/storage/FBEW5SKQ/big-tech.html}
}
@online{redaccionHowWeProtect2024,
title = {How Do We Protect Ourselves from Dependence on the Tech Giants?},
author = {Redacción},
date = {2024-09-04T06:04:00+02:00},
url = {https://thediplomatinspain.com/en/2024/09/04/como-nos-defendemos-de-la-dependencia-de-los-gigantes-tecnologicos/},
urldate = {2026-01-06},
abstract = {A number of events illustrate the kind of world we are building and in which we are immersed. With these},
langid = {american},
organization = {thediplomatinspain.com},
file = {/Users/clement/Zotero/storage/LJ2XIEYT/como-nos-defendemos-de-la-dependencia-de-los-gigantes-tecnologicos.html}
}
@article{shadrachDigitalDominancePower2019,
title = {Digital {{Dominance}}: {{The Power}} of {{Google}}, {{Amazon}}, {{Facebook}}, and {{Apple}}},
shorttitle = {Digital {{Dominance}}},
author = {Shadrach, Basheerhamad},
date = {2019-11-04},
journaltitle = {The International Journal of Information, Diversity, \& Inclusion (IJIDI)},
shortjournal = {IJIDI},
volume = {4},
number = {1},
issn = {2574-3430},
doi = {10.33137/ijidi.v4i1.33062},
url = {https://jps.library.utoronto.ca/index.php/ijidi/article/view/33062},
urldate = {2026-01-27},
abstract = {Book Review},
file = {/Users/clement/Zotero/storage/3U7X7EVG/Shadrach - 2019 - Digital Dominance The Power of Google, Amazon, Facebook, and Apple.pdf}
}
@online{ValueOpenSource,
title = {The {{Value}} of {{Open Source Software}} - {{Working Paper}} - {{Faculty}} \& {{Research}} - {{Harvard Business School}}},
url = {https://www.hbs.edu/faculty/Pages/item.aspx?num=65230},
urldate = {2026-01-04},
file = {/Users/clement/Zotero/storage/ZD2JP334/The Value of Open Source Software - Working Paper - Faculty & Research - Harvard Business School.pdf;/Users/clement/Zotero/storage/V4ZBY9RQ/item.html}
}
@online{WhyDontYour2024,
type = {Reddit Post},
title = {Why Don't Your Companies Use {{Open Source}} Alternatives to the Big Players?},
date = {2024-08-30T17:29:50},
url = {https://www.reddit.com/r/webdev/comments/1f510gw/why_dont_your_companies_use_open_source/},
urldate = {2026-01-04},
organization = {r/webdev}
}

BIN
res/logo-insa-lyon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

297
tplib-clement.typ Normal file
View File

@ -0,0 +1,297 @@
#import "@preview/codly:1.2.0": *
#import "@preview/fontawesome:0.5.0": *
// ---- Variables ---- //
// Identificateurs
#let identificateur-titre = [x309QfWkIO]
#let identificateur-annexe = [U2pWAy70cU]
#let identificateur-sous-titre-annexe = [4rS78a14Pv]
// Couleurs
#let couleur-rouge = color.red
#let couleur-vert = color.rgb(0, 169, 51)
#let couleur-bleu = color.rgb(52, 101, 164)
#let couleur-bleu-legende = color.rgb(0,69,134)
#let couleur-pourpre = color.rgb(166,77,121)
// Polices
#let fs-base = 12pt
#let fs-header = fs-base - 1.5pt
#let fs-footer = fs-base - 2pt
#let fs-title = fs-base + 6pt
#let fs-subtitle = fs-base + 2pt
#let fs-title1 = fs-base + 2pt
#let fs-title2 = fs-base + 1pt
#let fs-title3 = fs-base
#let fs-legend = fs-base - 2pt
// Longueurs
#let tabulation = 0.76cm
#let titre-tabulation = 0.50cm
#let titre-demi-tabulation = titre-tabulation / 2
#let titre-tabulation-annexe = 0.33cm
#let tab-numerotation = 0.2cm
#let tab-sommaire = 0.4cm
#let espace-vert-titres = 0.15cm
#show link: this => {
underline(text(this, fill: blue.darken(50%)))
}
#state("in-comment").update(false)
#let setup_comments(body, visible: false) = {
if visible {
state("in-comment").update(true)
set heading(
outlined: false,
numbering: none
)
block(fill: rgb("#ffe39c"), inset: 8pt, radius: 4pt, width:100%, body)
state("in-comment").update(false)
}
}
#let tplib-clement(
title: none, // `content?`
authors: none, // `array<str> | content?`
left_footer: none, // `content?`
date: none, // `datetime | content?`
font: "New Computer Modern", // `str`
show_toc: true, // `bool`
break_toc: false, // `bool`
break_h1: true, // `bool`
tight_h1: false, // `bool`
show_comments: true,
lang: "fr",
doc // content
) = {
set text(
lang: lang,
font: (font,)
)
set par(
justify: true
)
set heading(numbering: (..nums) => {
let nums = nums.pos();
let count = nums.len();
for (i, num) in nums.enumerate() {
if i == 0{
" " * (count - 1);
numbering("I.", num)
}else if i == 1{
numbering("1.", num)
}else if i == 2{
numbering("a.", num)
}else if i == 3{
numbering("a)", num)
}
}
})
state("in-outline").update(false)
show outline: it => {
state("in-outline").update(true)
it
if not break_h1 and break_toc {
pagebreak()
}
state("in-outline").update(false)
}
show heading.where(depth: 1): it => {
if it.outlined and not state("in-outline", false).get() {
if break_h1 and not state("in-comment", true).get() {
pagebreak(weak: true)
}else if not tight_h1 {
linebreak()
}
it
}else {
it
}
}
show link: this => {
underline(text(this, fill: blue.darken(50%)))
}
show footnote.entry: set text(size: fs-footer)
show figure.caption: it => {
text(
fs-legend,
[
#let sup = if (it.supplement == [Fig.]) [Figure] else {it.supplement}
#context [
#smallcaps(sup) #it.counter.display(). #it.body
]
]
)
}
show ref: it => {
let element = it.element
if (element == none
or element.func() != figure
or element.caption.supplement != [Fig.]){
it
return
}
let number = numbering(
element.numbering,
..counter(figure).at(element.location())
)
[#smallcaps[Figure] #number]
}
set page(
paper: "a4",
margin: (
left: 2cm,
right: 2cm,
top: 3cm,
bottom: 2.5cm,
),
header: [
#set text(size: fs-header)
#grid(
columns: (auto, 1fr, auto, 1fr, auto),
rows: (auto, 5pt),
stroke: (x, y) => if y == 1 {
(bottom: (
paint: luma(50%),
thickness: 1pt
))
},
[
#set image(height: 0.8cm)
#align(left + horizon)[
#image("res/logo-insa-lyon.png")
]
], [],
align(center + horizon)[
#title
], [],
// Authors
if authors != none {
let row_count = calc.min(authors.len(), 3)
let column_count = calc.ceil(authors.len() / row_count)
authors = authors.sorted(key: it => it.at(1))
align(right + horizon)[
#grid(
columns: (auto,) * column_count,
rows: (auto,) * row_count,
column-gutter: 3pt,
row-gutter: 3pt,
..authors.enumerate()
.map(data => {
let i = data.at(0);
let author = data.at(1);
let last_i = i == authors.len() - 1;
grid.cell(
colspan: if last_i {column_count * row_count - authors.len() + 1} else {1},
{
if authors.len() > 3 {
[#smallcaps(author.at(1)) ]
}else{
[#author.at(0) #smallcaps(author.at(1)) ]
}
}
)
}
)
)
]
}
)
], // Header
footer: [
#set text(size: fs-footer)
#grid(
columns: (1fr, 1fr, 1fr),
align(left)[#left_footer],
align(center)[
#context [
#counter(page).display(
" 1/1 ",
both: true,
)
]
],
align(right)[#date],
)
], // Footer
) // Page
// Heading
set text(size: fs-title)
align(center)[#title]
set text(size: fs-subtitle)
let column_count = calc.min(authors.len(), 3)
let row_count = calc.ceil(authors.len() / column_count)
authors = authors.sorted(key: it => it.at(1))
grid(
columns: (1fr,) * column_count,
rows: (auto,) * row_count,
row-gutter: 12pt,
..authors.enumerate().map(data => {
let i = data.at(0);
let author = data.at(1);
let last_i = i == authors.len() - 1;
grid.cell(
colspan: if last_i {column_count * row_count - authors.len() + 1} else {1},
align(center)[#author.at(0) #smallcaps(author.at(1))]
)
}
)
)
align(center)[
#date
#if left_footer != none {
[ \-- #left_footer]
}
]
set text(size: fs-base)
if show_toc {
outline()
}
show: codly-init.with()
let code-icon(fa-name) = {
box(
inset: (right: 3pt),
height: 0.8em,
baseline: 0.05em,
fa-icon(fa-name)
)
h(0.1em)
}
codly(
number-align: top + right,
zebra-fill: luma(250),
fill: luma(250),
languages: (
rust: (name: "Rust", icon: code-icon("rust"), color: rgb("#CE412B")),
sql: (name: "SQL", icon: code-icon("database"), color: luma(180)),
)
)
state("in-comment").update(false)
doc
}