<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>GitHub &amp;mdash; pylapp</title>
    <link>https://write.as/pylapp/tag:GitHub</link>
    <description>Software crafter, digital punker - &lt;a href=&#34;https://pylapersonne.info&#34; title=&#34;Personal web site&#34;&gt;pylapersonne.info&lt;/a&gt;</description>
    <pubDate>Sun, 23 Aug 2026 04:29:49 +0000</pubDate>
    <item>
      <title>My Git cheatsheet</title>
      <link>https://write.as/pylapp/my-git-cheatsheet?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1My Git cheatsheet/h1&#xA;&#xA;i🇺🇸 - Last update: Monday, January 12th 2026/i&#xA;&#xA;biKeywords: #Git, #commits, #GitHub, #GPG, #CLI/i/b&#xA;&#xA;h2A bit of context/h2&#xA;&#xA;Sometimes I need to get back some commands I used in my terminal so as to work on my Git repositories of GitHub / GitLab projects. But I can have often some doubts about them, so I decided to list here some useful commands as a cheatsheet or a simple reminder to keep and share. I will try to keep it updated. There are nice resources in the bottom of this document!&#xA;&#xA;h3Applying some common Git configurations/h3&#xA;&#xA;Use also the em--global/em option if you want to apply this configuration everwyhere.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-1.png&#34; title=&#34;Define Git local configuration&#34; alt=&#34;Apply &#39;git config&#39; command with parameters &#39;user.name&#39;, &#39;user.email&#39; and &#39;user.signingKey&#39; and after the value&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Showing GPG keys to get ID to use for commits /h3&#xA;&#xA;Useful to remember the ID of the GPG key to use to sign commits. More details in a href=&#34;https://write.as/pylapp/au-fait-pensez-vous-a-signer-vos-commits&#34; title=&#34;Other publication in french of commit signing&#34;this other publication (in french)/a.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-2.png&#34; title=&#34;List GPG keys&#34; alt=&#34;Apply GPG command &#39;gpg --list-keys --keyid-format=short&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Verify GPG signature of commits/h3&#xA;&#xA;Keep in mind the software forges like a href=&#34;https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification&#34; title=&#34;GitHub documentation about commit verifications&#34;GitHub/a and a href=&#34;https://docs.gitlab.com/ee/user/project/repository/signed_commits/&#34; title=&#34;GitLab documentation about signed commits&#34;GitLab/a provide also some verification process for commits.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-3.png&#34; title=&#34;Verify GPG signature of commit&#34; alt=&#34;&#39;git verify-commit&#39; or &#39;git log --show-signature&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Verify GPG signature of artifacts/h3&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-13.png&#34; title=&#34;Verify GPG signature of artifacts&#34; alt=&#34;&#39;gpg --verify&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Verify assets or release integrity (GH)/h3&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-14.png&#34; title=&#34;Verify assets of release integrity with GitHub CLI client signature of artifacts&#34; alt=&#34;&#39;gh release verify&#39; or &#39;gh release verify-asset&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Display contributors of a commit/h3&#xA;&#xA;You can also filter to get other metadata in commits, a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst#n525&#34; title=&#34;Keywords fields in commit messages for patches&#34;find here for example some ideas./a&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-4.png&#34; title=&#34;Display commit authors and committers&#34; alt=&#34;Use options of command &#39;git show&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Create branch from another and switch/h3&#xA;&#xA;That&#39;s not the only command of course, but I like this one.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-5.png&#34; title=&#34;Switch to new branch&#34; alt=&#34;Apply command &#39;git checkout -b new-branch source-branch&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Get rid of the last N commits/h3&#xA;&#xA;You can use of course other things instead of emHEAD~N/em.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-6.png&#34; title=&#34;Get rid of the N last commits and push&#34; alt=&#34;Apply command &#39;git reset --hard HEAD~N&#39; then push with option &#39;--force-with-lease&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Reword, reorder or squash last N commits with interactive rebease/h3&#xA;&#xA;You can use of course other things instead of emHEAD~N/em. Beware of emfixup/em and emsquash/em, not the same uses with the commit messages.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-7.png&#34; title=&#34;Interactive rebase&#34; alt=&#34;git rebase -i HEAD~N&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Create a Git patch/h3&#xA;&#xA;Allows to generate a Git patch from a diff to apply or send it later.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-10.png&#34; title=&#34;Use the git format-patch to build a patch file&#34; alt=&#34;Use commands &#39;git diff&#39; or &#39;git format-patch&#39; then &#39;git apply&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Keeping somewhere changes temporary/h3&#xA;&#xA;Useful for drafts or temporary changes you don&#39;t want to version.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-9.png&#34; title=&#34;Use the stash stack&#34; alt=&#34;Use variants of command &#39;git stash&#39; with actions &#39;push&#39;, &#39;pop&#39;, &#39;apply&#39;&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Find someone to blame (maybe you!)/h3&#xA;&#xA;The aim is to display who modified lines of files.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-11.png&#34; title=&#34;Use the &#39;git blame&#39; command&#34; alt=&#34;Use command &#39;git blame&#39; with -p and -e options&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Clean the repository/h3&#xA;&#xA;Clean the project, get rid of files, but beware, you may loose things!&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-12.png&#34; title=&#34;For available types of commandes depending to what you want to do&#34; alt=&#34;Use &#39;clean -fd&#39; to get rid of unnsaved files and directories, &#39;reset --hard&#39; to go back to last commit, &#39;rm --cached&#39; to remove modifications but keeping file and &#39;checkout&#39; to make a file be reset to last commit&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h3Work on a fork and submit/h3&#xA;&#xA;The workflow is simple: fork, create local develop branch with your dev stuff, make meaningful commits, then cherry-picks from this branch to a virgin one so as to submit a nice and simple pull request.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-8.png&#34; title=&#34;Fork, sync, commit, cherry-pick and push&#34; alt=&#34;Add upstream remote, checkout dev branch and rebase, make cherry-pick from working branch to pull request branch&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h2Resources/h2&#xA;&#xA;You have also some online resources like a href=&#34;https://git-cheat-sheet.readthedocs.io/en/latest/&#34; title=&#34;Some cheat sheet notes for Git&#34;git-cheat-sheet.readthedocs.io/a.&#xA;&#xA;But, maybe most important, you can refer also to this amazing comic of a href=&#34;https://jvns.ca/&#34; title=&#34;Website of Julia Evans&#34;Julia Evans/a, available a href=&#34;https://programming.dev/post/19807634&#34; title=&#34;Lemmy (programming.dev instance) publication of the hyperlink&#34;online/a and also a href=&#34;https://wizardzines.com/zines/git/&#34; title=&#34;Wizardzines page about Julia Evans book about Git&#34;buy her book/a.&#xA;Her comic bellow is licensed under a href=&#34;https://store.wizardzines.com/pages/faq&#34; title=&#34;FAQ explaining the license&#34;CC-BY-NC-SA 4.0/a.&#xA;&#xA;a href=&#34;https://wizardzines.com/comics/git-cheat-sheet/&#34; title=&#34;Click on the image to go to the online original version&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/26/julian-evans-wizardzine.png&#34; title=&#34;Fork, sync, commit, cherry-pick and push&#34; alt=&#34;Add upstream remote, checkout dev branch and rebase, make cherry-pick from cworking branch to pull request branch&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/a&#xA;[Code samples rendered with a href=&#34;https://carbon.now.sh&#34; title=&#34;Online tool for preview&#34;carbon.now.sh/a] !-- Material / bash config without X/Y offset --&#xA;&#xA;--&#xA;iPosted on Friday, September 27th 2024/i&#xA;--&#xA;&#xA;Did you enjoy reading this blog?&#xD;&#xA;a href=&#34;https://pylapersonne.info/buymeacoffee&#34; title=&#34;Profile of pylapp in buymeacoffee.com&#34; aria-label=&#34;Go to buymeacoffee.com&#34;Give me a beer 🍺/a or use a href=&#34;https://pylapersonne.info/donate&#34; title=&#34;Page for support in pylapersonne.info web site&#34; aria-label=&#34;Use another way to support on pylapersonne.info website&#34;something else/a ❤️‍🔥&#xD;&#xA;Licensed under a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;CC-BY-SA 4.0/a.&#xD;&#xA;Opinions are my own.&#xD;&#xA;To contact me, feel free to choose a href=&#34;https://pylapersonne.info/menu&#34; title=&#34;Menu page of my web site with social networks and contact mediums&#34;the most suitable medium for you/a, or for example a href=&#34;https://framapiaf.org/@pylapp&#34; title=&#34;Mastodon profile&#34;Mastodon/a.]]&gt;</description>
      <content:encoded><![CDATA[<h1>My Git cheatsheet</h1>

<p><i>🇺🇸 – Last update: Monday, January 12th 2026</i></p>

<p><b><i>Keywords: <a href="https://write.as/pylapp/tag:Git" class="hashtag"><span>#</span><span class="p-category">Git</span></a>, <a href="https://write.as/pylapp/tag:commits" class="hashtag"><span>#</span><span class="p-category">commits</span></a>, <a href="https://write.as/pylapp/tag:GitHub" class="hashtag"><span>#</span><span class="p-category">GitHub</span></a>, <a href="https://write.as/pylapp/tag:GPG" class="hashtag"><span>#</span><span class="p-category">GPG</span></a>, <a href="https://write.as/pylapp/tag:CLI" class="hashtag"><span>#</span><span class="p-category">CLI</span></a></i></b></p>

<h2>A bit of context</h2>

<p>Sometimes I need to get back some commands I used in my terminal so as to work on my Git repositories of GitHub / GitLab projects. But I can have often some doubts about them, so I decided to list here some useful commands as a cheatsheet or a simple reminder to keep and share. I will try to keep it updated. There are nice resources in the bottom of this document!</p>

<h3>Applying some common Git configurations</h3>

<p>Use also the <em>—global</em> option if you want to apply this configuration everwyhere.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-1.png" title="Define Git local configuration" alt="Apply &#39;git config&#39; command with parameters &#39;user.name&#39;, &#39;user.email&#39; and &#39;user.signingKey&#39; and after the value" class="centerImage toBigImage"/></p>

<h3>Showing GPG keys to get ID to use for commits </h3>

<p>Useful to remember the ID of the GPG key to use to sign commits. More details in <a href="https://write.as/pylapp/au-fait-pensez-vous-a-signer-vos-commits" title="Other publication in french of commit signing">this other publication (in french)</a>.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-2.png" title="List GPG keys" alt="Apply GPG command &#39;gpg --list-keys --keyid-format=short&#39;" class="centerImage toBigImage"/></p>

<h3>Verify GPG signature of commits</h3>

<p>Keep in mind the software forges like <a href="https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification" title="GitHub documentation about commit verifications">GitHub</a> and <a href="https://docs.gitlab.com/ee/user/project/repository/signed_commits/" title="GitLab documentation about signed commits">GitLab</a> provide also some verification process for commits.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-3.png" title="Verify GPG signature of commit" alt="&#39;git verify-commit&#39; or &#39;git log --show-signature&#39;" class="centerImage toBigImage"/></p>

<h3>Verify GPG signature of artifacts</h3>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-13.png" title="Verify GPG signature of artifacts" alt="&#39;gpg --verify&#39;" class="centerImage toBigImage"/></p>

<h3>Verify assets or release integrity (GH)</h3>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-14.png" title="Verify assets of release integrity with GitHub CLI client signature of artifacts" alt="&#39;gh release verify&#39; or &#39;gh release verify-asset&#39;" class="centerImage toBigImage"/></p>

<h3>Display contributors of a commit</h3>

<p>You can also filter to get other metadata in commits, <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst#n525" title="Keywords fields in commit messages for patches">find here for example some ideas.</a></p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-4.png" title="Display commit authors and committers" alt="Use options of command &#39;git show&#39;" class="centerImage toBigImage"/></p>

<h3>Create branch from another and switch</h3>

<p>That&#39;s not the only command of course, but I like this one.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-5.png" title="Switch to new branch" alt="Apply command &#39;git checkout -b new-branch source-branch&#39;" class="centerImage toBigImage"/></p>

<h3>Get rid of the last N commits</h3>

<p>You can use of course other things instead of <em>HEAD~N</em>.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-6.png" title="Get rid of the N last commits and push" alt="Apply command &#39;git reset --hard HEAD~N&#39; then push with option &#39;--force-with-lease&#39;" class="centerImage toBigImage"/></p>

<h3>Reword, reorder or squash last N commits with interactive rebease</h3>

<p>You can use of course other things instead of <em>HEAD~N</em>. Beware of <em>fixup</em> and <em>squash</em>, not the same uses with the commit messages.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-7.png" title="Interactive rebase" alt="git rebase -i HEAD~N" class="centerImage toBigImage"/></p>

<h3>Create a Git patch</h3>

<p>Allows to generate a Git patch from a diff to apply or send it later.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-10.png" title="Use the git format-patch to build a patch file" alt="Use commands &#39;git diff&#39; or &#39;git format-patch&#39; then &#39;git apply&#39;" class="centerImage toBigImage"/></p>

<h3>Keeping somewhere changes temporary</h3>

<p>Useful for drafts or temporary changes you don&#39;t want to version.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-9.png" title="Use the stash stack" alt="Use variants of command &#39;git stash&#39; with actions &#39;push&#39;, &#39;pop&#39;, &#39;apply&#39;" class="centerImage toBigImage"/></p>

<h3>Find someone to blame (maybe you!)</h3>

<p>The aim is to display who modified lines of files.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-11.png" title="Use the &#39;git blame&#39; command" alt="Use command &#39;git blame&#39; with -p and -e options" class="centerImage toBigImage"/></p>

<h3>Clean the repository</h3>

<p>Clean the project, get rid of files, but beware, you may loose things!</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-12.png" title="For available types of commandes depending to what you want to do" alt="Use &#39;clean -fd&#39; to get rid of unnsaved files and directories, &#39;reset --hard&#39; to go back to last commit, &#39;rm --cached&#39; to remove modifications but keeping file and &#39;checkout&#39; to make a file be reset to last commit" class="centerImage toBigImage"/></p>

<h3>Work on a fork and submit</h3>

<p>The workflow is simple: fork, create local develop branch with your dev stuff, make meaningful commits, then cherry-picks from this branch to a virgin one so as to submit a nice and simple pull request.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/26/git-cheatsheet-8.png" title="Fork, sync, commit, cherry-pick and push" alt="Add upstream remote, checkout dev branch and rebase, make cherry-pick from working branch to pull request branch" class="centerImage toBigImage"/></p>

<h2>Resources</h2>

<p>You have also some online resources like <a href="https://git-cheat-sheet.readthedocs.io/en/latest/" title="Some cheat sheet notes for Git">git-cheat-sheet.readthedocs.io</a>.</p>

<p>But, maybe most important, you can refer also to this amazing comic of <a href="https://jvns.ca/" title="Website of Julia Evans">Julia Evans</a>, available <a href="https://programming.dev/post/19807634" title="Lemmy (programming.dev instance) publication of the hyperlink">online</a> and also <a href="https://wizardzines.com/zines/git/" title="Wizardzines page about Julia Evans book about Git">buy her book</a>.
Her comic bellow is licensed under <a href="https://store.wizardzines.com/pages/faq" title="FAQ explaining the license">CC-BY-NC-SA 4.0</a>.</p>

<p><a href="https://wizardzines.com/comics/git-cheat-sheet/" title="Click on the image to go to the online original version">
<img src="https://pylapersonne.info/data/cdn/blog/26/julian-evans-wizardzine.png" title="Fork, sync, commit, cherry-pick and push" alt="Add upstream remote, checkout dev branch and rebase, make cherry-pick from cworking branch to pull request branch" class="centerImage toBigImage"/>
</a>
[Code samples rendered with <a href="https://carbon.now.sh" title="Online tool for preview">carbon.now.sh</a>] </p>

<p>—
<i>Posted on Friday, September 27th 2024</i>
—</p>

<p>Did you enjoy reading this blog?
<a href="https://pylapersonne.info/buymeacoffee" title="Profile of pylapp in buymeacoffee.com">Give me a beer 🍺</a> or use <a href="https://pylapersonne.info/donate" title="Page for support in pylapersonne.info web site">something else</a> ❤️‍🔥
Licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a>.
Opinions are my own.
To contact me, feel free to choose <a href="https://pylapersonne.info/menu" title="Menu page of my web site with social networks and contact mediums">the most suitable medium for you</a>, or for example <a href="https://framapiaf.org/@pylapp" title="Mastodon profile">Mastodon</a>.</p>
]]></content:encoded>
      <guid>https://write.as/pylapp/my-git-cheatsheet</guid>
      <pubDate>Fri, 27 Sep 2024 09:46:31 +0000</pubDate>
    </item>
    <item>
      <title>Les pièges de certains composants open source</title>
      <link>https://write.as/pylapp/les-pieges-de-certains-composants-open-source?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1Les pièges de certains composants open source/h1&#xA;&#xA;i🇫🇷 – dimanche 9 janvier 2022/i&#xA;&#xA;biMots clés : #opensource, #FLOSS, #GitHub, #licences, #social/i/b&#xA;&#xA;D&#39;ordinaire nous aimons utiliser des bibliothèques tierces dans nos projets, ces &#34;librairies&#34; que l&#39;on retrouve par exemple sur des forges logicielles publiques comme emGitHub/em et emGitLab/em. Rares sont les logiciels qui ne possèdent pas une once de abbr title=&#34;Free Libre and Open Source Software&#34;FLOSS /abbr(iFree Libre and Open Source Software/i) à l&#39;intérieur.&#xA;Le plus souvent, on retrouve dans chaque projet des composants FLOSS, que ce soit pour se faciliter la vie, écrire des tests unitaires ou gérer une base de données par exemple.&#xA;On a vite tendance à prendre l&#39;outil le plus connu, le plus répandu, ou à faire des réflexions trop rapides pour choisir ce dont on a besoin, et pourtant il y a des pièges à éviter.&#xA;&#xA;h2Tout le monde est juriste, évidement !/h2&#xA;&#xA;Beaucoup (trop) d&#39;entre nous ne considèrent pas suffisamment la licence qui est appliquée à la libraire choisie ; par paresse intellectuelle, par pure fainéantise, par certitude de bien comprendre les licences, par oubli, ou par excès de confiance. On fait tous la boulette, et on en tire des leçons ensuite, ce n&#39;est pas si anormal quand encore aujourd&#39;hui dans les établissements de formation à l&#39;ingénierie logicielle ou &#34;les écoles de codage&#34; on en parle assez peu, ou pas assez, voire pas du tout. Merci les formations au rabais vendeuses de rêves laissant leurs apprenants se fracasser sur le mur de la réalité.&#xA;&#xA;Toutefois, parmi les pièges dans lesquels chacun et chacune peuvent plonger, il y en a particulièrement qui sont beaux. Et grossiers. Et pourtant, beaucoup de personnes se font avoir, et ne finissent par réagir que lorsque le sujet est médiatisé. Avant de se jeter sur le dernier composant à la mode, regardons en détails les pièges, en commençant par les licences évidemment.&#xA;&#xA;h3Des clauses déloyales dans les licences/h3&#xA;&#xA;Par exemple, il y a quelques années, on pouvait trouver les iframeworks/i emReact/em de emFacebook / Meta/em sous une curieuse licence i&#34;BSD + Patents&#34;/i. Le truc, c&#39;est que cette licence possède des clauses relatives aux brevets (a href=&#34;https://medium.com/@raulk/if-youre-a-startup-you-should-not-use-react-reflecting-on-the-bsd-patents-license-b049d4a67dd2&#34; title=&#34;Article sur le site medium.com&#34;une vague idée ici/a). Si j&#39;exagère et grossis les choses, le fait de chercher des noises en justice à emFacebook/em à l&#39;époque pouvait faire tomber le droit que vous aviez d&#39;utiliser ses cadriciels (j&#39;adore ce mot). Pot de terre contre pot de fer dans du béton armé, embêter iBig F/i peut revenir à vous interdire d&#39;utiliser ses technos, donc à retirer beaucoup de produits. Une fois la chose médiatisée, finalement emFacebook/em changea son fusil d&#39;épaule et a href=&#34;https://www.freecodecamp.org/news/facebook-just-changed-the-license-on-react-heres-a-2-minute-explanation-why-5878478913b2/&#34; title=&#34;Article sur le site freecodecoamp.org&#34;utilisa la licence MIT/a.&#xA;&#xA;Bref, attention aux clauses déloyales des licences !&#xA;&#xA;h3Des changements radicaux de licences/h3&#xA;&#xA;Récemment encore, c&#39;est emHashiCorp/em qui changea brutalement la licence de son produit phare nommé emTerraform/em, et l&#39;entreprise est dans son bon droit. Le passage de la licence iMPL 2.0/i à la iBusiness Source License/i a été fait avec fracas, a href=&#34;https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license&#34; title=&#34;Blog de HashiCorp&#34;justifié maladroitement par l&#39;entreprise/a et a href=&#34;https://opentf.org/&#34; title=&#34;Site web de OpenTF&#34;décrié par la communauté open source/a. emMongoDB/em a eu droit aussi auparavant à son concert de casseroles a href=&#34;https://techcrunch.com/2018/10/16/mongodb-switches-up-its-open-source-license/&#34; title=&#34;Article sur le site techcrunch.com&#34;avec le passage à la SSPL/a.&#xA;Pour aller plus loin, a href=&#34;https://mariadb.com/fr/bsl-faq-adopting/&#34; title=&#34;Article sur le site mariadb.com&#34;MariaDB propose cette page de FAQ sur la BSL/a. Benoit Sibaud (un chouette collègue chez Orange !) a rédigé et a href=&#34;https://linuxfr.org/news/virevoltantes-valses-de-licences-libres-et-non-libres-dans-les-bases-de-donnees&#34; title=&#34;Article sur le site linuxfr.org&#34;diffusé un billet/a abordant les &#34;virevoltantes valses de licences libres et non libres dans les bases de données&#34;, très instructif !&#xA;En d&#39;autres termes, attendez-vous à peut-être voir des revirement de situations dingues sur les licences appliquées !&#xA;&#xA;Le truc, c&#39;est que quand bien même une entreprise décide d&#39;agir ainsi, elle reste tout de même légalement dans l&#39;obligation de satisfaire les demandes qui concernent les licences anciennement appliquées. Autrement dit, si à un instant T un composant C était sous une licence libre L (admettons GPL 3.0), mais que plus tard cette licence passe a href=&#34;https://blog.zwindler.fr/2023/08/16/d-open-source-a-bullshit-licence-bsl/&#34; title=&#34;Article sur le blog de zwindler.fr&#34;à une bullshit licence BL/a, si vous avez eu le composant sous licence L vous êtes en droit de demander les sources (si L l&#39;autorise évidement), même si elles ne sont pas accessibles publiquement. Bon courage donc.&#xA;&#xA;On peut ainsi imaginer jouer la prudence, et se dire que si on utilise des composants FLOSS, dans le doute, au cas où, on pourrait garder une copie du code source. J&#39;apprécie beaucoup a href=&#34;https://graphism.fr/comment-jai-sauvegarde-mon-web-sur-un-disque-dur/&#34; title=&#34;Article sur le site graphism.fr&#34;cet article de Geoffrey Dorme/a qui vous donnera davantage de motivations à le faire. En plus cloner les dépôts Git d&#39;une organisation GitHub a href=&#34;https://github.com/Orange-OpenSource/floss-toolbox/wiki/4.-Play-with-GitHub-CLI-(using-GH)#make-a-backup-of-organization-repositories&#34; title=&#34;Page wiki d&#39;un dépôt sur GitHub&#34;c&#39;est facile pour l&#39;instant/a.&#xA;&#xA;Imaginez maintenant, malgré les trahisons précédentes, que certaines technos soient si répandues qu&#39;elles en deviennent presque indispensables pour des entreprises, au hasard les iframeworks/i comme emReact/em. Rien n&#39;empêche emFacebook / Meta/em du jour au lendemain de changer la licence, de rendre l&#39;exploitation de l&#39;outil payante, et de monter un vrai ibusiness model/i dessus. Un magnifique coup à jouer maintenant que le place est faite dans l&#39;écosystème logiciel. Impossible ? C&#39;est vite oublier le ramdam lorsque a href=&#34;https://www.imdeo.com/java-devient-payant/&#34; title=&#34;Article sur imdeo.com&#34;Oracle avait mis en place son JDK payant/a.&#xA;&#xA;Mais il y a d&#39;autres pièges plus gros encore...&#xA;&#xA;h3L&#39;ajout de clauses additionnelles/h3&#xA;&#xA;Prenons par exemple une librairie Java bien connue, qui est utilisée en production : emRealm Java/em (la situation a été corrigée depuis, mais a trainé un bon moment tout de même pour que ce soit notable).&#xA;&#xA;À première vue, si on regarde le README vaguement, on voit ceci :&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/24/realm.webp&#34; title=&#34;Extrait du README&#34; alt=&#34;Extrait du README annonçant que le composant est sous licence Apache 2.0&#34; class=&#34;centerImage toBigImage&#34;&#xA;&#xA;On peut alors en déduire que le composant est sous licence open source iApache 2.0/i. Sauf que trop de gens s&#39;arrêtent là. Car que si on jette un œil au fichier de licence, on trouve certes des références à la licence iApache 2.0/i, mais aussi un autre élément d&#39;enfoiré : il&#39;export compliance/i.&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/24/clause.webp&#34; title=&#34;Extrait du README&#34; alt=&#34;Extrait du README annonçant que le composant est sous licence Apache 2.0 et qu&#39;il y a une clause additionnelle&#34; class=&#34;centerImage toBigImage&#34;&#xA;&#xA;Vous pouvez retrouver le diff du commit a href=&#34;https://github.com/realm/realm-java/commit/64a7000af0d95d88bdaf8bfe4eb20fd0a6cf8875&#34; title=&#34;Commit de changement de licence&#34;sur GitHub/a, je vous met ci-dessous le contenu scélérat de cette clause, qui rend la licence non conforme a href=&#34;https://opensource.org/osd/&#34; title=&#34;Site web de l&#39;Open Source Initiative&#34;à la définition donnée par l&#39;abbr title=&#34;Open Source Initiative&#34;OSI/abbr/a, donc plus open source du tout.&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/24/details-clause.webp&#34; title=&#34;Détails de la clause&#34; alt=&#34;Clause indiquant que des éléments peuvent être soumis à la loi américaine et que si l&#39;entreprise, le pays ou une personne de la société est sur liste noire l&#39;usage du composant est prohibé&#34; class=&#34;centerImage toBigImage&#34;&#xA;&#xA;Pour celles et ceux qui n&#39;ont plus assez de caféine dans le sang pour comprendre, voici un résumé : si on se retrouve sur une liste noire du gouvernement américain, que ce soit dans un pays, ou individuellement, ou dans une entreprise détenue par une personne dans cette liste noire, on ne peut pas utiliser ce produit.&#xA;&#xA;En soit, quel est le soucis ?&#xA;&#xA;Et bien le soucis est que l&#39;on peut avoir des applications critiques ou indispensables, ou son produit tout bêtement qui, si un jour le client, l&#39;éditeur, le pays, les actionnaires etc. sont dans le collimateur des États Unis d&#39;Amérique, peuvent être dégagées des boutiques d&#39;applications, avec toutes les conséquences que ça implique.&#xA;&#xA;On peut espérer que ça n&#39;arrivera jamais, ceci dit l&#39;ère Trump a montré qu&#39;il ne fallait pas grands choses pour que des fous furieux mettent la pagaille à l&#39;échelle mondiale en interdisant l&#39;usage de produits. Et le contexte international actuel ne rassure pas non plus vis à vis de la Russie. Demandez leur avis aux iraniens, cubains, ukrainiens ou chinois.&#xA;&#xA;Bref, dit autrement, quand vous utilisez une librairie FLOSS, regardez sur emGitHub/em la section dédiée à la licence.&#xA;Si le texte i&#34;View licence&#34;/i apparaît au lieu du nom de la licence, il y a deux cas de figure :&#xA;ul&#xA;lile texte a été modifié (souvent les copyrights) ou décoré faisant que GitHub s&#39;y perd ;/li&#xA;liil y a du texte en plus dans le fichier. Ceci pouvant être des détails sur d&#39;autres licences appliquées ou d&#39;anciens contributeurs, ou des clauses additionnelles./li&#xA;/ul&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/24/view-licence.webp&#34; title=&#34;Affichage ambigu de GitHub&#34; alt=&#34;Affichage des détails du projet GitHub indiquant peu d&#39;infos sur la licence&#34; class=&#34;centerImage toSmallImage&#34;&#xA;&#xA;Et oui, tout ça en droit français est valable.&#xA;&#xA;Mais où ailleurs peut-on se faire avoir ?&#xA;&#xA;h2La plaie de l&#39;excès de social dans les forges logicielles/h2&#xA;&#xA;h3Et si on regardait le nombre de commits ?/h3&#xA;&#xA;Déjà, pour &#34;évaluer&#34; un composant FLOSS, on peut regarder par exemple la vie de son code source. Ainsi, si un projet a des icommits/i faits régulièrement, on serait en droit de se dire qu&#39;il est toujours vivant. Toutefois la contraposée est fausse car on peut très bien avoir des projets FLOSS qui semblent &#34;vivoter&#34;, avec peu de icommits/i réguliers mais qui fonctionnent très bien, tout simplement car le projet en lui-même peut être maintenu ponctuellement, discrètement, mais efficacement.&#xA;&#xA;D&#39;ailleurs regarder la date et le nombre de icommits/i est aussi une fausse bonne idée, car par exagération on pourrait croire qu&#39;un projet qui a beaucoup de commits est un projet de qualité, et fiable, ce qui est absurde. Dans la mesure où des outils comme emGit/em permettent le isquashing/i, les imerge commits/i et le irebasing/i, on remarque bien que se fier uniquement à un historique de icommits/i n&#39;est pas viable. De plus, doit-on vraiment prendre en compte les icommits/i et ipull requests/i ridicules qui arrivent lors du a href=&#34;https://hacktoberfest.com/&#34; title=&#34;Site web du Hacktoberfest&#34;Hacktoberfest/a quand celles et ceux qui les proposent veulent juste profiter du moment pour avoir un joli badge sur le profil emGitHub/em par pur opportunisme ?&#xA;&#xA;Est-ce que pour l&#39;exemple ci-dessous le projet est vivant ou mort ? On peut s&#39;y fier ou pas ? a href=&#34;https://github.com/catdad/canvas-confetti&#34; title=&#34;Dépôt GitHub du projet&#34;Pour faire des confettis, c&#39;est suffisant ?/a&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/24/confettis.webp&#34; title=&#34;Branche par défaut d&#39;un dépôt GitHub permettant de faire des confettis&#34; alt=&#34;Historique Git d&#39;un projet affiché sur GitHub montrant que le projet n&#39;a pas bougé au mieux depuis 10 mois, voire depuis des années&#34; class=&#34;centerImage toBigImage&#34;&#xA;&#xA;h3Et Si On RegArDaIt LeS LiKes eT LeS FoLlOwErS ?/h3&#xA;&#xA;Les réseaux sociaux ont amené du pire dans emGitHub/em avec les i&#34;likes&#34;/i et les compteurs de i&#34;followers&#34;/i.&#xA;&#xA;Cet autre piège à éviter consiste à se contenter de regarder ces nombres de istars/i et de iforks/i d&#39;un projet sur la forge logicielle que l&#39;on veut. Avec l&#39;avènement des réseaux sociaux, on veut i&#34;liker&#34;/i, i&#34;booster&#34;/i, i&#34;up-voter&#34;/i ou i&#34;starrer&#34;/i des projets que l&#39;on aime bien, ou que l&#39;on pourrait aimer, ou pour faire plaisir au gars derrière qu&#39;on connait. Mais en soit, ni le fonctionnel ni la qualité du projet ne sont par essence et par définition concernés. Il en est de même pour les iforks/i ; il est courant de voir des utilisateurs en crééer juste... au cas où, pour grossir son profil emGitHub/em, ou pour faire une ipull request/i un jour ou pas. Surtout ou pas. Quand au nombre de i&#34;followers&#34;/i du développeur principal, en quoi le fait qu&#39;il en ait 2 300 au moins soit rassurant ? Le personnage peut être tout à fait exécrable, pénible voire même adepte de la pizza avec des patates dessus, pourquoi afficher cette fausse notoriété qui n&#39;apporte rien ?&#xA;&#xA;Est-ce que l&#39;exemple ci-dessous est un gros projet ? Un truc balèze ? Non, c&#39;est juste un programme affichant a href=&#34;https://github.com/mtoyoda/sl&#34; title=&#34;Dépôt GitHub du projet&#34;un train à vapeur si on se trompe de commande (moi j&#39;adore)/a.&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/24/train.webp&#34; title=&#34;Compteurs sociaux de GitHub pour le projet&#34; alt=&#34;Compteurs sociaux du projet avec 386 forks et au moins 2 600 forks&#34; class=&#34;centerImage toBigImage&#34;&#xA;&#xA;Oh, et puis, bien évidemment, on peut acheter des i&#34;stars&#34;/i sur GitHub à prix réduit ! La plaie du social jusqu&#39;aux forges logicielles, et à portée de main. a href=&#34;https://the-guild.dev/blog/judging-open-source-by-github-stars&#34; title=&#34;Site web the-guild.dev&#34;Cet article/a est très instructif sur le sujet.&#xA;&#xA;h2Environnement et qualité, beau code ou infect projet/h2&#xA;&#xA;h3On regarde les issues et requests ?/h3&#xA;&#xA;Un autre élément à considérer avec prudence est le nombre de iissues/i et de ipull requests / merge requests/i. En effet, un projet qui en possède beaucoup peut être un projet très vivant, comme aussi un projet qui est très à l&#39;abandon mais avec une base d&#39;utilisateurs réclamant des choses ou voulant contribuer sans personne derrière pour valider. Ou alors peut être victime de trolls, comme ce fut le cas pour a href=&#34;https://github.com/twitter/the-algorithm/issues?q=is%3Aissue+is%3Aopen+elon+&#34; title=&#34;Issues filtrées du dépôt&#34;le dépôt contenant l&#39;algorithme de recommandations de Twitter/a. Prudence donc si on ne regarde que ces éléments sans les contextualiser.&#xA;&#xA;h3On regarde les contributeurs ?/h3&#xA;&#xA;Chose intéressante aussi à voir, les contributeurs, ces petites mains visibles fournissant un incroyable travail.&#xA;&#xA;Si vous utilisez un composant FLOSS avec un faible nombre de contributeurs, il est possible que derrière ce projet il n&#39;y ait presque personne en dehors de quelques passionnés dévoués (bénévolement le plus souvent) à leur projet (pour la gloire plus que pour l&#39;argent). Il faut donc se demander si le fait que le projet repose sur un tout petit nombre de contributeurs est bloquant ou pas. Pour une librairie affichant de confettis c&#39;est peut-être un élément peu pertinent. Mais pour votre couche de chiffrement, est-ce une bonne idée de compter sur un seul péquin derrière ?&#xA;&#xA;D&#39;ailleurs, question bête, est-ce que l&#39;on suppose que la source de vérité est... fiable ? Car pour être affichés comme contributeurs sur un projet emGitHub/em, il faut apparaître à certains endroits dans les icommits/i. iQuid/i des personnes voulant rester anonymes ? Des personnes en ipair-programming/i ? Ou d&#39;une organisation faisant que le mainteneur principal s&#39;acharne maladroitement à garder un historique emGit/em propre et donc fait du copier/coller des ipull requests/i mais en gardant à jour le fichier AUTHORS par honnêteté intellectuelle ? Ou des robots qui exécutent des tâches automatisées sur le dépôt et qui figurent dans les contributeurs ?&#xA;&#xA;Ci-dessous un exemple, avec a href=&#34;https://github.com/ReticentJohn/Amaroq&#34; title=&#34;Dépôt GitHub&#34;le projet Amaroq/a. A-t-on vraiment 13 contributeurs ou 1 seul ? D&#39;ailleurs peut-on vraiment se contenter de mesurer l&#39;activité par le nombre de icommits/i ? Non, évidemment.&#xA;&#xA;table&#xA;tbody&#xA;tr&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/24/amaroq-1.webp&#34; title=&#34;13 contributeurs&#34; alt=&#34;GitHub affichant les contributeurs, au nombre de 13&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;/tr&#xA;tr&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/24/amaroq-2.webp&#34; title=&#34;1 seul gros actif finalement&#34; alt=&#34;Détails des commits par contributeur montrant que finalement seulement un seul se démarque énormément&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;/tr&#xA;/tbody&#xA;/table&#xA;&#xA;En parlant de icommits/i et des contributeurs, peut-on vraiment faire confiance aux contributions ? Il y a des projets FLOSS qui exigent des signatures cryptographiques des icommits/i d&#39;une part, et que le iDeveloper Certificate of Origin/i soit appliqué d&#39;autre part. Engager les responsabilités de chacun et s&#39;assurer que les icommits/i soient intègres ne semble pas une mauvaise idée, mais a-t-on toutes et tous l&#39;habitude de le faire ? Non. Méconnaissance ou fainéantise ?&#xA;&#xA;h3La doc ?/h3&#xA;&#xA;D&#39;ailleurs, on peut aussi regarder les échanges qui ont lieu dans les iissues/i, les emSlack/em ou emMattermost/em. Pour ce composant FLOSS qui vous intéresse, peut-être ne seriez-vous jamais amenés à échanger avec les mainteneurs derrière. Mais si vous voulez contribuer, êtes-vous prêts à dialoguer avec une équipe ayant une organisation pyramidale ? Ou concentrée sur un développeur quasi-messianique à qui tout le monde demande son avis et attend son accord ? Est-ce que l&#39;ambiance est délétère dans le projet ?&#xA;&#xA;h3On regarde le code source alors ?/h3&#xA;&#xA;Par ailleurs, jetez un œil aussi au code source en lui-même.&#xA;&#xA;Si vous avez un projet emiOS/em écrit en emSwift/em, avec uniquement des compétences en emSwift/em dans votre équipe, seriez-vous prêt à soumettre des ipull requests/i sur un composant écrit en bon vieux emObjective-C/em à la papy ? Si une librairie emJavaScript/em vous plait pour faire des jolies animations, ça vous tente vraiment de l&#39;utiliser sachant qu&#39;elle va tirer emjQuery/em et que vous êtes fiers de vous en être débarrassés y&#39;a 2 ans ? Si le CERT signale de vulnérabilités critiques, et que le composant que vous voulez est concerné, comment et à quelle vitesse sont corrigées ces failles ? Il y en a certaines qui ne le sont toujours pas ? Et ils feront comment si le a href=&#34;https://www.april.org/cyber-resilience-act-le-futur-du-logiciel-libre-en-suspend-en-attendant-le-trilogue&#34; title=&#34;Article de l&#39;April&#34;Cyber Resilience Act/a passe ? Si on voit plusieurs iissues/i sur des vulnérabilités non corrigées, remontées par emDependabot/em ou emSnyk/em peut-on nécessairement en conclure que ce composant est dangereux alors qu&#39;un autre sans de telles choses le serait moins même si finalement il pourrait n&#39;avoir en place aucun outil de détection ?&#xA;&#xA;h3Les gens c&#39;est bien aussi non ?/h3&#xA;&#xA;Truc rigolo, vous connaissez le développeur / grand chef derrière le composant que vous voulez ? Car peut-être a href=&#34;https://www.numerama.com/politique/565643-pourquoi-notepad-est-conspue-par-des-militants-chinois-depuis-sa-derniere-mise-a-jour.html&#34; title=&#34;Article sur Numerama&#34;politiquement engagé/a ou a href=&#34;https://www.developpez.com/actu/58442/Linus-Torvalds-critique-pour-sa-violence-verbale-la-tension-monte-entre-les-developpeurs-et-le-pere-du-Kernel-Linux/&#34; title=&#34;Article sur developez.com&#34;susceptible, ou impulsif, ou infect/a, et qu&#39;il va saboter son projet ou pas, quitte à se faire virer de emGitHub/em. Impossible ? a href=&#34;https://www.developpez.com/actu/330165/GitHub-restaure-le-compte-du-dev-qui-a-intentionnellement-corrompu-ses-bibliotheques-certains-developpeurs-estiment-que-la-suspension-etait-deraisonnable-puisqu-il-s-agissait-de-son-propre-code/&#34; title=&#34;Article sur developez.com&#34;Voyez plutôt/a.&#xA;&#xA;h3D&#39;ailleurs, pourquoi c&#39;est là ?/h3&#xA;&#xA;Ce n&#39;est pas parce que le code est sur emGitHub/em, avec une licence libre ou open source que forcément cela a été fait avec une volonté de respecter a href=&#34;https://speakerdeck.com/pylapp/licences-open-source-entre-guerre-de-clochers-et-radicalite&#34; title=&#34;Support de présentation de conférence sur les licences libres, open source et éthiques&#34;la philosophie de l&#39;un ou la méthodologie de développement de l&#39;autre/a.&#xA;&#xA;Par exemple le code a très bien pu être publié juste pour des raisons de transparence totalement opportuniste comme a href=&#34;https://github.com/twitter/the-algorithm&#34; title=&#34;Dépôt GitHub de l&#39;algorithme de recommandation de Twitter&#34;l&#39;algorithme de recommandation de Twitter, maintenant X/a.&#xA;Ou alors le code est publié car il embarque un composant sous licence à copyleft fort qui implique une mise à disposition du code source.&#xA;D&#39;autres projets peuvent être open source a href=&#34;https://github.com/CovidTrackerFr&#34; title=&#34;Organisation GitHub de CovidTracker&#34;pour attirer des contributeurs très rapidement et aussi éviter toute polémique en pleine période de crise/a, tant sur le manque de fonctionnalités que sur le fonctionnement, sans pour autant avoir des perspectives sur le long terme.&#xA;Ou alors certains projets décident de se mettre en open source pour a href=&#34;https://github.com/KhiopsML&#34; title=&#34;Organisation GitHub de KhiopsML&#34;faire comme les concurrents et tout avoir public/a et sans vraiment de contributions venant de l&#39;extérieur, pour le moment, ce qui est dommage car la qualité du produit est là.&#xA;Ou juste pour montrer ce qu&#39;ils savent faire a href=&#34;https://github.com/NVlabs/instant-ngp&#34; title=&#34;Dépôt GitHub de instant-ngp de NVidia&#34;mais avec des licences ni libre ni open source/a, pour avoir quelques contributions mais juste avec le code source public. C&#39;est trompeur, mais correct.&#xA;Mais on a aussi des dépôts open source car a href=&#34;https://github.com/Orange-OpenSource/hurl&#34; title=&#34;Dépôt GitHub de Hurl&#34;une communauté s&#39;est formée autours de l&#39;outil/a, et là c&#39;est chouette.&#xA;Plus chouette qu&#39;exposer des projets a href=&#34;https://github.com/Decathlon?q=vitamin&amp;type=all&amp;language=&amp;sort=&#34; title=&#34;Dépôts GitHub de Vitamin, le design system de Décathlon&#34;comme des idesign system/i/a alors que les seuls utilisateurs pourraient être des filiales ou partenaires, qui se serviront gratuitement, plutôt que d&#39;être facturés.&#xA;&#xA;Bref... ce n&#39;est pas parce que le produit est joli sur la vitrine, bien placé en tête de gondole avec un emballage coloré qu&#39;il faut forcément sauter dessus. C&#39;est bien de regarder la date limite de consommation, les ingrédients, les excipients et les origines.&#xA;&#xA;h2Du coup.../h2&#xA;&#xA;Du coup, il n&#39;y a pas de bons ou de mauvais composants FLOSS.&#xA;Et non, cette réflexion n&#39;est pas a href=&#34;https://www.reddit.com/r/programmation/comments/1604ylh/lespiègesdecertainscomposantsopensource/jxo29eo/&#34; title=&#34;Commentaire haineux sur Reddit de Shalien93&#34;de la &#34;branlette intellectuelle&#34;/a, bien au contraire.&#xA;Certains composants sont d&#39;apparence plus fiables que d&#39;autres, il faut les juger par leur efficacité mais pas uniquement ceci dit.&#xA;Il faut rester prudent sur les licences altérées, bâtardes ou a href=&#34;https://speakerdeck.com/pylapp/licences-open-source-entre-guerre-de-clochers-et-radicalite&#34; title=&#34;Support de présentation sur les familles de licences FLOSES&#34;simplement sur leur nature intrinsèque/a. S&#39;intéresser à l’environnement, à l&#39;ambiance, aux icommits/i et au code source est une bonne chose également.&#xA;&#xA;Il faut aussi envisager le fait qu&#39;un projet finisse par mourir, que sa icore team/i abandonne, que le moteur s&#39;épuise. N&#39;attendez pas pour les soutenir. N&#39;attendez pas pour contribuer. N&#39;hésitez pas les soutenir s&#39;ils défendent des causes justes. L&#39;open source c&#39;est comme une kombucha : c&#39;est super de récupérer une souche mère pour faire vos boissons, mais c&#39;est mieux de partager vos souches filles à d&#39;autres personnes pour qu&#39;elles fassent pareil. À rester dans votre coin tout finira par pourrir et vous n&#39;en tirerez plus grands choses. Prenez, améliorez, partagez et profitez.&#xA;&#xA;Si vous voulez quelques pistes pour aborder les projets FLOSS, a href=&#34;https://speakerdeck.com/pylapp/comment-aborder-et-contribuer-sereinement-a-un-projet-open-source&#34; title=&#34;Support de rpésentation pour aborder des projets FLOSS&#34; je vous partage ce support documenté, factuel et juste/a.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/24/the-end.webp&#34; title=&#34;Projet GitHub archivé&#34; alt=&#34;Message GitHub indiquant que le projet a été archivé par son propriétaire et qu&#39;il est en lecture seule&#34; class=&#34;centerImage toBigImage&#34;&#xA;&#xA;--&#xA;iDernière mise à jour : mercredi 17 octobre 2023/i&#xA;iPrécédemment sur a href=&#34;https://paper.wf/pylapp&#34; title=&#34;Profil sur l&#39;instance paper.wf, plus disponible, compte supprimé&#34; alt=&#34;Profil sur l&#39;instance paper.wf, plus disponible, compte supprimé&#34;paper.wf/a&#xA;--&#xA;&#xA;Did you enjoy reading this blog?&#xD;&#xA;a href=&#34;https://pylapersonne.info/buymeacoffee&#34; title=&#34;Profile of pylapp in buymeacoffee.com&#34; aria-label=&#34;Go to buymeacoffee.com&#34;Give me a beer 🍺/a or use a href=&#34;https://pylapersonne.info/donate&#34; title=&#34;Page for support in pylapersonne.info web site&#34; aria-label=&#34;Use another way to support on pylapersonne.info website&#34;something else/a ❤️‍🔥&#xD;&#xA;Licensed under a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;CC-BY-SA 4.0/a.&#xD;&#xA;Opinions are my own.&#xD;&#xA;To contact me, feel free to choose a href=&#34;https://pylapersonne.info/menu&#34; title=&#34;Menu page of my web site with social networks and contact mediums&#34;the most suitable medium for you/a, or for example a href=&#34;https://framapiaf.org/@pylapp&#34; title=&#34;Mastodon profile&#34;Mastodon/a.]]&gt;</description>
      <content:encoded><![CDATA[<h1>Les pièges de certains composants open source</h1>

<p><i>🇫🇷 – dimanche 9 janvier 2022</i></p>

<p><b><i>Mots clés : <a href="https://write.as/pylapp/tag:opensource" class="hashtag"><span>#</span><span class="p-category">opensource</span></a>, <a href="https://write.as/pylapp/tag:FLOSS" class="hashtag"><span>#</span><span class="p-category">FLOSS</span></a>, <a href="https://write.as/pylapp/tag:GitHub" class="hashtag"><span>#</span><span class="p-category">GitHub</span></a>, <a href="https://write.as/pylapp/tag:licences" class="hashtag"><span>#</span><span class="p-category">licences</span></a>, <a href="https://write.as/pylapp/tag:social" class="hashtag"><span>#</span><span class="p-category">social</span></a></i></b></p>

<p>D&#39;ordinaire nous aimons utiliser des bibliothèques tierces dans nos projets, ces “librairies” que l&#39;on retrouve par exemple sur des forges logicielles publiques comme <em>GitHub</em> et <em>GitLab</em>. Rares sont les logiciels qui ne possèdent pas une once de <abbr title="Free Libre and Open Source Software">FLOSS </abbr>(<i>Free Libre and Open Source Software</i>) à l&#39;intérieur.
Le plus souvent, on retrouve dans chaque projet des composants FLOSS, que ce soit pour se faciliter la vie, écrire des tests unitaires ou gérer une base de données par exemple.
On a vite tendance à prendre l&#39;outil le plus connu, le plus répandu, ou à faire des réflexions trop rapides pour choisir ce dont on a besoin, et pourtant il y a des pièges à éviter.</p>

<h2>Tout le monde est juriste, évidement !</h2>

<p>Beaucoup (trop) d&#39;entre nous ne considèrent pas suffisamment la licence qui est appliquée à la libraire choisie ; par paresse intellectuelle, par pure fainéantise, par certitude de bien comprendre les licences, par oubli, ou par excès de confiance. On fait tous la boulette, et on en tire des leçons ensuite, ce n&#39;est pas si anormal quand encore aujourd&#39;hui dans les établissements de formation à l&#39;ingénierie logicielle ou “les écoles de codage” on en parle assez peu, ou pas assez, voire pas du tout. Merci les formations au rabais vendeuses de rêves laissant leurs apprenants se fracasser sur le mur de la réalité.</p>

<p>Toutefois, parmi les pièges dans lesquels chacun et chacune peuvent plonger, il y en a particulièrement qui sont beaux. Et grossiers. Et pourtant, beaucoup de personnes se font avoir, et ne finissent par réagir que lorsque le sujet est médiatisé. Avant de se jeter sur le dernier composant à la mode, regardons en détails les pièges, en commençant par les licences évidemment.</p>

<h3>Des clauses déloyales dans les licences</h3>

<p>Par exemple, il y a quelques années, on pouvait trouver les <i>frameworks</i> <em>React</em> de <em>Facebook / Meta</em> sous une curieuse licence <i>“BSD + Patents”</i>. Le truc, c&#39;est que cette licence possède des clauses relatives aux brevets (<a href="https://medium.com/@raulk/if-youre-a-startup-you-should-not-use-react-reflecting-on-the-bsd-patents-license-b049d4a67dd2" title="Article sur le site medium.com">une vague idée ici</a>). Si j&#39;exagère et grossis les choses, le fait de chercher des noises en justice à <em>Facebook</em> à l&#39;époque pouvait faire tomber le droit que vous aviez d&#39;utiliser ses cadriciels (j&#39;adore ce mot). Pot de terre contre pot de fer dans du béton armé, embêter <i>Big F</i> peut revenir à vous interdire d&#39;utiliser ses technos, donc à retirer beaucoup de produits. Une fois la chose médiatisée, finalement <em>Facebook</em> changea son fusil d&#39;épaule et <a href="https://www.freecodecamp.org/news/facebook-just-changed-the-license-on-react-heres-a-2-minute-explanation-why-5878478913b2/" title="Article sur le site freecodecoamp.org">utilisa la licence MIT</a>.</p>

<p>Bref, attention aux clauses déloyales des licences !</p>

<h3>Des changements radicaux de licences</h3>

<p>Récemment encore, c&#39;est <em>HashiCorp</em> qui changea brutalement la licence de son produit phare nommé <em>Terraform</em>, et l&#39;entreprise est dans son bon droit. Le passage de la licence <i>MPL 2.0</i> à la <i>Business Source License</i> a été fait avec fracas, <a href="https://www.hashicorp.com/blog/hashicorp-adopts-business-source-license" title="Blog de HashiCorp">justifié maladroitement par l&#39;entreprise</a> et <a href="https://opentf.org/" title="Site web de OpenTF">décrié par la communauté open source</a>. <em>MongoDB</em> a eu droit aussi auparavant à son concert de casseroles <a href="https://techcrunch.com/2018/10/16/mongodb-switches-up-its-open-source-license/" title="Article sur le site techcrunch.com">avec le passage à la SSPL</a>.
Pour aller plus loin, <a href="https://mariadb.com/fr/bsl-faq-adopting/" title="Article sur le site mariadb.com">MariaDB propose cette page de FAQ sur la BSL</a>. Benoit Sibaud (un chouette collègue chez Orange !) a rédigé et <a href="https://linuxfr.org/news/virevoltantes-valses-de-licences-libres-et-non-libres-dans-les-bases-de-donnees" title="Article sur le site linuxfr.org">diffusé un billet</a> abordant les “virevoltantes valses de licences libres et non libres dans les bases de données”, très instructif !
En d&#39;autres termes, attendez-vous à peut-être voir des revirement de situations dingues sur les licences appliquées !</p>

<p>Le truc, c&#39;est que quand bien même une entreprise décide d&#39;agir ainsi, elle reste tout de même légalement dans l&#39;obligation de satisfaire les demandes qui concernent les licences anciennement appliquées. Autrement dit, si à un instant T un composant C était sous une licence libre L (admettons GPL 3.0), mais que plus tard cette licence passe <a href="https://blog.zwindler.fr/2023/08/16/d-open-source-a-bullshit-licence-bsl/" title="Article sur le blog de zwindler.fr">à une bullshit licence BL</a>, si vous avez eu le composant sous licence L vous êtes en droit de demander les sources (si L l&#39;autorise évidement), même si elles ne sont pas accessibles publiquement. Bon courage donc.</p>

<p>On peut ainsi imaginer jouer la prudence, et se dire que si on utilise des composants FLOSS, dans le doute, au cas où, on pourrait garder une copie du code source. J&#39;apprécie beaucoup <a href="https://graphism.fr/comment-jai-sauvegarde-mon-web-sur-un-disque-dur/" title="Article sur le site graphism.fr">cet article de Geoffrey Dorme</a> qui vous donnera davantage de motivations à le faire. En plus cloner les dépôts Git d&#39;une organisation GitHub <a href="https://github.com/Orange-OpenSource/floss-toolbox/wiki/4.-Play-with-GitHub-CLI-(using-GH)#make-a-backup-of-organization-repositories" title="Page wiki d&#39;un dépôt sur GitHub">c&#39;est facile pour l&#39;instant</a>.</p>

<p>Imaginez maintenant, malgré les trahisons précédentes, que certaines technos soient si répandues qu&#39;elles en deviennent presque indispensables pour des entreprises, au hasard les <i>frameworks</i> comme <em>React</em>. Rien n&#39;empêche <em>Facebook / Meta</em> du jour au lendemain de changer la licence, de rendre l&#39;exploitation de l&#39;outil payante, et de monter un vrai <i>business model</i> dessus. Un magnifique coup à jouer maintenant que le place est faite dans l&#39;écosystème logiciel. Impossible ? C&#39;est vite oublier le ramdam lorsque <a href="https://www.imdeo.com/java-devient-payant/" title="Article sur imdeo.com">Oracle avait mis en place son JDK payant</a>.</p>

<p>Mais il y a d&#39;autres pièges plus gros encore...</p>

<h3>L&#39;ajout de clauses additionnelles</h3>

<p>Prenons par exemple une librairie Java bien connue, qui est utilisée en production : <em>Realm Java</em> (la situation a été corrigée depuis, mais a trainé un bon moment tout de même pour que ce soit notable).</p>

<p>À première vue, si on regarde le README vaguement, on voit ceci :</p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/24/realm.webp" title="Extrait du README" alt="Extrait du README annonçant que le composant est sous licence Apache 2.0" class="centerImage toBigImage"></p>

<p>On peut alors en déduire que le composant est sous licence open source <i>Apache 2.0</i>. Sauf que trop de gens s&#39;arrêtent là. Car que si on jette un œil au fichier de licence, on trouve certes des références à la licence <i>Apache 2.0</i>, mais aussi un autre élément d&#39;enfoiré : <i>l&#39;export compliance</i>.</p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/24/clause.webp" title="Extrait du README" alt="Extrait du README annonçant que le composant est sous licence Apache 2.0 et qu&#39;il y a une clause additionnelle" class="centerImage toBigImage"></p>

<p>Vous pouvez retrouver le diff du commit <a href="https://github.com/realm/realm-java/commit/64a7000af0d95d88bdaf8bfe4eb20fd0a6cf8875" title="Commit de changement de licence">sur GitHub</a>, je vous met ci-dessous le contenu scélérat de cette clause, qui rend la licence non conforme <a href="https://opensource.org/osd/" title="Site web de l&#39;Open Source Initiative">à la définition donnée par l&#39;<abbr title="Open Source Initiative">OSI</abbr></a>, donc plus open source du tout.</p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/24/details-clause.webp" title="Détails de la clause" alt="Clause indiquant que des éléments peuvent être soumis à la loi américaine et que si l&#39;entreprise, le pays ou une personne de la société est sur liste noire l&#39;usage du composant est prohibé" class="centerImage toBigImage"></p>

<p>Pour celles et ceux qui n&#39;ont plus assez de caféine dans le sang pour comprendre, voici un résumé : si on se retrouve sur une liste noire du gouvernement américain, que ce soit dans un pays, ou individuellement, ou dans une entreprise détenue par une personne dans cette liste noire, on ne peut pas utiliser ce produit.</p>

<p>En soit, quel est le soucis ?</p>

<p>Et bien le soucis est que l&#39;on peut avoir des applications critiques ou indispensables, ou son produit tout bêtement qui, si un jour le client, l&#39;éditeur, le pays, les actionnaires etc. sont dans le collimateur des États Unis d&#39;Amérique, peuvent être dégagées des boutiques d&#39;applications, avec toutes les conséquences que ça implique.</p>

<p>On peut espérer que ça n&#39;arrivera jamais, ceci dit l&#39;ère Trump a montré qu&#39;il ne fallait pas grands choses pour que des fous furieux mettent la pagaille à l&#39;échelle mondiale en interdisant l&#39;usage de produits. Et le contexte international actuel ne rassure pas non plus vis à vis de la Russie. Demandez leur avis aux iraniens, cubains, ukrainiens ou chinois.</p>

<p>Bref, dit autrement, quand vous utilisez une librairie FLOSS, regardez sur <em>GitHub</em> la section dédiée à la licence.
Si le texte <i>“View licence”</i> apparaît au lieu du nom de la licence, il y a deux cas de figure :
<ul><li>le texte a été modifié (souvent les copyrights) ou décoré faisant que GitHub s&#39;y perd ;</li>
<li>il y a du texte en plus dans le fichier. Ceci pouvant être des détails sur d&#39;autres licences appliquées ou d&#39;anciens contributeurs, ou des clauses additionnelles.</li></ul></p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/24/view-licence.webp" title="Affichage ambigu de GitHub" alt="Affichage des détails du projet GitHub indiquant peu d&#39;infos sur la licence" class="centerImage toSmallImage"></p>

<p>Et oui, tout ça en droit français est valable.</p>

<p>Mais où ailleurs peut-on se faire avoir ?</p>

<h2>La plaie de l&#39;excès de social dans les forges logicielles</h2>

<h3>Et si on regardait le nombre de commits ?</h3>

<p>Déjà, pour “évaluer” un composant FLOSS, on peut regarder par exemple la vie de son code source. Ainsi, si un projet a des <i>commits</i> faits régulièrement, on serait en droit de se dire qu&#39;il est toujours vivant. Toutefois la contraposée est fausse car on peut très bien avoir des projets FLOSS qui semblent “vivoter”, avec peu de <i>commits</i> réguliers mais qui fonctionnent très bien, tout simplement car le projet en lui-même peut être maintenu ponctuellement, discrètement, mais efficacement.</p>

<p>D&#39;ailleurs regarder la date et le nombre de <i>commits</i> est aussi une fausse bonne idée, car par exagération on pourrait croire qu&#39;un projet qui a beaucoup de commits est un projet de qualité, et fiable, ce qui est absurde. Dans la mesure où des outils comme <em>Git</em> permettent le <i>squashing</i>, les <i>merge commits</i> et le <i>rebasing</i>, on remarque bien que se fier uniquement à un historique de <i>commits</i> n&#39;est pas viable. De plus, doit-on vraiment prendre en compte les <i>commits</i> et <i>pull requests</i> ridicules qui arrivent lors du <a href="https://hacktoberfest.com/" title="Site web du Hacktoberfest">Hacktoberfest</a> quand celles et ceux qui les proposent veulent juste profiter du moment pour avoir un joli badge sur le profil <em>GitHub</em> par pur opportunisme ?</p>

<p>Est-ce que pour l&#39;exemple ci-dessous le projet est vivant ou mort ? On peut s&#39;y fier ou pas ? <a href="https://github.com/catdad/canvas-confetti" title="Dépôt GitHub du projet">Pour faire des confettis, c&#39;est suffisant ?</a></p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/24/confettis.webp" title="Branche par défaut d&#39;un dépôt GitHub permettant de faire des confettis" alt="Historique Git d&#39;un projet affiché sur GitHub montrant que le projet n&#39;a pas bougé au mieux depuis 10 mois, voire depuis des années" class="centerImage toBigImage"></p>

<h3>Et Si On RegArDaIt LeS LiKes eT LeS FoLlOwErS ?</h3>

<p>Les réseaux sociaux ont amené du pire dans <em>GitHub</em> avec les <i>“likes”</i> et les compteurs de <i>“followers”</i>.</p>

<p>Cet autre piège à éviter consiste à se contenter de regarder ces nombres de <i>stars</i> et de <i>forks</i> d&#39;un projet sur la forge logicielle que l&#39;on veut. Avec l&#39;avènement des réseaux sociaux, on veut <i>“liker”</i>, <i>“booster”</i>, <i>“up-voter”</i> ou <i>“starrer”</i> des projets que l&#39;on aime bien, ou que l&#39;on pourrait aimer, ou pour faire plaisir au gars derrière qu&#39;on connait. Mais en soit, ni le fonctionnel ni la qualité du projet ne sont par essence et par définition concernés. Il en est de même pour les <i>forks</i> ; il est courant de voir des utilisateurs en crééer juste... au cas où, pour grossir son profil <em>GitHub</em>, ou pour faire une <i>pull request</i> un jour ou pas. Surtout ou pas. Quand au nombre de <i>“followers”</i> du développeur principal, en quoi le fait qu&#39;il en ait 2 300 au moins soit rassurant ? Le personnage peut être tout à fait exécrable, pénible voire même adepte de la pizza avec des patates dessus, pourquoi afficher cette fausse notoriété qui n&#39;apporte rien ?</p>

<p>Est-ce que l&#39;exemple ci-dessous est un gros projet ? Un truc balèze ? Non, c&#39;est juste un programme affichant <a href="https://github.com/mtoyoda/sl" title="Dépôt GitHub du projet">un train à vapeur si on se trompe de commande (moi j&#39;adore)</a>.</p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/24/train.webp" title="Compteurs sociaux de GitHub pour le projet" alt="Compteurs sociaux du projet avec 386 forks et au moins 2 600 forks" class="centerImage toBigImage"></p>

<p>Oh, et puis, bien évidemment, on peut acheter des <i>“stars”</i> sur GitHub à prix réduit ! La plaie du social jusqu&#39;aux forges logicielles, et à portée de main. <a href="https://the-guild.dev/blog/judging-open-source-by-github-stars" title="Site web the-guild.dev">Cet article</a> est très instructif sur le sujet.</p>

<h2>Environnement et qualité, beau code ou infect projet</h2>

<h3>On regarde les issues et requests ?</h3>

<p>Un autre élément à considérer avec prudence est le nombre de <i>issues</i> et de <i>pull requests / merge requests</i>. En effet, un projet qui en possède beaucoup peut être un projet très vivant, comme aussi un projet qui est très à l&#39;abandon mais avec une base d&#39;utilisateurs réclamant des choses ou voulant contribuer sans personne derrière pour valider. Ou alors peut être victime de trolls, comme ce fut le cas pour <a href="https://github.com/twitter/the-algorithm/issues?q=is%3Aissue+is%3Aopen+elon+" title="Issues filtrées du dépôt">le dépôt contenant l&#39;algorithme de recommandations de Twitter</a>. Prudence donc si on ne regarde que ces éléments sans les contextualiser.</p>

<h3>On regarde les contributeurs ?</h3>

<p>Chose intéressante aussi à voir, les contributeurs, ces petites mains visibles fournissant un incroyable travail.</p>

<p>Si vous utilisez un composant FLOSS avec un faible nombre de contributeurs, il est possible que derrière ce projet il n&#39;y ait presque personne en dehors de quelques passionnés dévoués (bénévolement le plus souvent) à leur projet (pour la gloire plus que pour l&#39;argent). Il faut donc se demander si le fait que le projet repose sur un tout petit nombre de contributeurs est bloquant ou pas. Pour une librairie affichant de confettis c&#39;est peut-être un élément peu pertinent. Mais pour votre couche de chiffrement, est-ce une bonne idée de compter sur un seul péquin derrière ?</p>

<p>D&#39;ailleurs, question bête, est-ce que l&#39;on suppose que la source de vérité est... fiable ? Car pour être affichés comme contributeurs sur un projet <em>GitHub</em>, il faut apparaître à certains endroits dans les <i>commits</i>. <i>Quid</i> des personnes voulant rester anonymes ? Des personnes en <i>pair-programming</i> ? Ou d&#39;une organisation faisant que le mainteneur principal s&#39;acharne maladroitement à garder un historique <em>Git</em> propre et donc fait du copier/coller des <i>pull requests</i> mais en gardant à jour le fichier AUTHORS par honnêteté intellectuelle ? Ou des robots qui exécutent des tâches automatisées sur le dépôt et qui figurent dans les contributeurs ?</p>

<p>Ci-dessous un exemple, avec <a href="https://github.com/ReticentJohn/Amaroq" title="Dépôt GitHub">le projet Amaroq</a>. A-t-on vraiment 13 contributeurs ou 1 seul ? D&#39;ailleurs peut-on vraiment se contenter de mesurer l&#39;activité par le nombre de <i>commits</i> ? Non, évidemment.</p>

<table>
<tbody>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/24/amaroq-1.webp" title="13 contributeurs" alt="GitHub affichant les contributeurs, au nombre de 13" class="centerImage toBigImage"/>
</td>
</tr>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/24/amaroq-2.webp" title="1 seul gros actif finalement" alt="Détails des commits par contributeur montrant que finalement seulement un seul se démarque énormément" class="centerImage toBigImage"/>
</td>
</tr>
</tbody>
</table>

<p>En parlant de <i>commits</i> et des contributeurs, peut-on vraiment faire confiance aux contributions ? Il y a des projets FLOSS qui exigent des signatures cryptographiques des <i>commits</i> d&#39;une part, et que le <i>Developer Certificate of Origin</i> soit appliqué d&#39;autre part. Engager les responsabilités de chacun et s&#39;assurer que les <i>commits</i> soient intègres ne semble pas une mauvaise idée, mais a-t-on toutes et tous l&#39;habitude de le faire ? Non. Méconnaissance ou fainéantise ?</p>

<h3>La doc ?</h3>

<p>D&#39;ailleurs, on peut aussi regarder les échanges qui ont lieu dans les <i>issues</i>, les <em>Slack</em> ou <em>Mattermost</em>. Pour ce composant FLOSS qui vous intéresse, peut-être ne seriez-vous jamais amenés à échanger avec les mainteneurs derrière. Mais si vous voulez contribuer, êtes-vous prêts à dialoguer avec une équipe ayant une organisation pyramidale ? Ou concentrée sur un développeur quasi-messianique à qui tout le monde demande son avis et attend son accord ? Est-ce que l&#39;ambiance est délétère dans le projet ?</p>

<h3>On regarde le code source alors ?</h3>

<p>Par ailleurs, jetez un œil aussi au code source en lui-même.</p>

<p>Si vous avez un projet <em>iOS</em> écrit en <em>Swift</em>, avec uniquement des compétences en <em>Swift</em> dans votre équipe, seriez-vous prêt à soumettre des <i>pull requests</i> sur un composant écrit en bon vieux <em>Objective-C</em> à la papy ? Si une librairie <em>JavaScript</em> vous plait pour faire des jolies animations, ça vous tente vraiment de l&#39;utiliser sachant qu&#39;elle va tirer <em>jQuery</em> et que vous êtes fiers de vous en être débarrassés y&#39;a 2 ans ? Si le CERT signale de vulnérabilités critiques, et que le composant que vous voulez est concerné, comment et à quelle vitesse sont corrigées ces failles ? Il y en a certaines qui ne le sont toujours pas ? Et ils feront comment si le <a href="https://www.april.org/cyber-resilience-act-le-futur-du-logiciel-libre-en-suspend-en-attendant-le-trilogue" title="Article de l&#39;April">Cyber Resilience Act</a> passe ? Si on voit plusieurs <i>issues</i> sur des vulnérabilités non corrigées, remontées par <em>Dependabot</em> ou <em>Snyk</em> peut-on nécessairement en conclure que ce composant est dangereux alors qu&#39;un autre sans de telles choses le serait moins même si finalement il pourrait n&#39;avoir en place aucun outil de détection ?</p>

<h3>Les gens c&#39;est bien aussi non ?</h3>

<p>Truc rigolo, vous connaissez le développeur / grand chef derrière le composant que vous voulez ? Car peut-être <a href="https://www.numerama.com/politique/565643-pourquoi-notepad-est-conspue-par-des-militants-chinois-depuis-sa-derniere-mise-a-jour.html" title="Article sur Numerama">politiquement engagé</a> ou <a href="https://www.developpez.com/actu/58442/Linus-Torvalds-critique-pour-sa-violence-verbale-la-tension-monte-entre-les-developpeurs-et-le-pere-du-Kernel-Linux/" title="Article sur developez.com">susceptible, ou impulsif, ou infect</a>, et qu&#39;il va saboter son projet ou pas, quitte à se faire virer de <em>GitHub</em>. Impossible ? <a href="https://www.developpez.com/actu/330165/GitHub-restaure-le-compte-du-dev-qui-a-intentionnellement-corrompu-ses-bibliotheques-certains-developpeurs-estiment-que-la-suspension-etait-deraisonnable-puisqu-il-s-agissait-de-son-propre-code/" title="Article sur developez.com">Voyez plutôt</a>.</p>

<h3>D&#39;ailleurs, pourquoi c&#39;est là ?</h3>

<p>Ce n&#39;est pas parce que le code est sur <em>GitHub</em>, avec une licence libre ou open source que forcément cela a été fait avec une volonté de respecter <a href="https://speakerdeck.com/pylapp/licences-open-source-entre-guerre-de-clochers-et-radicalite" title="Support de présentation de conférence sur les licences libres, open source et éthiques">la philosophie de l&#39;un ou la méthodologie de développement de l&#39;autre</a>.</p>

<p>Par exemple le code a très bien pu être publié juste pour des raisons de transparence totalement opportuniste comme <a href="https://github.com/twitter/the-algorithm" title="Dépôt GitHub de l&#39;algorithme de recommandation de Twitter">l&#39;algorithme de recommandation de Twitter, maintenant X</a>.
Ou alors le code est publié car il embarque un composant sous licence à copyleft fort qui implique une mise à disposition du code source.
D&#39;autres projets peuvent être open source <a href="https://github.com/CovidTrackerFr" title="Organisation GitHub de CovidTracker">pour attirer des contributeurs très rapidement et aussi éviter toute polémique en pleine période de crise</a>, tant sur le manque de fonctionnalités que sur le fonctionnement, sans pour autant avoir des perspectives sur le long terme.
Ou alors certains projets décident de se mettre en open source pour <a href="https://github.com/KhiopsML" title="Organisation GitHub de KhiopsML">faire comme les concurrents et tout avoir public</a> et sans vraiment de contributions venant de l&#39;extérieur, pour le moment, ce qui est dommage car la qualité du produit est là.
Ou juste pour montrer ce qu&#39;ils savent faire <a href="https://github.com/NVlabs/instant-ngp" title="Dépôt GitHub de instant-ngp de NVidia">mais avec des licences ni libre ni open source</a>, pour avoir quelques contributions mais juste avec le code source public. C&#39;est trompeur, mais correct.
Mais on a aussi des dépôts open source car <a href="https://github.com/Orange-OpenSource/hurl" title="Dépôt GitHub de Hurl">une communauté s&#39;est formée autours de l&#39;outil</a>, et là c&#39;est chouette.
Plus chouette qu&#39;exposer des projets <a href="https://github.com/Decathlon?q=vitamin&amp;type=all&amp;language=&amp;sort=" title="Dépôts GitHub de Vitamin, le design system de Décathlon">comme des <i>design system</i></a> alors que les seuls utilisateurs pourraient être des filiales ou partenaires, qui se serviront gratuitement, plutôt que d&#39;être facturés.</p>

<p>Bref... ce n&#39;est pas parce que le produit est joli sur la vitrine, bien placé en tête de gondole avec un emballage coloré qu&#39;il faut forcément sauter dessus. C&#39;est bien de regarder la date limite de consommation, les ingrédients, les excipients et les origines.</p>

<h2>Du coup...</h2>

<p>Du coup, il n&#39;y a pas de bons ou de mauvais composants FLOSS.
Et non, cette réflexion n&#39;est pas <a href="https://www.reddit.com/r/programmation/comments/1604ylh/les_pi%C3%A8ges_de_certains_composants_open_source/jxo29eo/" title="Commentaire haineux sur Reddit de Shalien93">de la “branlette intellectuelle”</a>, bien au contraire.
Certains composants sont d&#39;apparence plus fiables que d&#39;autres, il faut les juger par leur efficacité mais pas uniquement ceci dit.
Il faut rester prudent sur les licences altérées, bâtardes ou <a href="https://speakerdeck.com/pylapp/licences-open-source-entre-guerre-de-clochers-et-radicalite" title="Support de présentation sur les familles de licences FLOSES">simplement sur leur nature intrinsèque</a>. S&#39;intéresser à l’environnement, à l&#39;ambiance, aux <i>commits</i> et au code source est une bonne chose également.</p>

<p>Il faut aussi envisager le fait qu&#39;un projet finisse par mourir, que sa <i>core team</i> abandonne, que le moteur s&#39;épuise. N&#39;attendez pas pour les soutenir. N&#39;attendez pas pour contribuer. N&#39;hésitez pas les soutenir s&#39;ils défendent des causes justes. L&#39;open source c&#39;est comme une kombucha : c&#39;est super de récupérer une souche mère pour faire vos boissons, mais c&#39;est mieux de partager vos souches filles à d&#39;autres personnes pour qu&#39;elles fassent pareil. À rester dans votre coin tout finira par pourrir et vous n&#39;en tirerez plus grands choses. Prenez, améliorez, partagez et profitez.</p>

<p>Si vous voulez quelques pistes pour aborder les projets FLOSS, <a href="https://speakerdeck.com/pylapp/comment-aborder-et-contribuer-sereinement-a-un-projet-open-source" title="Support de rpésentation pour aborder des projets FLOSS"> je vous partage ce support documenté, factuel et juste</a>.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/24/the-end.webp" title="Projet GitHub archivé" alt="Message GitHub indiquant que le projet a été archivé par son propriétaire et qu&#39;il est en lecture seule" class="centerImage toBigImage"></p>

<p>—
<i>Dernière mise à jour : mercredi 17 octobre 2023</i>
<i>Précédemment sur <a href="https://paper.wf/pylapp" title="Profil sur l&#39;instance paper.wf, plus disponible, compte supprimé">paper.wf</a>
—</p>

<p>Did you enjoy reading this blog?
<a href="https://pylapersonne.info/buymeacoffee" title="Profile of pylapp in buymeacoffee.com">Give me a beer 🍺</a> or use <a href="https://pylapersonne.info/donate" title="Page for support in pylapersonne.info web site">something else</a> ❤️‍🔥
Licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a>.
Opinions are my own.
To contact me, feel free to choose <a href="https://pylapersonne.info/menu" title="Menu page of my web site with social networks and contact mediums">the most suitable medium for you</a>, or for example <a href="https://framapiaf.org/@pylapp" title="Mastodon profile">Mastodon</a>.</p>
]]></content:encoded>
      <guid>https://write.as/pylapp/les-pieges-de-certains-composants-open-source</guid>
      <pubDate>Thu, 24 Aug 2023 12:58:51 +0000</pubDate>
    </item>
    <item>
      <title>GitHub et les alertes Dependabot</title>
      <link>https://write.as/pylapp/github-et-les-alertes-dependabot?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1GitHub et les alertes Dependabot/h1&#xA;&#xA;i🇫🇷 – dimanche 24 juillet 2022/i&#xA;&#xA;biMots clés : #GitHub, #Dependabot, #alertes, #vulnérabilités, #CVE/i/b&#xA;&#xA;h2Un peu de contexte/h2&#xA;&#xA;    Au cas où vous ne le sauriez pas, emGitHub/em propose plusieurs outils qui concernent les fuites de données (emleaks/em) et les vulnérabilités (emflaws/em).&#xA;Par exemple, a href=&#34;https://www.zdnet.com/article/github-now-scans-for-secret-leaks-in-push-workflows/&#34;assez récemment/a, emGitHub/em a mis en place un service de détection de leaks avec notamment deux volets : un basé sur des a href=&#34;https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning&#34;patterns pour les dépôts publics/a, et un autre plus complet pour a href=&#34;https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security&#34;l&#39;édition Enterprise Cloud/a.&#xA;&#xA;    Depuis plus longtemps, emGitHub/em peut afficher les alertes a href=&#34;https://github.com/dependabot&#34;Dependabot/a, à savoir s&#39;il existe des emflaws/em sur des dépendances du projet, et cette fonctionnalité est gratuite et efficace !&#xA;&#xA;h2Dependabot/h2&#xA;&#xA;    En effet, en haut de votre dépôt, parfois cette bannière peut s&#39;afficher. Et dans ce cas, il n&#39;y a pas d&#39;excuse pour aller voir ce qu&#39;il se passe. Juste un bouton sur lequel cliquer. À savoir qu&#39;il faut être membre du projet et authentifié sur emGitHub/em pour voir ces alertes. C&#39;est assez logique, autant éviter d&#39;exposer à n&#39;importe qui que l&#39;on a une passoire dans le projet.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/19/banneer.png&#34; title=&#34;Une bannière d&#39;alerte Dependabot&#34; alt=&#34;Une bannière d&#39;alerte Dependabot indiquant que des vulnérabilités ont été trouvées dans les dépendances&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;    Ainsi, en allant voir les choses de plus près, on peut tomber sur ce genre d&#39;énumération de potentiels ennuis. Dès le début du parcours, on distingue plusieurs éléments pertinents, dont le niveau de sévérité, un titre plus ou moins explicite, la dépendance concernée et le fichier traité. J&#39;adore emNPM/em et emNode.js/em pour leur lot d&#39;alertes de vulnérabilités, on retrouve souvent les mêmes plateformes et environnements qui exposent autant de dépendances trouées, et ce n&#39;est pas forcément surprenant ou anormal.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/19/liste.png&#34; title=&#34;Liste d&#39;alertes Dependabot&#34; alt=&#34;Une liste d&#39;alertes Dependabot affichant les niveaux de sévérité et les dépendances incriminées&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;    Ainsi, en choisissant une alerte, on accède à plusieurs données intéressantes dont la sévérité, la référence CVE, les versions concernées, et le cas d&#39;exploitation de cette vulnérabilité. C&#39;est très instructif et ça me parait complet pour le néophyte que je suis ! Bref, en cas d&#39;alerte, on a assez de billes en main pour corriger.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/19/details.png&#34; title=&#34;Détails d&#39;une alerte Dependabot&#34; alt=&#34;Détails d&#39;une alerte Dependabot avec les références CVE, une description technique de comment exploiter la faille et les versions incriminées&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;    Du coup, comment faire pour ne rien rater de ces alertes ? Comment configurer mon dépôt allez-vous me dire ?&#xA;&#xA;h2Configurer son dépôt/h2&#xA;&#xA;    Première chose à savoir : il faut être... administrateur de son dépôt. Je ne comprends pas la logique, la gestion des droits sur emGitHub/em étant toujours aussi grossière. Pourquoi devoir être administrateur, et donc avoir tous les droits, juste pour gérer les alertes ou s&#39;y abonner ?&#xA;&#xA;    Ensuite, allez faire un tour dans les réglages du dépôt pour ajouter nominativement les personnes qui seront notifiées en cas d&#39;alertes. C&#39;est idiot, mais de base, personne n&#39;est ajouté. Donc une alerte sur un dépôt peu actif peut très bien apparaitre sur emGitHub/em, mais personne ne sera courant. Bref, ajoutez dans la section i&#34;Access to alerts&#34;/i les membres de votre projet.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/19/acces.png&#34; title=&#34;Définition des accès&#34; alt=&#34;Définition des accès avec un champ de saisie de texte pour ajouter des personnes&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;    Ensuite, jetez un œil à la section i&#34;Code security and analysis&#34;/i. Il y a plusieurs options à activer comme les alertes emDependabot/em (pas certain que ce soit activé par défaut) et aussi la possibilité d&#39;ouvrir des pull requests à chaque alerte pour corriger la situation. Pas d&#39;excuse, même pour les flemmards !&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/19/configuration.png&#34; title=&#34;Configuration des outils par dépôt&#34; alt=&#34;Configuration des outils par dépôt avec plusieurs boutons&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h1Configurer son compte GitHub/h1&#xA;&#xA;    Enfin, allez faire un tour sur les réglages de votre compte emGitHub/em, en commençant par la section i&#34;Notification&#34;/i où vous pouvez vous abonner à des notifications de diverses formes.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/19/alertes.png&#34; title=&#34;Configuration des alertes et notifications par compte GitHub&#34; alt=&#34;Configuration des alertes et notifications par compte GitHub avec plusieurs boutons&#34;/&#xA;&#xA;    Dernière chose, rendez-vous dans la section i&#34;Code security and analysis&#34;/i, et activez les options ci-dessous. Oui, cela ressemble beaucoup à un volet de configuration pour les dépôts, je n&#39;ai pas encore testé les différences, surement un niveau de précision (dépôt uniquement ou tous les dépôts du comptes) différent.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/19/security.png&#34; title=&#34;Configuration des derniers éléments par compte GitHub&#34; alt=&#34;Configuration des derniers éléments par compte GitHub avec plusieurs boutons&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;h2Bref/h2&#xA;&#xA;    Plus d&#39;excuse maintenant pour laisser vos comptes GitHub et dépôts seuls, abandonnés devant ces vagues de vulnérabilités pouvant compromettre le projet et bien plus encore.&#xA;En 5 minutes (et je suis large),  les choses sont configurées, et le minimum proposé par GitHub dans sa forme gratuite parait déjà acceptable.&#xA; &#xA;    De plus, posez-vous la question suivante : si des dégâts venaient à être provoqués à cause d&#39;une faille non corrigée, sur quelle tête les ennuis vont tomber ?&#xA;D&#39;autant plus que plus ça tombe de haut, plus ça fait mal en bas 🤯.&#xA;Pour avoir discuté avec des développeurs lors de conférences et meetups, dans certaines entreprises (au moins deux ESN dont je tairais les noms, juste dire que l&#39;une respecte la règle des A et l&#39;autre fait partie des CASSOS), il est prévu dans le contrat de travail que c&#39;est la responsabilité pénale du salarié développeur qui est engagée.&#xA;&#xA;    Raison de plus pour signer vos commits (histoire de vous dédouaner en cas d&#39;ennuis et d&#39;envoyer la patate chaude dans la friteuse), tout en vérifiant que tout est bien configuré avec emDependabot/em, et que des secrets ne sont pas divulgués !&#xA;&#xA;Bref, sortez couverts !&#xA;&#xA;--&#xA;iDernière mise à jour : mardi 26 juillet 2022/i&#xA;iPrécédemment sur a href=&#34;https://paper.wf/pylapp&#34; title=&#34;Profil sur l&#39;instance paper.wf, plus disponible, compte supprimé&#34; alt=&#34;Profil sur l&#39;instance paper.wf, plus disponible, compte supprimé&#34;paper.wf/a&#xA;--&#xA;&#xA;Did you enjoy reading this blog?&#xD;&#xA;a href=&#34;https://pylapersonne.info/buymeacoffee&#34; title=&#34;Profile of pylapp in buymeacoffee.com&#34; aria-label=&#34;Go to buymeacoffee.com&#34;Give me a beer 🍺/a or use a href=&#34;https://pylapersonne.info/donate&#34; title=&#34;Page for support in pylapersonne.info web site&#34; aria-label=&#34;Use another way to support on pylapersonne.info website&#34;something else/a ❤️‍🔥&#xD;&#xA;Licensed under a href=&#34;https://creativecommons.org/licenses/by-sa/4.0/&#34;CC-BY-SA 4.0/a.&#xD;&#xA;Opinions are my own.&#xD;&#xA;To contact me, feel free to choose a href=&#34;https://pylapersonne.info/menu&#34; title=&#34;Menu page of my web site with social networks and contact mediums&#34;the most suitable medium for you/a, or for example a href=&#34;https://framapiaf.org/@pylapp&#34; title=&#34;Mastodon profile&#34;Mastodon/a.]]&gt;</description>
      <content:encoded><![CDATA[<h1>GitHub et les alertes Dependabot</h1>

<p><i>🇫🇷 – dimanche 24 juillet 2022</i></p>

<p><b><i>Mots clés : <a href="https://write.as/pylapp/tag:GitHub" class="hashtag"><span>#</span><span class="p-category">GitHub</span></a>, <a href="https://write.as/pylapp/tag:Dependabot" class="hashtag"><span>#</span><span class="p-category">Dependabot</span></a>, <a href="https://write.as/pylapp/tag:alertes" class="hashtag"><span>#</span><span class="p-category">alertes</span></a>, <a href="https://write.as/pylapp/tag:vuln%C3%A9rabilit%C3%A9s" class="hashtag"><span>#</span><span class="p-category">vulnérabilités</span></a>, <a href="https://write.as/pylapp/tag:CVE" class="hashtag"><span>#</span><span class="p-category">CVE</span></a></i></b></p>

<h2>Un peu de contexte</h2>

<p>    Au cas où vous ne le sauriez pas, <em>GitHub</em> propose plusieurs outils qui concernent les fuites de données (<em>leaks</em>) et les vulnérabilités (<em>flaws</em>).
Par exemple, <a href="https://www.zdnet.com/article/github-now-scans-for-secret-leaks-in-push-workflows/">assez récemment</a>, <em>GitHub</em> a mis en place un service de détection de leaks avec notamment deux volets : un basé sur des <a href="https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning">patterns pour les dépôts publics</a>, et un autre plus complet pour <a href="https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security">l&#39;édition Enterprise Cloud</a>.</p>

<p>    Depuis plus longtemps, <em>GitHub</em> peut afficher les alertes <a href="https://github.com/dependabot">Dependabot</a>, à savoir s&#39;il existe des <em>flaws</em> sur des dépendances du projet, et cette fonctionnalité est gratuite et efficace !</p>

<h2>Dependabot</h2>

<p>    En effet, en haut de votre dépôt, parfois cette bannière peut s&#39;afficher. Et dans ce cas, il n&#39;y a pas d&#39;excuse pour aller voir ce qu&#39;il se passe. Juste un bouton sur lequel cliquer. À savoir qu&#39;il faut être membre du projet et authentifié sur <em>GitHub</em> pour voir ces alertes. C&#39;est assez logique, autant éviter d&#39;exposer à n&#39;importe qui que l&#39;on a une passoire dans le projet.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/19/banneer.png" title="Une bannière d&#39;alerte Dependabot" alt="Une bannière d&#39;alerte Dependabot indiquant que des vulnérabilités ont été trouvées dans les dépendances" class="centerImage toBigImage"/></p>

<p>    Ainsi, en allant voir les choses de plus près, on peut tomber sur ce genre d&#39;énumération de potentiels ennuis. Dès le début du parcours, on distingue plusieurs éléments pertinents, dont le niveau de sévérité, un titre plus ou moins explicite, la dépendance concernée et le fichier traité. J&#39;adore <em>NPM</em> et <em>Node.js</em> pour leur lot d&#39;alertes de vulnérabilités, on retrouve souvent les mêmes plateformes et environnements qui exposent autant de dépendances trouées, et ce n&#39;est pas forcément surprenant ou anormal.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/19/liste.png" title="Liste d&#39;alertes Dependabot" alt="Une liste d&#39;alertes Dependabot affichant les niveaux de sévérité et les dépendances incriminées" class="centerImage toBigImage"/></p>

<p>    Ainsi, en choisissant une alerte, on accède à plusieurs données intéressantes dont la sévérité, la référence CVE, les versions concernées, et le cas d&#39;exploitation de cette vulnérabilité. C&#39;est très instructif et ça me parait complet pour le néophyte que je suis ! Bref, en cas d&#39;alerte, on a assez de billes en main pour corriger.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/19/details.png" title="Détails d&#39;une alerte Dependabot" alt="Détails d&#39;une alerte Dependabot avec les références CVE, une description technique de comment exploiter la faille et les versions incriminées" class="centerImage toBigImage"/></p>

<p>    Du coup, comment faire pour ne rien rater de ces alertes ? Comment configurer mon dépôt allez-vous me dire ?</p>

<h2>Configurer son dépôt</h2>

<p>    Première chose à savoir : il faut être... administrateur de son dépôt. Je ne comprends pas la logique, la gestion des droits sur <em>GitHub</em> étant toujours aussi grossière. Pourquoi devoir être administrateur, et donc avoir tous les droits, juste pour gérer les alertes ou s&#39;y abonner ?</p>

<p>    Ensuite, allez faire un tour dans les réglages du dépôt pour ajouter nominativement les personnes qui seront notifiées en cas d&#39;alertes. C&#39;est idiot, mais de base, personne n&#39;est ajouté. Donc une alerte sur un dépôt peu actif peut très bien apparaitre sur <em>GitHub</em>, mais personne ne sera courant. Bref, ajoutez dans la section <i>“Access to alerts”</i> les membres de votre projet.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/19/acces.png" title="Définition des accès" alt="Définition des accès avec un champ de saisie de texte pour ajouter des personnes" class="centerImage toBigImage"/></p>

<p>    Ensuite, jetez un œil à la section <i>“Code security and analysis”</i>. Il y a plusieurs options à activer comme les alertes <em>Dependabot</em> (pas certain que ce soit activé par défaut) et aussi la possibilité d&#39;ouvrir des pull requests à chaque alerte pour corriger la situation. Pas d&#39;excuse, même pour les flemmards !</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/19/configuration.png" title="Configuration des outils par dépôt" alt="Configuration des outils par dépôt avec plusieurs boutons" class="centerImage toBigImage"/></p>

<h1>Configurer son compte GitHub</h1>

<p>    Enfin, allez faire un tour sur les réglages de votre compte <em>GitHub</em>, en commençant par la section <i>“Notification”</i> où vous pouvez vous abonner à des notifications de diverses formes.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/19/alertes.png" title="Configuration des alertes et notifications par compte GitHub" alt="Configuration des alertes et notifications par compte GitHub avec plusieurs boutons"/></p>

<p>    Dernière chose, rendez-vous dans la section <i>“Code security and analysis”</i>, et activez les options ci-dessous. Oui, cela ressemble beaucoup à un volet de configuration pour les dépôts, je n&#39;ai pas encore testé les différences, surement un niveau de précision (dépôt uniquement ou tous les dépôts du comptes) différent.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/19/security.png" title="Configuration des derniers éléments par compte GitHub" alt="Configuration des derniers éléments par compte GitHub avec plusieurs boutons" class="centerImage toBigImage"/></p>

<h2>Bref</h2>

<p>    Plus d&#39;excuse maintenant pour laisser vos comptes GitHub et dépôts seuls, abandonnés devant ces vagues de vulnérabilités pouvant compromettre le projet et bien plus encore.
En 5 minutes (et je suis large),  les choses sont configurées, et le minimum proposé par GitHub dans sa forme gratuite parait déjà acceptable.</p>

<p>    De plus, posez-vous la question suivante : si des dégâts venaient à être provoqués à cause d&#39;une faille non corrigée, sur quelle tête les ennuis vont tomber ?
D&#39;autant plus que plus ça tombe de haut, plus ça fait mal en bas 🤯.
Pour avoir discuté avec des développeurs lors de conférences et meetups, dans certaines entreprises (au moins deux ESN dont je tairais les noms, juste dire que l&#39;une respecte la règle des A et l&#39;autre fait partie des CASSOS), il est prévu dans le contrat de travail que c&#39;est la responsabilité pénale du salarié développeur qui est engagée.</p>

<p>    Raison de plus pour signer vos commits (histoire de vous dédouaner en cas d&#39;ennuis et d&#39;envoyer la patate chaude dans la friteuse), tout en vérifiant que tout est bien configuré avec <em>Dependabot</em>, et que des secrets ne sont pas divulgués !</p>

<p>Bref, sortez couverts !</p>

<p>—
<i>Dernière mise à jour : mardi 26 juillet 2022</i>
<i>Précédemment sur <a href="https://paper.wf/pylapp" title="Profil sur l&#39;instance paper.wf, plus disponible, compte supprimé">paper.wf</a>
—</p>

<p>Did you enjoy reading this blog?
<a href="https://pylapersonne.info/buymeacoffee" title="Profile of pylapp in buymeacoffee.com">Give me a beer 🍺</a> or use <a href="https://pylapersonne.info/donate" title="Page for support in pylapersonne.info web site">something else</a> ❤️‍🔥
Licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a>.
Opinions are my own.
To contact me, feel free to choose <a href="https://pylapersonne.info/menu" title="Menu page of my web site with social networks and contact mediums">the most suitable medium for you</a>, or for example <a href="https://framapiaf.org/@pylapp" title="Mastodon profile">Mastodon</a>.</p>
]]></content:encoded>
      <guid>https://write.as/pylapp/github-et-les-alertes-dependabot</guid>
      <pubDate>Wed, 17 May 2023 11:10:40 +0000</pubDate>
    </item>
  </channel>
</rss>