<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>pylapp</title>
    <link>https://write.as/pylapp/</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 02:59:30 +0000</pubDate>
    <item>
      <title>What&#39;s new SwiftUI?</title>
      <link>https://write.as/pylapp/whats-new-swiftui?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1What&#39;s new SwiftUI?/h1&#xA;&#xA;i🇺🇸 – Last update: Monday, January, 12th 2026/i&#xA;&#xA;biKeywords: #Swift, #SwiftUI, #iOS, #iOSDev, #Apple/i/b&#xA;&#xA;Here are some summaries of main news about SwiftUI, just to keep them in mind and list (more detailed) sources.&#xA;A lof of this content is written thanks to the awesome work of iHacking with Swift/i. If you consider supporting this publication, a href=&#34;https://www.hackingwithswift.com/sponsor&#34; title=&#34;Website of Hacking with Swift&#34;prefer supporting them instead/a.&#xA;&#xA;You can find a href=&#34;https://xcodereleases.com/&#34; title=&#34;Website listing Xcode versions and SDK&#34;Xcode details here/a, and also a href=&#34;https://write.as/pylapp/whats-new-swift&#34; title=&#34;Publication on my blog about Swift versions&#34;Swift details API here/a.&#xA;&#xA;h2iOS 26 / Xcode 26.0 / Swift 6.2 (2025)/h2&#xA;&#xA;emWebView/em can be populated by remote sites (and also local HTML) with WebKit update.&#xA;&#xA;emRich text editing/em is available with emAttributedString/em as bding to let users write text with weights etc.&#xA;&#xA;emSF Symbols/em got animations to draw themselves&#xA;&#xA;And also other improvements with emTabView/em and components for Liquid Glass&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-embed-web-content-using-webview&#34; title=&#34;About WebView&#34;hackingwithswift.com (WebView)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-rich-text-editing-with-textview-and-attributedstring&#34; title=&#34;About rich text edition&#34;hackingwithswift.com (rich text)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-make-sf-symbols-draw-themselves&#34; title=&#34;SF Symbols drawing themselves&#34;hackingwithswift.com (SF Symbols)/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/278/whats-new-in-swiftui-for-ios-26&#34; title=&#34;Web site of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2iOS 18 / Xcode 16.0 / Swift 6.0 (2024)/h2&#xA;&#xA;emView on main actor/em, thus not needed anymore to add em@MainActor/em on views protocols properties.&#xA;&#xA;emPresentationSizing/em protocol helps to create our own sizes for views.&#xA;&#xA;emonGeometryChange()/em modifier lets us track when a view&#39;s frame, size or safe area insets change, and also emonScrollGeometryChange()/em for emScrollView/em.&#xA;&#xA;emTabView has now dedicated Tab children/em, but it could bring failures for old code on iPadOS.&#xA;&#xA;emAccessiblity label and hint/em have modifiers to define them as views.&#xA;&#xA;emTab bar/em can be floating&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-control-the-size-of-presented-views&#34; title=&#34;About PresentationSizing&#34;hackingwithswift.com (PresentationSizing)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-detect-when-the-size-or-position-of-a-view-changes&#34; title=&#34;About onGeometryChange()&#34;hackingwithswift.com (onGeometryChange)/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/270/whats-new-in-swiftui-for-ios-18&#34; title=&#34;Web site of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2iOS 17 / Xcode 15.0 / Swift 5.9 (2023)/h2&#xA;&#xA;emScroll view/em has been improved.&#xA;&#xA;emDrawing and animations/em have been improved, and emSF Symbols/em can be animated easily.&#xA;&#xA;emIn-app purchases/em can be displayed easily and in simple fashion with SwiftUI thanks to dedicated views ready to be used.&#xA;&#xA;emsensoryFeedback()/em is available for haptics.&#xA;&#xA;emContentUnavailableView/em is here to tell the user that no content is available.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-in-app-purchases-in-swiftui&#34; title=&#34;About in-app purchases&#34;hackingwithswift.com (in-app purchases)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-haptic-effects-using-sensory-feedback&#34; title=&#34;About sensoryFeedback&#34;hackingwithswift.com (sensoryFeedback)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-tell-the-user-that-no-content-is-available&#34; title=&#34;About ContentUnavailableView&#34;hackingwithswift.com (ContentUnavailableView)/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/260/whats-new-in-swiftui-for-ios-17&#34; title=&#34;Web site of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2iOS 16 / Xcode 14.0 / Swift 5.7 (2022)/h2&#xA;&#xA;emBottom sheet/em presentation has been improved with empresentationDetents()/em view modifier.&#xA;&#xA;emTap location/em on view is easier to get.&#xA;&#xA;emShareLink/em view makes it easy to share any kind of data from the app as long as it conforms to the emTransferable/em protocol.&#xA;&#xA;emrequestReview (StoreKit)/em allows users to rate the app.&#xA;&#xA;emPasteButton/em can be used to let the user paste data into the app if emTransferable/em.&#xA;&#xA;emNavigationStack/em is here! With this new view we can for example implement more easily some navigation patterns like emrouter pattern/em so as to have the navigation less stucked to the UI.&#xA;&#xA;emLocalizedStringResource/em is also available. It will ease the use of resources needed to be localized in a more general and abstract way than the emLocalizedStringKey/em. This is interesting when the type inference fails to parse some strings as working keys.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-let-users-share-content-using-the-system-share-sheet&#34; title=&#34;About ShareLink&#34;hackingwithswift.com (ShareLink)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-ask-the-user-to-review-your-app&#34; title=&#34;About requestReview&#34;hackingwithswift.com (requestReview)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-let-the-user-paste-data-into-your-app&#34; title=&#34;About PasteButton&#34;hackingwithswift.com (PasteButton)/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/250/whats-new-in-swiftui-for-ios-16&#34; title=&#34;Web site of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2iOS 15 / Xcode 13.0 / Swift 5.5 (2021)/h2&#xA;&#xA;emrefreshable()/em brings pull-to-refresh behaviour for lists!&#xA;&#xA;emsearchable()/em brings search bar to filter data!&#xA;&#xA;emswipeActions()/em for list row are a reality!&#xA;&#xA;emAsyncImage/em view can load remote image from a URL!&#xA;&#xA;emToolbar/em can be added to the keyboard.&#xA;&#xA;emtask()/em let run asynchronous task when a view is shown.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-enable-pull-to-refresh&#34; title=&#34;About pull to refresh&#34;hackingwithswift.com (pull to refresh)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-a-search-bar-to-filter-your-data&#34; title=&#34;About search filter&#34;hackingwithswift.com (search filter)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-custom-swipe-action-buttons-to-a-list-row&#34; title=&#34;About swipe actions filter&#34;hackingwithswift.com (swipe actions)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-load-a-remote-image-from-a-url&#34; title=&#34;About AsyncImage&#34;hackingwithswift.com (AsyncImage)/a&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/how-to-run-an-asynchronous-task-when-a-view-is-shown&#34; title=&#34;About task()&#34;hackingwithswift.com (task)/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/235/whats-new-in-swiftui-for-ios-15&#34; title=&#34;Website of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2iOS 14 / Xcode 12.0 / Swift 5.3 (2020)/h2&#xA;&#xA;em@StateObject/em is available to create a reference type inside one of our views and make sure it stays alive for use in that view and others (like children views). Usefull for example for view models we fear to loose or have destroyed somewhere somehow.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-stateobject-property-wrapper&#34; title=&#34;About @StateObject&#34;hackingwithswift.com (@StateObject)/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/221/whats-new-in-swiftui-for-ios-14&#34; title=&#34;Web site of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2iOS 13 / Xcode 11.0 / Swift 5.1 (2019)/h2&#xA;&#xA;Don&#39;t fu****g use SwiftUI with iOS 13. It&#39;s a nightmare. A hell of bugs, performances issues and glitches.&#xA;&#xA;h3Sources/h3&#xA;&#xA;Me and my tears.&#xA;&#xA;--&#xA;iPosted on Monday, May 12th 2025/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>What&#39;s new SwiftUI?</h1>

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

<p><b><i>Keywords: <a href="https://write.as/pylapp/tag:Swift" class="hashtag"><span>#</span><span class="p-category">Swift</span></a>, <a href="https://write.as/pylapp/tag:SwiftUI" class="hashtag"><span>#</span><span class="p-category">SwiftUI</span></a>, <a href="https://write.as/pylapp/tag:iOS" class="hashtag"><span>#</span><span class="p-category">iOS</span></a>, <a href="https://write.as/pylapp/tag:iOSDev" class="hashtag"><span>#</span><span class="p-category">iOSDev</span></a>, <a href="https://write.as/pylapp/tag:Apple" class="hashtag"><span>#</span><span class="p-category">Apple</span></a></i></b></p>

<p>Here are some summaries of main news about SwiftUI, just to keep them in mind and list (more detailed) sources.
A lof of this content is written thanks to the awesome work of <i>Hacking with Swift</i>. If you consider supporting this publication, <a href="https://www.hackingwithswift.com/sponsor" title="Website of Hacking with Swift">prefer supporting them instead</a>.</p>

<p>You can find <a href="https://xcodereleases.com/" title="Website listing Xcode versions and SDK">Xcode details here</a>, and also <a href="https://write.as/pylapp/whats-new-swift" title="Publication on my blog about Swift versions">Swift details API here</a>.</p>

<h2>iOS 26 / Xcode 26.0 / Swift 6.2 (2025)</h2>

<p><em>WebView</em> can be populated by remote sites (and also local HTML) with WebKit update.</p>

<p><em>Rich text editing</em> is available with <em>AttributedString</em> as bding to let users write text with weights etc.</p>

<p><em>SF Symbols</em> got animations to draw themselves</p>

<p>And also other improvements with <em>TabView</em> and components for Liquid Glass</p>

<h3>Sources</h3>
<ul><li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-embed-web-content-using-webview" title="About WebView">hackingwithswift.com (WebView)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-use-rich-text-editing-with-textview-and-attributedstring" title="About rich text edition">hackingwithswift.com (rich text)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-make-sf-symbols-draw-themselves" title="SF Symbols drawing themselves">hackingwithswift.com (SF Symbols)</a></li>
<li><a href="https://www.hackingwithswift.com/articles/278/whats-new-in-swiftui-for-ios-26" title="Web site of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>iOS 18 / Xcode 16.0 / Swift 6.0 (2024)</h2>

<p><em>View on main actor</em>, thus not needed anymore to add <em>@MainActor</em> on views protocols properties.</p>

<p><em>PresentationSizing</em> protocol helps to create our own sizes for views.</p>

<p><em>onGeometryChange()</em> modifier lets us track when a view&#39;s frame, size or safe area insets change, and also <em>onScrollGeometryChange()</em> for <em>ScrollView</em>.</p>

<p><em>TabView has now dedicated Tab children</em>, but it could bring failures for old code on iPadOS.</p>

<p><em>Accessiblity label and hint</em> have modifiers to define them as views.</p>

<p><em>Tab bar</em> can be floating</p>

<h3>Sources</h3>
<ul><li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-control-the-size-of-presented-views" title="About PresentationSizing">hackingwithswift.com (PresentationSizing)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-detect-when-the-size-or-position-of-a-view-changes" title="About onGeometryChange()">hackingwithswift.com (onGeometryChange)</a></li>
<li><a href="https://www.hackingwithswift.com/articles/270/whats-new-in-swiftui-for-ios-18" title="Web site of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>iOS 17 / Xcode 15.0 / Swift 5.9 (2023)</h2>

<p><em>Scroll view</em> has been improved.</p>

<p><em>Drawing and animations</em> have been improved, and <em>SF Symbols</em> can be animated easily.</p>

<p><em>In-app purchases</em> can be displayed easily and in simple fashion with SwiftUI thanks to dedicated views ready to be used.</p>

<p><em>sensoryFeedback()</em> is available for haptics.</p>

<p><em>ContentUnavailableView</em> is here to tell the user that no content is available.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-in-app-purchases-in-swiftui" title="About in-app purchases">hackingwithswift.com (in-app purchases)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-haptic-effects-using-sensory-feedback" title="About sensoryFeedback">hackingwithswift.com (sensoryFeedback)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-tell-the-user-that-no-content-is-available" title="About ContentUnavailableView">hackingwithswift.com (ContentUnavailableView)</a></li>
<li><a href="https://www.hackingwithswift.com/articles/260/whats-new-in-swiftui-for-ios-17" title="Web site of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>iOS 16 / Xcode 14.0 / Swift 5.7 (2022)</h2>

<p><em>Bottom sheet</em> presentation has been improved with <em>presentationDetents()</em> view modifier.</p>

<p><em>Tap location</em> on view is easier to get.</p>

<p><em>ShareLink</em> view makes it easy to share any kind of data from the app as long as it conforms to the <em>Transferable</em> protocol.</p>

<p><em>requestReview (StoreKit)</em> allows users to rate the app.</p>

<p><em>PasteButton</em> can be used to let the user paste data into the app if <em>Transferable</em>.</p>

<p><em>NavigationStack</em> is here! With this new view we can for example implement more easily some navigation patterns like <em>router pattern</em> so as to have the navigation less stucked to the UI.</p>

<p><em>LocalizedStringResource</em> is also available. It will ease the use of resources needed to be localized in a more general and abstract way than the <em>LocalizedStringKey</em>. This is interesting when the type inference fails to parse some strings as working keys.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-let-users-share-content-using-the-system-share-sheet" title="About ShareLink">hackingwithswift.com (ShareLink)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-ask-the-user-to-review-your-app" title="About requestReview">hackingwithswift.com (requestReview)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-let-the-user-paste-data-into-your-app" title="About PasteButton">hackingwithswift.com (PasteButton)</a></li>
<li><a href="https://www.hackingwithswift.com/articles/250/whats-new-in-swiftui-for-ios-16" title="Web site of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>iOS 15 / Xcode 13.0 / Swift 5.5 (2021)</h2>

<p><em>refreshable()</em> brings pull-to-refresh behaviour for lists!</p>

<p><em>searchable()</em> brings search bar to filter data!</p>

<p><em>swipeActions()</em> for list row are a reality!</p>

<p><em>AsyncImage</em> view can load remote image from a URL!</p>

<p><em>Toolbar</em> can be added to the keyboard.</p>

<p><em>task()</em> let run asynchronous task when a view is shown.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-enable-pull-to-refresh" title="About pull to refresh">hackingwithswift.com (pull to refresh)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-a-search-bar-to-filter-your-data" title="About search filter">hackingwithswift.com (search filter)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-add-custom-swipe-action-buttons-to-a-list-row" title="About swipe actions filter">hackingwithswift.com (swipe actions)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-load-a-remote-image-from-a-url" title="About AsyncImage">hackingwithswift.com (AsyncImage)</a></li>
<li><a href="https://www.hackingwithswift.com/quick-start/swiftui/how-to-run-an-asynchronous-task-when-a-view-is-shown" title="About task()">hackingwithswift.com (task)</a></li>
<li><a href="https://www.hackingwithswift.com/articles/235/whats-new-in-swiftui-for-ios-15" title="Website of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>iOS 14 / Xcode 12.0 / Swift 5.3 (2020)</h2>

<p><em>@StateObject</em> is available to create a reference type inside one of our views and make sure it stays alive for use in that view and others (like children views). Usefull for example for view models we fear to loose or have destroyed somewhere somehow.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-stateobject-property-wrapper">hackingwithswift.com (@StateObject)</a></li>
<li><a href="https://www.hackingwithswift.com/articles/221/whats-new-in-swiftui-for-ios-14" title="Web site of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>iOS 13 / Xcode 11.0 / Swift 5.1 (2019)</h2>

<p>Don&#39;t fu****g use SwiftUI with iOS 13. It&#39;s a nightmare. A hell of bugs, performances issues and glitches.</p>

<h3>Sources</h3>

<p>Me and my tears.</p>

<p>—
<i>Posted on Monday, May 12th 2025</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/whats-new-swiftui</guid>
      <pubDate>Mon, 12 May 2025 13:20:24 +0000</pubDate>
    </item>
    <item>
      <title>What&#39;s new Swift?</title>
      <link>https://write.as/pylapp/whats-new-swift?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1What&#39;s new Swift?/h1&#xA;&#xA;i🇺🇸  – Last update: Wednesday, January, 14th 2026/i&#xA;&#xA;biKeywords: #Swift, #Swiftlang, #iOS, #iOSDev, #Apple/i/b&#xA;&#xA;Here are some summaries of main news about Swift, just to keep them in mind and list (more detailed) sources.&#xA;A lof of this content is written thanks to the awesome work of iHacking with Swift/i. If you consider supporting this publication, a href=&#34;https://www.hackingwithswift.com/sponsor&#34; title=&#34;Website of Hacking with Swift&#34;prefer supporting them instead/a.&#xA;&#xA;You can find a href=&#34;https://xcodereleases.com/&#34; title=&#34;Website listing Xcode versions and SDK&#34;Xcode details here/a, and also a href=&#34;https://write.as/pylapp/whats-new-swiftui&#34; title=&#34;Publication on my blog about SwiftUI and iOS&#34;SwiftUI details here/a.&#xA;&#xA;h2Swift 6.2 / Xcode 26 (2025)/h2&#xA;&#xA;emControl default actor isolation inference/em with emdefault-isolation MainActor/em flag to move to single-thread paradigm a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0466-control-default-actor-isolation.md&#34; title=&#34;GitHub specification&#34;(SE-0466)/a.&#xA;&#xA;emRaw identifiers/em range updated with more symbols to use for naming  a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0451-escaped-identifiers.md&#34; title=&#34;GitHub specification&#34;(SE-0451)/a!&#xA;&#xA;emDefault value for string interpolation/em making debug and strings processing a bit smoother a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0477-default-interpolation-values.md&#34; title=&#34;GitHub specification&#34;(SE-0477)/a.&#xA;&#xA;emCollections can be enumerated/em, finaly a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0459-enumerated-collection.md&#34; title=&#34;GitHub specification&#34;(SE-0459)/a!&#xA;&#xA;emMethod and initializer key paths/em, to manipulate, store, call and use functions in another way a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0479-method-and-initializer-keypaths.md&#34; title=&#34;GitHub specification&#34;(SE-0479)/a.&#xA;&#xA;emunsafe/em keyword to use whe strict memory safety is enabled and code marked em@unsafe/em a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0458-strict-memory-safety.md&#34; title=&#34;GitHub specification&#34;(SE-0458)/a.&#xA;&#xA;emBacktrace/em API to ease functions debuging with call stacks a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0419-backtrace-api.md&#34;(SE-0419)/a.&#xA;&#xA;emweak let/em comes finaly to improve emweak var/em a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0481-weak-let.md&#34; title=&#34;GitHub specification&#34;(SE-0481)/a&#xA;&#xA;emTransactional observation of values/em with a new emObservations struct/em which provides an emAsyncSequence/em that emits new values whenever any em@Observable/em data changes a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0475-observed.md&#34; title=&#34;GitHub specification&#34;(SE-0475)/a.&#xA;&#xA;emGlobal-actor isolated conformances/em making it possible to restrict a protocol conformance to a specific global actor a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0470-isolated-conformances.md&#34; title=&#34;GitHub specification&#34;(SE-0470)/a.&#xA;&#xA;emStarting tasks synchronously from caller context/em, i.e. create emTask/em to run immediately a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0472-task-start-synchronously-on-caller-context.md&#34; title=&#34;GitHub specification&#34;(SE-0472)/a.&#xA;&#xA;emRun nonisolated async functions on the caller&#39;s actor by default/em except if em@concurrent/em is used a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0461-async-function-isolation.md&#34; title=&#34;GitHub specificaation&#34;(SE-0461)/a.&#xA;&#xA;emIsolated synchronous deinit/em to be able to call emdeinit/em isolted to actors a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0371-isolated-synchronous-deinit.md&#34; title=&#34;GitHub specification&#34;(SE-0371)/a.&#xA;&#xA;emwithTaskPriorityEscalationHandler/em for task priority escalation a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0462-task-priority-escalation-apis.md&#34; title=&#34;GitHub specification&#34;(SE-0462)/a.&#xA;&#xA;Now tasks can have emnames/em to ease debugging for example a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0469-task-names.md&#34; title=&#34;GitHub specification&#34;(SE-0469)/a.&#xA;&#xA;emFixed-size array with InlineArray/em, a mutable array but with fixed size a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0453-vector.md&#34; title=&#34;GitHub specification&#34;(SE-0453)/a.&#xA;&#xA;And also improvements for regex with symbols assertions a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0448-regex-lookbehind-assertions.md&#34; title=&#34;GitHub specification&#34;(SE-0448)/a, emexpect(processExitsWith:)/em with Swift Testing a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0008-exit-tests.md&#34; title=&#34;GitHub specification&#34;(ST-0008)/a, attachments for tests with Swift testing a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0009-attachments.md&#34; title=&#34;GitHub specification&#34;(ST-0009)/a and condition traits for tests a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0010-evaluate-condition.md&#34; title=&#34;GitHub specification&#34;(ST-0010)/a, emnon-escapable types/em a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0446-non-escapable.md&#34; title=&#34;GitHub specification&#34;(SE-0446)/a, yielding accessors (emmutate, borrow/em) a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0474-yielding-accessors.md&#34; title=&#34;GitHub specification&#34;(SE-0474)/a, and more things.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.swift.org/blog/swift-6.2-released/&#34; title=&#34;Website of Swift&#34;swift.org/blog/a&#xA;&lt;a href=&#34;&#xA;https://www.hackingwithswift.com/articles/277/whats-new-in-swift-6-2&#34; title=&#34;Website of Hacking with Swift&#34;  hackingwithswift/a&#xA;&#xA;h2Swift 6.1 / Xcode 16.3 (2025)/h2&#xA;&#xA;iConcurrency/i has been updated. Now the emnonisolated/em keyword, used to indicate that an API is safe to call from any concurrent context, can be used for types and extensions ; it prevents for example to add the keyword for every properties or methods in extensions.&#xA;&#xA;emTrailing comas/em can be added at the end of tuples, argument lists and string interpolations for example ; not only in collection literals.&#xA;&#xA;emPackage traits/em can now be defined inside emPackage.swift/em definitions so as to define configurations for specific environments like WASM.&#xA;&#xA;emSwift Testing/em has been improved with emcustom traits/em to perform logic before or after tests (e.g. for set-up and tear-down actions). Test scopes can be customized, for example for mocks usages. em\#expect(throws:)/em and em\#require(throws:)/em have been improved also.&#xA;&#xA;emSwift-DocC/em provides better management of references of methods with same signatures.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.swift.org/blog/swift-6.1-released/&#34; title=&#34;Website of Swift&#34;swift.org/blog/a&#xA;a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0007-test-scoping-traits.md&#34; title=&#34;GitHub specification&#34;ST-0007 (GitHub)/a&#xA;&#xA;h2Swift 6 / Xcode 16.0 (2024)/h2&#xA;&#xA;emConcurrency/em comes! Now, if enabled, we can use the power of emconcurrency/em and its new API to ensure the source code is thread-safe with improved memory safety and no more data races.&#xA;&#xA;emTyped throws/em are now available. Methods in their signatures can define which types of errors are thrown, and it brings better clarity and consistancy.&#xA;&#xA;emOwnership/em provided with Swift 5.9 has a bit been improved and can be applied to generics.&#xA;&#xA;emC++ interoperability has been improved/em with support of emmove-only types, virtual methods, default arguments/em and also more emstandard library type/em.&#xA;&#xA;emEmbedded Swift/em is included as preview with Swift 6 ; this toolchain supports ARM and RISC-V.&#xA;&#xA;em128-bit integers/em are now managed in their signed and unsigned variants.&#xA;&#xA;em@DebugDescription/em is now available for custom LLDB summaries ; this new macro let specify LLDB type summaries for our own types in the code to ease debugging.&#xA;&#xA;emFoundation/em has been refactored with some API converted to Swift like emJSONDecoder, URL, Calendar, FileManager, ProcessInfo, FormatStyle, ParseStrategy, Predicate, JSON5/em.&#xA;&#xA;emSwift Testing/em exists! Expressive API, more simple to use compared to XCTest, scales large codebases with features like parameterization.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.swift.org/blog/announcing-swift-6/&#34; title=&#34;Website of Swift&#34;swift.org/blog/a&#xA;a href=&#34;https://www.swift.org/migration/documentation/migrationguide/&#34; title=&#34;Migration guide of Swift website&#34;swift.org/migration/a&#xA;a href=&#34;https://github.com/swiftlang/swift-testing&#34; title=&#34;GitHub project for swift-testing&#34;github.com/swift-testing/a &#xA;&#xA;h2Swift 5.9 / Xcode 15.0 (2023)/h2&#xA;&#xA;emMacros/em can be used to reduce repetitive boilerplate and work just like built-in language features. They are based on emSwiftSyntax/em.&#xA;&#xA;emParameter packs/em with generics syntax allow to define one method signature with an undefined list of parameters, without upper limits, even for returned values.&#xA;&#xA;emOwnership/em is featured. The new emconsume/em operator tells Swift to deinitialize a variable and transfer its contents without copying it. The emborrow/em operator comes too, and emstructs/em and emenums/em can be defined as emnoncopyable/em. The emdiscard/em keyword is also here for consuming methods of elements having a emdeinit/em to bypass.&#xA;&#xA;emSyntax/em has been improved with the emif/em and emswitch/em more modernized in their available syntaxes.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.swift.org/blog/swift-5.9-released/&#34;title=&#34;Websie of Swift&#34;swift.org/blog/a&#xA;a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0377-parameter-ownership-modifiers.md&#34; title=&#34;Swift specification&#34;ST-0377 (GitHub)/a&#xA;a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0390-noncopyable-structs-and-enums.md&#34; title=&#34;Swift specification&#34;ST-0390 (GitHub)/a&#xA;a href=&#34;https://github.com/swiftlang/swift-evolution/blob/main/proposals/0380-if-switch-expressions.md&#34; title=&#34;Swift specification&#34;ST-0380 (GitHub)/a&#xA;a href=&#34;https://gayeugur.medium.com/consume-operator-in-swift-0348aeef1561&#34; title=&#34;Publication on Medium about consume operator&#34;gayeugur.medium.com/a&#xA;a href=&#34;https://github.com/swiftlang/swift-syntax&#34; title=&#34;swift-synax project&#34;github.com/swiftlang/swift-syntax/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/258/whats-new-in-swift-5-9&#34; title=&#34;Hacking with Swift website&#34;hackingwithswift.com/a&#xA;&#xA;h2Swift 5.8 / Xcode 14.3 (2023)/h2&#xA;&#xA;It prepares for the Swift 6 big changes and its upcoming features. Developer experience has been improved.&#xA;&#xA;em@backDeployed/em is available and makes possible to allow new API to be used in older versions of frameworks by writing code for a function into app&#39;s binary then performing a runtime check.&#xA;&#xA;emimplicit self for weak self captures/em is a reality and makes for example emguard let else/em syntax smoother.&#xA;&#xA;It is also possible to have functions with generic parameter which can be emoptional/em on the parameter definition.&#xA;&#xA;emCollection downcasts in cast patterns/em are supported and can be useful for example with emswitch case let as/em pattern.&#xA;&#xA;h3Resources/h3&#xA;&#xA;a href=&#34;https://www.swift.org/blog/swift-5.8-released/&#34; title=&#34;Website of Swift&#34;swift.org/blog/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/256/whats-new-in-swift-5-8&#34; title=&#34;Website of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2Swift 5.7 / Xcode 14.0 (2022)/h2&#xA;&#xA;emif let/em for unwrapping optionals is now shorter.&#xA;&#xA;emRegex/em has been enriched a lot with DSL for example.&#xA;&#xA;emOpaque parameter declarations and result types/em can be managed with the use of emsome/em keyword in parameter declarations.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.swift.org/blog/swift-5.7-released/&#34; title=&#34;Website of Swift&#34;swift.org/blog/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/249/whats-new-in-swift-5-7&#34; title=&#34;Website of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2Swift 5.6 / Xcode 13.3 (2022)/h2&#xA;&#xA;emany/em keyword is available to mark existential types, which is different than opaque types with emsome/em keyword. The emany/em keyword is here to bring optimization when objects are used through their abstract types making the runtime use the emdynamic dispatch/em process for optimization. Thus this process won&#39;t be used.&#xA;&#xA;emType placeholder with _ symbol/em can be called to let the compiler define types of variables (in, for example, declarations).&#xA;&#xA;emConcurrency/em has been enriched to prepare Swift 6 with the em@preconcurrency/em macro and other improvements with em@Sendable/em and em@MainActor/em.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.swift.org/blog/swift-5.6-released/&#34; title=&#34;Website of Swift&#34;swift.org/blog/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/247/whats-new-in-swift-5-6&#34; title=&#34;Website of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;h2Swift 5.5 / Xcode 13.0 (2021)/h2&#xA;&#xA;emasync/await/em and emasync/throws/em are now real! Here come asynchronous functions, allowing to run complex asynchronous code without for example needing to use in some cases emCombine/em. emTask/em is also shipped.&#xA;&#xA;emAsyncSequence/em come with emasync/await/em also.&#xA;&#xA;emActors/em are also embedded, i.e. kind of classes that are safe to use in concurrent environments with their content accessible by a single thread at any given time.&#xA;&#xA;emSendable/em are here to define if data can safely be transferred to another thread.&#xA;&#xA;emlazy/em has been improved to be used in local contexts and write stored properties only calculated when first used ; interesting for heavy objects.&#xA;&#xA;h3Sources/h3&#xA;&#xA;a href=&#34;https://www.swift.org/blog/swift-5.5-released/&#34; title=&#34;Website of Swift&#34;swift.org/blog/a&#xA;a href=&#34;https://www.hackingwithswift.com/articles/233/whats-new-in-swift-5-5&#34; title=&#34;Website of Hacking with Swift&#34;hackingwithswift.com/a&#xA;&#xA;--&#xA;iPosted on Monday, May 12th 2025/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>What&#39;s new Swift?</h1>

<p><i>🇺🇸  – Last update: Wednesday, January, 14th 2026</i></p>

<p><b><i>Keywords: <a href="https://write.as/pylapp/tag:Swift" class="hashtag"><span>#</span><span class="p-category">Swift</span></a>, <a href="https://write.as/pylapp/tag:Swiftlang" class="hashtag"><span>#</span><span class="p-category">Swiftlang</span></a>, <a href="https://write.as/pylapp/tag:iOS" class="hashtag"><span>#</span><span class="p-category">iOS</span></a>, <a href="https://write.as/pylapp/tag:iOSDev" class="hashtag"><span>#</span><span class="p-category">iOSDev</span></a>, <a href="https://write.as/pylapp/tag:Apple" class="hashtag"><span>#</span><span class="p-category">Apple</span></a></i></b></p>

<p>Here are some summaries of main news about Swift, just to keep them in mind and list (more detailed) sources.
A lof of this content is written thanks to the awesome work of <i>Hacking with Swift</i>. If you consider supporting this publication, <a href="https://www.hackingwithswift.com/sponsor" title="Website of Hacking with Swift">prefer supporting them instead</a>.</p>

<p>You can find <a href="https://xcodereleases.com/" title="Website listing Xcode versions and SDK">Xcode details here</a>, and also <a href="https://write.as/pylapp/whats-new-swiftui" title="Publication on my blog about SwiftUI and iOS">SwiftUI details here</a>.</p>

<h2>Swift 6.2 / Xcode 26 (2025)</h2>

<p><em>Control default actor isolation inference</em> with <em>default-isolation MainActor</em> flag to move to single-thread paradigm <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0466-control-default-actor-isolation.md" title="GitHub specification">(SE-0466)</a>.</p>

<p><em>Raw identifiers</em> range updated with more symbols to use for naming  <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0451-escaped-identifiers.md" title="GitHub specification">(SE-0451)</a>!</p>

<p><em>Default value for string interpolation</em> making debug and strings processing a bit smoother <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0477-default-interpolation-values.md" title="GitHub specification">(SE-0477)</a>.</p>

<p><em>Collections can be enumerated</em>, finaly <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0459-enumerated-collection.md" title="GitHub specification">(SE-0459)</a>!</p>

<p><em>Method and initializer key paths</em>, to manipulate, store, call and use functions in another way <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0479-method-and-initializer-keypaths.md" title="GitHub specification">(SE-0479)</a>.</p>

<p><em>unsafe</em> keyword to use whe strict memory safety is enabled and code marked <em>@unsafe</em> <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0458-strict-memory-safety.md" title="GitHub specification">(SE-0458)</a>.</p>

<p><em>Backtrace</em> API to ease functions debuging with call stacks <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0419-backtrace-api.md">(SE-0419)</a>.</p>

<p><em>weak let</em> comes finaly to improve <em>weak var</em> <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0481-weak-let.md" title="GitHub specification">(SE-0481)</a></p>

<p><em>Transactional observation of values</em> with a new <em>Observations struct</em> which provides an <em>AsyncSequence</em> that emits new values whenever any <em>@Observable</em> data changes <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0475-observed.md" title="GitHub specification">(SE-0475)</a>.</p>

<p><em>Global-actor isolated conformances</em> making it possible to restrict a protocol conformance to a specific global actor <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0470-isolated-conformances.md" title="GitHub specification">(SE-0470)</a>.</p>

<p><em>Starting tasks synchronously from caller context</em>, i.e. create <em>Task</em> to run immediately <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0472-task-start-synchronously-on-caller-context.md" title="GitHub specification">(SE-0472)</a>.</p>

<p><em>Run nonisolated async functions on the caller&#39;s actor by default</em> except if <em>@concurrent</em> is used <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0461-async-function-isolation.md" title="GitHub specificaation">(SE-0461)</a>.</p>

<p><em>Isolated synchronous deinit</em> to be able to call <em>deinit</em> isolted to actors <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0371-isolated-synchronous-deinit.md" title="GitHub specification">(SE-0371)</a>.</p>

<p><em>withTaskPriorityEscalationHandler</em> for task priority escalation <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0462-task-priority-escalation-apis.md" title="GitHub specification">(SE-0462)</a>.</p>

<p>Now tasks can have <em>names</em> to ease debugging for example <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0469-task-names.md" title="GitHub specification">(SE-0469)</a>.</p>

<p><em>Fixed-size array with InlineArray</em>, a mutable array but with fixed size <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0453-vector.md" title="GitHub specification">(SE-0453)</a>.</p>

<p>And also improvements for regex with symbols assertions <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0448-regex-lookbehind-assertions.md" title="GitHub specification">(SE-0448)</a>, <em>expect(processExitsWith:)</em> with Swift Testing <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0008-exit-tests.md" title="GitHub specification">(ST-0008)</a>, attachments for tests with Swift testing <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0009-attachments.md" title="GitHub specification">(ST-0009)</a> and condition traits for tests <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0010-evaluate-condition.md" title="GitHub specification">(ST-0010)</a>, <em>non-escapable types</em> <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0446-non-escapable.md" title="GitHub specification">(SE-0446)</a>, yielding accessors (<em>mutate, borrow</em>) <a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0474-yielding-accessors.md" title="GitHub specification">(SE-0474)</a>, and more things.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.swift.org/blog/swift-6.2-released/" title="Website of Swift">swift.org/blog</a></li>
<li><a href="https://www.hackingwithswift.com/articles/277/whats-new-in-swift-6-2" title="Website of Hacking with Swift">hackingwithswift</a></li></ul>

<h2>Swift 6.1 / Xcode 16.3 (2025)</h2>

<p><i>Concurrency</i> has been updated. Now the <em>nonisolated</em> keyword, used to indicate that an API is safe to call from any concurrent context, can be used for types and extensions ; it prevents for example to add the keyword for every properties or methods in extensions.</p>

<p><em>Trailing comas</em> can be added at the end of tuples, argument lists and string interpolations for example ; not only in collection literals.</p>

<p><em>Package traits</em> can now be defined inside <em>Package.swift</em> definitions so as to define configurations for specific environments like WASM.</p>

<p><em>Swift Testing</em> has been improved with <em>custom traits</em> to perform logic before or after tests (e.g. for set-up and tear-down actions). Test scopes can be customized, for example for mocks usages. <em>#expect(throws:)</em> and <em>#require(throws:)</em> have been improved also.</p>

<p><em>Swift-DocC</em> provides better management of references of methods with same signatures.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.swift.org/blog/swift-6.1-released/" title="Website of Swift">swift.org/blog</a></li>
<li><a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0007-test-scoping-traits.md" title="GitHub specification">ST-0007 (GitHub)</a></li></ul>

<h2>Swift 6 / Xcode 16.0 (2024)</h2>

<p><em>Concurrency</em> comes! Now, if enabled, we can use the power of <em>concurrency</em> and its new API to ensure the source code is thread-safe with improved memory safety and no more data races.</p>

<p><em>Typed throws</em> are now available. Methods in their signatures can define which types of errors are thrown, and it brings better clarity and consistancy.</p>

<p><em>Ownership</em> provided with Swift 5.9 has a bit been improved and can be applied to generics.</p>

<p><em>C++ interoperability has been improved</em> with support of <em>move-only types, virtual methods, default arguments</em> and also more <em>standard library type</em>.</p>

<p><em>Embedded Swift</em> is included as preview with Swift 6 ; this toolchain supports ARM and RISC-V.</p>

<p><em>128-bit integers</em> are now managed in their signed and unsigned variants.</p>

<p><em>@DebugDescription</em> is now available for custom LLDB summaries ; this new macro let specify LLDB type summaries for our own types in the code to ease debugging.</p>

<p><em>Foundation</em> has been refactored with some API converted to Swift like <em>JSONDecoder, URL, Calendar, FileManager, ProcessInfo, FormatStyle, ParseStrategy, Predicate, JSON5</em>.</p>

<p><em>Swift Testing</em> exists! Expressive API, more simple to use compared to XCTest, scales large codebases with features like parameterization.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.swift.org/blog/announcing-swift-6/" title="Website of Swift">swift.org/blog</a></li>
<li><a href="https://www.swift.org/migration/documentation/migrationguide/" title="Migration guide of Swift website">swift.org/migration</a></li>
<li><a href="https://github.com/swiftlang/swift-testing" title="GitHub project for swift-testing">github.com/swift-testing</a></li></ul>

<h2>Swift 5.9 / Xcode 15.0 (2023)</h2>

<p><em>Macros</em> can be used to reduce repetitive boilerplate and work just like built-in language features. They are based on <em>SwiftSyntax</em>.</p>

<p><em>Parameter packs</em> with generics syntax allow to define one method signature with an undefined list of parameters, without upper limits, even for returned values.</p>

<p><em>Ownership</em> is featured. The new <em>consume</em> operator tells Swift to deinitialize a variable and transfer its contents without copying it. The <em>borrow</em> operator comes too, and <em>structs</em> and <em>enums</em> can be defined as <em>noncopyable</em>. The <em>discard</em> keyword is also here for consuming methods of elements having a <em>deinit</em> to bypass.</p>

<p><em>Syntax</em> has been improved with the <em>if</em> and <em>switch</em> more modernized in their available syntaxes.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.swift.org/blog/swift-5.9-released/" title="Websie of Swift">swift.org/blog</a></li>
<li><a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0377-parameter-ownership-modifiers.md" title="Swift specification">ST-0377 (GitHub)</a></li>
<li><a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0390-noncopyable-structs-and-enums.md" title="Swift specification">ST-0390 (GitHub)</a></li>
<li><a href="https://github.com/swiftlang/swift-evolution/blob/main/proposals/0380-if-switch-expressions.md" title="Swift specification">ST-0380 (GitHub)</a></li>
<li><a href="https://gayeugur.medium.com/consume-operator-in-swift-0348aeef1561" title="Publication on Medium about consume operator">gayeugur.medium.com</a></li>
<li><a href="https://github.com/swiftlang/swift-syntax" title="swift-synax project">github.com/swiftlang/swift-syntax</a></li>
<li><a href="https://www.hackingwithswift.com/articles/258/whats-new-in-swift-5-9" title="Hacking with Swift website">hackingwithswift.com</a></li></ul>

<h2>Swift 5.8 / Xcode 14.3 (2023)</h2>

<p>It prepares for the Swift 6 big changes and its upcoming features. Developer experience has been improved.</p>

<p><em>@backDeployed</em> is available and makes possible to allow new API to be used in older versions of frameworks by writing code for a function into app&#39;s binary then performing a runtime check.</p>

<p><em>implicit self for weak self captures</em> is a reality and makes for example <em>guard let else</em> syntax smoother.</p>

<p>It is also possible to have functions with generic parameter which can be <em>optional</em> on the parameter definition.</p>

<p><em>Collection downcasts in cast patterns</em> are supported and can be useful for example with <em>switch case let as</em> pattern.</p>

<h3>Resources</h3>
<ul><li><a href="https://www.swift.org/blog/swift-5.8-released/" title="Website of Swift">swift.org/blog</a></li>
<li><a href="https://www.hackingwithswift.com/articles/256/whats-new-in-swift-5-8" title="Website of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>Swift 5.7 / Xcode 14.0 (2022)</h2>

<p><em>if let</em> for unwrapping optionals is now shorter.</p>

<p><em>Regex</em> has been enriched a lot with DSL for example.</p>

<p><em>Opaque parameter declarations and result types</em> can be managed with the use of <em>some</em> keyword in parameter declarations.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.swift.org/blog/swift-5.7-released/" title="Website of Swift">swift.org/blog</a></li>
<li><a href="https://www.hackingwithswift.com/articles/249/whats-new-in-swift-5-7" title="Website of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>Swift 5.6 / Xcode 13.3 (2022)</h2>

<p><em>any</em> keyword is available to mark existential types, which is different than opaque types with <em>some</em> keyword. The <em>any</em> keyword is here to bring optimization when objects are used through their abstract types making the runtime use the <em>dynamic dispatch</em> process for optimization. Thus this process won&#39;t be used.</p>

<p><em>Type placeholder with _ symbol</em> can be called to let the compiler define types of variables (in, for example, declarations).</p>

<p><em>Concurrency</em> has been enriched to prepare Swift 6 with the <em>@preconcurrency</em> macro and other improvements with <em>@Sendable</em> and <em>@MainActor</em>.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.swift.org/blog/swift-5.6-released/" title="Website of Swift">swift.org/blog</a></li>
<li><a href="https://www.hackingwithswift.com/articles/247/whats-new-in-swift-5-6" title="Website of Hacking with Swift">hackingwithswift.com</a></li></ul>

<h2>Swift 5.5 / Xcode 13.0 (2021)</h2>

<p><em>async/await</em> and <em>async/throws</em> are now real! Here come asynchronous functions, allowing to run complex asynchronous code without for example needing to use in some cases <em>Combine</em>. <em>Task</em> is also shipped.</p>

<p><em>AsyncSequence</em> come with <em>async/await</em> also.</p>

<p><em>Actors</em> are also embedded, i.e. kind of classes that are safe to use in concurrent environments with their content accessible by a single thread at any given time.</p>

<p><em>Sendable</em> are here to define if data can safely be transferred to another thread.</p>

<p><em>lazy</em> has been improved to be used in local contexts and write stored properties only calculated when first used ; interesting for heavy objects.</p>

<h3>Sources</h3>
<ul><li><a href="https://www.swift.org/blog/swift-5.5-released/" title="Website of Swift">swift.org/blog</a></li>
<li><a href="https://www.hackingwithswift.com/articles/233/whats-new-in-swift-5-5" title="Website of Hacking with Swift">hackingwithswift.com</a></li></ul>

<p>—
<i>Posted on Monday, May 12th 2025</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/whats-new-swift</guid>
      <pubDate>Mon, 12 May 2025 10:41:11 +0000</pubDate>
    </item>
    <item>
      <title>La supercherie de l’universalité du web</title>
      <link>https://write.as/pylapp/la-supercherie-de-luniversalite-du-web?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1La supercherie de l’universalité du web/h1&#xA;&#xA;i🇫🇷  – Mercredi 30 octobre 2024/i&#xA;&#xA;biMots clés: #web, #internet, #navigateur, #ViePrivée, #merdification/i/b&#xA;&#xA;Le web a été totalement travesti ces dernières années, voire décennies. De plus en plus de merdification, de monopoles, de silotages et de nivellement par le bas. Quand j&#39;étais gamin, je voyais le web - au sens large - comme quelque chose d&#39;universel. J&#39;ai écrit mes premières lignes de code pour des pages web via le a href=&#34;https://fr.wikipedia.org/wiki/OpenClassrooms&#34; title=&#34;Page Wikipédia d&#39;OpenClassrooms, anciennement Site du Zéro&#34;iSite du Zéro/i/a. Je me rends compte qu&#39;en l&#39;état actuel des choses, cette universalité est une supercherie, une fumisterie grotesque. Ce billet de blog a un gros côté &#34;Team Vieux Cons&#34;, je préviens.&#xA;&#xA;h2Comment c&#39;était &#34;avant&#34; ?/h2&#xA;&#xA;Apparemment il y a des gens qui aiment en mettre d&#39;autres dans des cases, et je serais alors un imillennial/i, un idigital native/i ou un spécimen de la igénération Y/i, en gros je suis né au début des années 1990. De fait, on ne parlait pas encore de &#34;fracture numérique&#34;, l&#39;informatique domestique n&#39;était pas encore démocratisée (pas autant qu&#39;aujourd&#39;hui), et quand on habitait en zone rurale l&#39;ADSL n&#39;était pas encore mis en place, on avait droit à des débits de 56kb/s au mieux avant qu&#39;il n&#39;arrive avec sa vingtaine de Mb/s. Bref, je n&#39;ai pas connu la naissance de l&#39;informatique, ni celle du web, je ne prétends pas la connaître non plus, mais j&#39;ai vu les choses s&#39;installer tranquillement.&#xA;&#xA;Avant, du côté des navigateurs web, il y avait a href=&#34;https://fr.wikipedia.org/wiki/NetscapeNavigator&#34; title=&#34;Page Wikipédia de Netscape&#34;iNetscape/i/a,  a href=&#34;https://fr.wikipedia.org/wiki/InternetExplorer&#34; title=&#34;Page Wikipédia d&#39;Internet Explorer&#34;iInternet Explorer/i/a, et d&#39;autres trucs aussi que je n&#39;ai pas connus. Puis a href=&#34;https://www.opera.com/fr&#34; title=&#34;Site officiel&#34;iOpera/i/a, a href=&#34;https://support.mozilla.org/fr/products/firefox&#34;iFirefox/i/a et a href=&#34;https://www.apple.com/fr/safari/&#34; title=&#34;Site officiel&#34;iSafari/i/a. iChrome/i ne sera arrivé que bien plus tard vers 2008. iEdge/i n&#39;existait pas, ni a href=&#34;https://brave.com/fr/&#34; title=&#34;Site officiel&#34;iBrave/i/a, et on ne parlait pas de iChromium/i.&#xA;&#xA;Les pages iHTML/i étaient simples. Moches selon les critères de nos jours, mais se composaient de iXHTML/i et de iCSS/i ; le a href=&#34;https://fr.wikipedia.org/wiki/HTML5&#34; title=&#34;Page Wikipédia de HTML 5&#34;iHTML 5/i/a et le a href=&#34;https://fr.wikipedia.org/wiki/Feuillesdestyleencascade&#34; title=&#34;Page Wikipédia de CSS&#34;iCSS 3/i/a de mémoire étaient arrivés dans les années 2010. Par contre, effectivement, pour certaines choses comme l&#39;audio et la vidéo, on avait du a href=&#34;https://en.wikipedia.org/wiki/MicrosoftSilverlight&#34; title=&#34;Page Wikipédia de Microsoft Silverlight&#34;iSilverlight/i/a et du a href=&#34;https://fr.wikipedia.org/wiki/AdobeFlash&#34; title=&#34;Page Wikipédia de Adobe Flash&#34;iFlash/i/a. En dehors de ça, on savait faire simple. On était obligés de faire simple. Les débits, toujours selon les critères de nos jours, étaient médiocres. Les ordinateurs parfois n&#39;avaient pas plus de 2 ou 3 Go de RAM (et bien moins avant). Les pages iHTML/i devaient être légères car sinon mettaient trop de temps à être chargées, et les dépassements de forfaits étaient très vite lourdement facturés. Pas de iDRM/i, pas ou très peu de iJavaScript/i (qu&#39;on désactivait à l&#39;époque pour gagner du temps tout comme l&#39;affichage des images), pas ou peu de publicité (mais vite arrivée en force ensuite), pas de itracking/i. Bref, du web documentaire que l&#39;on pouvait considérer d&#39;une certaine façon comme épuré, voire pur. Et plus tard, quand on voulait commencer à faire des pages &#34;réactives&#34;, avec quelques requêtes, on faisait du iAJAX/i. Du iJavaScript/i asynchrone, qui consommait du XML ou plus tard du JSON, et ce, au travers de a href=&#34;https://developer.mozilla.org/fr/docs/Web/API/XMLHttpRequest&#34; title=&#34;Documentation en ligne&#34;iXMLHttpRequest/i/a. On se contentait aussi des faire des requêtes de formulaires simples, allant taper directement le serveur qui nous renvoyait ensuite tout ou partie de la page visité.&#xA;&#xA;Les premières bibliothèques comme a href=&#34;https://mootools.net/&#34; title=&#34;Site officiel&#34;iMooTools/i/a ou a href=&#34;https://jquery.com/&#34; title=&#34;Site officiel&#34;ijQuery/i/a ont commencé à venir, et le merdier aussi.&#xA;&#xA;h2Les technologies de développement/h2&#xA;&#xA;On a oublié de faire simple. Et on a cherché à tordre le iHTML/i et le iCSS/i dans tous les sens, à totalement travestir le truc. On est limité, cloitré au navigateur web, mais on va chercher à faire des sites web de plus en plus complexes, et même des iProgressive Web Apps/i.&#xA;&#xA;Le a href=&#34;https://fr.wikipedia.org/wiki/JavaScript&#34; title=&#34;Page Wikipédia de JavaScript&#34;iJavaScript/i/a est devenu incontournable et indispensable, quand bien même ce langage de programmation est exécrable et trop permissif. Alors certains diront que l&#39;on a a href=&#34;https://www.typescriptlang.org/&#34; title=&#34;Site officiel&#34;iTypeScript/i/a aussi, mais ça reste finalement la même merde qui sera générée / transpilée et exploitée par la suite. On a juste changé l&#39;emballage.&#xA;&#xA;On avait iMooTools/i. Puis ijQuery/i. On avait même des a href=&#34;https://fr.wikipedia.org/wiki/AppletJava&#34; title=&#34;Page Wikipédia des applets Java&#34;iapplets Java/i/a. Et ensuite a href=&#34;https://fr.wikipedia.org/wiki/AngularJS&#34; title=&#34;Page Wikipédia de AngularJS&#34;iAngularJS/i/a. Puis a href=&#34;https://angular.dev/&#34; title=&#34;Site officiel&#34;iAngular/i/a. a href=&#34;https://en.wikipedia.org/wiki/Polymer(library)&#34; title=&#34;Page Wikipédia de Polymer&#34;iPolymer/i/a aussi, qui aussi a rejoint iAngularJS/i dans le a href=&#34;https://killedbygoogle.com/&#34; title=&#34;Site du cimetière&#34;iGoogle graveyard/i/a, et a href=&#34;https://getbootstrap.com/&#34; title=&#34;Site officiel&#34;iBootstrap/i/a. Et enfin a href=&#34;https://fr.legacy.reactjs.org/&#34; title=&#34;Site officiel&#34;iReactJS/i/a qui n&#39;est plus maintenu au profit de a href=&#34;https://react.dev/&#34; title=&#34;Site officiel&#34;iReact/i/a. Et on a même a href=&#34;https://flutter.dev/multi-platform/web&#34; title=&#34;Site officiel&#34;iFlutter/i/a qui s&#39;y met. Certes, je mélange les torchons sales et les serviettes trouées, mais quand même. Le but est le même : faire des pages web affichées par son navigateur web. Mais on a voulu faire des ensembles de pages, qu&#39;on appelle &#34;sites&#34;. Et on a voulu ajouter d&#39;autres logiques dedans et parodier ou plagier gauchement les applications mobiles, en appelant ça &#34;applis web&#34;. Les pages sont de plus en plus complexes. Le iDOM/i, que l&#39;on pouvait facilement fouiller avant, finalement est remplacé par le ishadow DOM/i de plus en plus pénible à investiguer. On va avoir des évènements iJavaScript/i en pagaille, avec des chargements de pages ici ou là, partiels ou non, et une tonne de fichiers JS que l&#39;on va tirer depuis les pages via des iCDN/i, sans même forcément s&#39;assurer qu&#39;ils n&#39;aient pas été compromis. Des requêtes réseaux en pagaille pour aller chercher des ressources devenues indispensables pour faire fonctionner des foutues pages web totalement travesties.&#xA;&#xA;Avant, si on voulait travailler sur un projet web, ou ia minima/i bricoler un truc, on s&#39;en sortait très bien avec les bases du iHTML/i et du iCSS/i, voire du iJavaScript/i. Maintenant, si on ne connait pas la dernière istack/i à la mode, qui en plus va utiliser des préprocesseurs ou extensions CSS comme a href=&#34;https://sass-lang.com/&#34; title=&#34;Site officiel&#34;iSass/i/a ou a href=&#34;https://lesscss.org/&#34; title=&#34;Site officiel&#34;iLess/i/a, et le dernier framework du moment comme a href=&#34;https://fr.vuejs.org/&#34; title=Site officiel&#34;&#34;iVue.js/i/a ou a href=&#34;https://svelte.dev/&#34; title=&#34;Site officiel&#34;iSvelte/i/a ou un langage de programmation tout nouveau portée par la ihype/i comme a href=&#34;https://elm-lang.org/&#34; title=&#34;Site officiel&#34;iElm/i/a, on ne s&#39;en sort plus.&#xA;Les technologies web d’aujourd’hui sont déjà du icode legacy/i, pas besoin d&#39;attendre demain pour les voir dépréciées et vite remplacées. Tout le monde lave plus blanc que blanc, mais au fond ça reste le trio iHTML + CSS + JS/i. Ça reste de la merde, seule la couleur change, pas l&#39;odeur.&#xA;&#xA;Pire encore, on augmente les surfaces d&#39;attaque et les probabilités d&#39;avoir des problèmes en dépendant d&#39;outils desquels on est devenu trop dépendant. Il a fallu un ibad buzz/i pour que a href=&#34;https://speakerdeck.com/pylapp/comment-choisir-les-bons-composants-open-source-capitole-du-libre-2023?slide=18&#34; title=&#34;Diapo d&#39;une conférence que j&#39;avais faite abordant ce sujet&#34;iFacebook/i remplace la licence iBSD+Patent/i de iReact/i pour passer à iMIT/i/a. Avec a href=&#34;https://webassembly.org/&#34; title=&#34;Site officiel&#34;iWeb Assembly/i/a on va injecter du code binaire dans les projets web, faisant que l&#39;on pourra encore plus difficilement savoir ce qu&#39;il s&#39;y passe. Si on prend des outils clés en main comme a href=&#34;https://wordpress.com/fr/&#34; title=&#34;Site officiel&#34;iWordPress/i/a, on se prend souvent des alertes à cause de iplugins/i ayant des failles de sécurité, sans parler du psychodrame actuel entre le fondateur de a href=&#34;https://www.blogdumoderateur.com/wordpress-vs-wp-engine-conflit-consequences-ecosysteme-cms/&#34; title=&#34;Un article au hasard parlant de l&#39;affaire&#34;iWordPress/i et iWP Engine/i/a. Idem pour les usines à gaz que sont les iCMS/i comme a href=&#34;https://www.drupal.org/&#34; title=&#34;Site officiel&#34;iDrupal/i/a et a href=&#34;https://prestashop.fr/&#34; title=&#34;Site officiel&#34;iPrestaShop/i/a avec de temps en temps des alertes critiques. On avait même a href=&#34;https://sansec.io/research/polyfill-supply-chain-attack&#34;ipolyfill.js/i qui avait été compromis/a.&#xA;&#xA;Et côté embackend/em et au delà c&#39;est pas glorieux. a href=&#34;https://nodejs.org/fr&#34; title=&#34;Site officiel&#34;iNode.js/i/a avec son API standard incapable nécessitant pléthore de dépendances tierces plus à jour, sabotées ou sujettes à des failles de sécurité, a href=&#34;https://fr.wikipedia.org/wiki/JakartaEE&#34; title=&#34;Page Wikipédia de J2EE&#34;iJ2EE/i/a, a href=&#34;https://rubyonrails.org/&#34; title=&#34;Site officiel&#34;iRuby on Rails/i/a, a href=&#34;https://www.php.net/&#34; title=&#34;Site officiel&#34;iPHP/i/a et son emPreHistoric Programming/em, a href=&#34;https://symfony.com/&#34; title=&#34;Site officiel&#34;iSymfony/i/a, a href=&#34;https://laravel.com/&#34; title=&#34;Site officiel&#34;iLaravel/i/a, a href=&#34;https://www.djangoproject.com/&#34; title=&#34;Site officiel&#34;iDjango/i/a, a href=&#34;https://fr.wikipedia.org/wiki/ASP.NET&#34; title=&#34;Page Wikipédia de ASP.net&#34;iASP.net/i/a, ... On a une tétrachiée d&#39;outils pour faire du ibackend/i et plus encore, et qui font plus ou moins la même chose. Et certains organismes de formation sans scrupules iront former des jeunes ou des personnes en reconversion à l&#39;arrache, vider leurs porte-monnaies, les formant sans sérieux, et les balancer sur le marché du travail dans des marchés saturés.&#xA;&#xA;Certains ont tenté de faire des applications mobiles web avec un OS dédié, comme a href=&#34;https://fr.wikipedia.org/wiki/FirefoxOS&#34; title=&#34;Page Wikipédia de FirefoxOS&#34;iFirefox OS/i/a, mais le projet a capoté. Peut-être pas pour un mal.&#xA;&#xA;Si je prends une échelle de temps relative, forcément plus courte mais tout de même, du côté du développement d&#39;applications mobiles (natives j&#39;entends, les seules qui vaillent évidement), on a eu moins de changements et de risques de se créer de la dette technique. Du côté du développement d&#39;apps iAndroid/i, on est juste passé de iJava/i à iKotlin/i, progressivement. Et iJava/i a été officiellement destitué que tout récemment. Même chose pour iiOS/i, on est passé de iObjective-C/i à iSwift/i, mais en soit, l&#39;ancien langage de programmation n&#39;est pas déprécié pour autant. On garde iUIKit/i et iSwiftUI/i pour la définition des interfaces graphiques, rien de déprécié là aussi. Un peu moins vrai pour iAndroid/i avec iJetpack Compose/i qui remplace les ilayouts XML/i. Bref, bien moins de changements structurants, de dettes techniques et d&#39;outils dépréciés, car les choses sont davantage normalisées et lisibles. On n&#39;a pas plusieurs crémeries qui vont tenter de vendre leur beurre en tentant de planter les autres. Pour l&#39;embarqué, ça bouge encore moins. On a iQt/i, et c&#39;est assez. Finalement personne n&#39;a besoin d&#39;un énième emframework/em qui refasse ce que les autres font, mais différemment. Les tendances finiront par arriver, mais tranquillement et proprement. Bref, c&#39;est moins le foutoir.&#xA;&#xA;h2La merdification systématique/h2&#xA;&#xA;Je n&#39;ai pas l&#39;impression que le web ait beaucoup d&#39;innovations qui vont dans le bon sens, à savoir celui du progrès plutôt que celui des intérêts privés et capitalistes. Si on regarde iWeb Assembly/i, il y a de l&#39;idée. Avoir un code source quelconque, en tirer un binaire, et balancer ça sur les navigateurs, ok. Toutefois, comment contrôler ce qu&#39;il s&#39;y passe ? Comment s&#39;assurer de la loyauté de ce binaire ? On apporte de l&#39;opacité à un environnement qui, avant, laissait l&#39;utilisateur le bidouiller, fouiner dedans, et voir comment les choses étaient foutues.&#xA;Même chose pour le iJavaScript/i, on en vient à intégrer sur les pages web du code propriétaire, opaque, privateur, qui est là pour surveiller, pister ou forger des empreintes numériques permettant de traquer l&#39;utilisateur peu importe où il va. Quand on parle de logiciels, on arrive vite à la dichotomie entre les logiciels libres (au sens donné par la iFree Software Foundation/i, le seul qui vaille) et les logiciels propriétaires. Or, on oublie vite que c&#39;est le même problème pour le code iJavaScript/i qu&#39;on subit lorsque l&#39;on surfe sur le web. Le code iJavaScript/i a href=&#34;https://www.gnu.org/philosophy/javascript-trap.html&#34; title=&#34;Traduction d&#39;un article de RMS en français&#34;est un piège/a, vite déloyal, vite dangereux.&#xA;&#xA;Avant, modulo des animations clignotantes et des GIF horribles, les pages étaient simples. Le contenu était rapidement accessible. Maintenant, c&#39;est une purge. On se prend déjà un bandeau pour accepter les cookies, contraignant à tous les accepter ou passer par un parcours insupportable pour choisir ceux que l&#39;on ne veut pas, en supposant que ces choix soient respectés. À cela s&#39;ajoutent les panneaux publicitaires, proposant tout et n&#39;importe quoi. Et ensuite un ipaywall/i, soit en cours de lecture pour appâter l’utilisateur, soit dès l&#39;affichage de la page pour forcer l’utilisateur à accepter tous les cookies (donc le pistage) ou à prendre un abonnement. Les champions sont les sites de presse en ligne que l&#39;on doit plaindre si on les écoutait ; ils ont choisi délibérément de se lier pieds et poings chez iGoogle/i ou iFacebook/i, mais dès que certains comme iApple/i et la &#34;gomme magique&#34; de iSafari/i arrivent pour dégager leurs merdes, a href=&#34;https://next.ink/155499/en-france-le-monde-publicitaire-demande-a-apple-de-supprimer-la-gomme-magique-dios-18/&#34; title=&#34;Article de Next&#34;ils se plaignent/a. Ils sont nés avant la honte.&#xA;&#xA;h2Des justifications merdeuses/h2&#xA;&#xA;En discutant avec les gens au sujet du web et des technologies de développement &#34;web&#34;, j&#39;entends toujours les mêmes arguments éculés.&#xA;&#xA;emLes DRM permettent de fournir une meilleure expérience à l&#39;utilisateur/em.&#xA;Non. Déjà car ici on pense surtout à des consommateurs. Et ensuite parce que ces iDigital Rights Management/i sont des cancers pour le web libre. Zoner géographiquement, empêcher l&#39;accès, la copie, la diffusion, c&#39;est purement de la censure à des fins mercantiles. a href=&#34;https://www.defectivebydesign.org/&#34; title=&#34;Site web de Defective By Design&#34;À quel moment on a cru bon d&#39;accepter ces verrous numériques pour le web ?/a&#xA;&#xA;emLes technos web réduisent les coûts de développement/em.&#xA;Si un choix technique ou technologique est justifié par un argument financier, ce choix est par définition mauvais. Les logiciels faits grâce à (ou à cause de) iElectron/i sont les pires que je n&#39;ai jamais pu utiliser, en terme de performances ou d&#39;efficacité. Idem pour les machins à base de iPhoneGap/i, iIonic/i ou iCordova/i. Même la suite iTeams/i de iMicrosoft/i passant de iElectron/i à iWebView2/i est une purge à utiliser. Ça bouffe de la RAM, ça emglitch/em, ça emrefresh/em mal, l&#39;accessibilité est dégueulasse, ça ne reprend pas les codes plus sains des logiciels natifs.&#xA;&#xA;emÇa donne une expérience unifiée pour l&#39;utilisateur/em.&#xA;Non. Embarquer des emweb views/em dans des applications mobiles est une connerie. On augmente la surface d&#39;attaque, on consomme davantage de bande passante, on se retrouve avec des failles de sécurité en plus tant dans le code web qu&#39;à cause du navigateur faisant le rendu, l’accessibilité est souvent foirée, et on se retrouve parfois avec des régressions identifiées tardivement à cause d&#39;effets de bords indésirés. On modifie la page web pour changer une fonctionnalité, sauf que c&#39;est tracé nulle part côté application et l’utilisateur ne se rend compte de rien. Sans oublier qu&#39;on zappe parfois la mise en cache des données et le mode hors-ligne. Les emweb views/em sont un excellent moyen de déposséder l&#39;utilisateur ; suffit de ne pas faire de cache et de changer la page ou la rediriger, et c&#39;est terminé.&#xA;&#xA;emLe HTTPS permet d&#39;être sécurisé/em.&#xA;Oui, c&#39;est vrai. Mais pour du contenu statique on n&#39;en a pas besoin du tout. À cause du tout HTTPS, on se retrouve avec par exemple des ordinateurs &#34;vieux&#34;, avec des &#34;vieux&#34; navigateurs web, qui n&#39;ont plus leurs certificats à jour. Donc un &#34;vieux&#34; iiMac/i, qui fonctionne bien mais plus mis à jour depuis quelques années toutefois, ne pourra plus permettre à l&#39;utilisateur de naviguer sur les internets car on aura du HTTPS partout et le navigateur web ne pourra afficher le contenu à cause de certificats révoqués ou obsolètes. TLS 1.0 et 1.1 sont obsolètes depuis 2018, donc des certificats racines ne sont plus mis à jour, donc des sites web inaccessibles. Bingo.&#xA;&#xA;emC&#39;est nouveau, c&#39;est génial/em.&#xA;J&#39;ai entendu ça sur le iserver-side rendering (SSR)/i, un cran plus loin dans la merdification. On a des gens qui sont satisfaits d&#39;avoir réinventé la roue : le serveur web qui va construire la vue iHTML/i. Retour aux débuts du web. On avait le serveur qui renvoyait la page à afficher, puis on a fait des iAPI SOAP/i, puis on a fait des iAPI REST/i, puis des iAPI GraphQL/i, et là on fait ce iSSR/i. Et des pignoufs vendent ça comme de l&#39;innovation, quels escrocs. Faire du développement web c&#39;est faire de la emhype driven development/em.&#xA;&#xA;h2Des pétards mouillés aussi/h2&#xA;&#xA;Qui a encore entendu parler du iphysical web/i ? Ces pages et sites web qui arrivent sur nos appareils grâce à des ibeacons/i qui diffusent des signaux, notamment près des bornes publicitaires ? Un gag.&#xA;&#xA;Et les iprogressive web apps (PWA)/i alors ? Un plagiat ridicule des applications mobiles. Les utilisateurs ne comprennent pas comment les installer, ce n&#39;est pas naturel. On est toujours limité de près ou de loin par le navigateur. Ça impose d&#39;avoir du iJavaScript/i pour gérer la mise en cache avec le iservice worker/i. Qui, lui, impose d&#39;être en HTTPS pour fonctionner. On pourrait s&#39;attendre à avoir des vraies évolutions, comme des ithreads/i ? Les iweb workers/i n&#39;y arrivent pas sérieusement. Sans compter qu&#39;encore aujourd’hui des API accessibles par les apps mobiles ne le sont pas par les PWA, et que par essence et par définition les apps mobiles natives seront toujours en avance sur l&#39;usage des terminaux contrairement aux PWA qui n&#39;innoveront jamais et persisteront à corriger le retard.&#xA;&#xA;h2Et les neutralités du net et du web ?/h2&#xA;&#xA;Un lointain souvenir. Les adresses IP des VPN sont de plus en plus sur listes noires. Si on utilise des bloqueurs de pubs les sites sont inutilisables, soit délibérément, soit par conception maladroite. Il y a de plus en plus de discrimination envers les usagers, sans parler des problématiques réseaux. Le simple fait de vouloir utiliser iTOR/i nous prive d&#39;une bonne part du web. Sans parler du fait que de plus en plus de sites web ne fonctionnent pas bien voire refusent de fonctionner selon les navigateurs. Ou alors vous imposeront des contrôles &#34;anti robots&#34; et des emcaptchas/em, notamment si le site est géré par au hasard iCloudfare/i. Franchement, j&#39;en ai marre de résoudre des puzzles et d&#39;attendre qu&#39;un système obscur me donnent l&#39;accès à un site web. Parfois même les sessions sont suspendues car on est considéré comme autre chose qu&#39;un humain légitime. Désolé bande de clowns, j&#39;ai un logiciel qui bloque la publicité, le code iJavaScript/i déloyal et qui me fait sortir ailleurs qu&#39;en France, juste pour protéger ma vie privée. Et c&#39;est justement à cause de vous si j&#39;en suis là. Escrocs.&#xA;&#xA;h2Un noyautage public/h2&#xA;&#xA;Et pendant ce temps, on remarque que iGoogle/i et consorts continuent leur noyautage du web et de ces instances, ainsi que le silotage de tout ça. Les iDRM/i sont validés par le iW3C/i, iChromium/i prend presque toutes les parts de marché et applique a href=&#34;https://fr.wikipedia.org/wiki/Embrace,extendandextinguish&#34; title=&#34;Page Wikipédia de EEE&#34;la stratégie 3E/a : maintenant que la place est prise, on se débarrasse de ce qui est nuisible, comme par exemple a href=&#34;https://www.01net.com/actualites/chrome-cest-la-fin-pour-ublock-origin-google-desactive-automatiquement-lextension.html&#34; title=&#34;Article de 01net.com&#34;iuBlock Origin/i/a. De plus en plus de sites web se plient au règles de iGoogle/i en terme de iSEO/i.&#xA;iGoogle/i est a href=&#34;https://interpeer.org/blog/2023/07/google-vs-the-open-web/&#34; title=&#34;Article sur le projet web environement integrity&#34;en train de foutre en l&#39;air le web ouvert et libre/a, et ce, délibérément avec son projet de iweb environement integrity/i.&#xA;On peut aussi parler du iManifest v3/i de iGoogle/i a href=&#34;https://www.clubic.com/actualite-509287-google-a-peur-de-firefox-et-on-vous-raconte-pourquoi.html&#34; title=&#34;Article de Clubic&#34;encadrant les extensions des navigateurs/a, toujours pour favoriser les pisteurs et privilégier ce qui intéresse les géants du numérique en torpillant les projets qui préfèrent protéger les utilisateurs.&#xA;Ou encore des tentatives pour dégager des formats ouverts, a href=&#34;https://www.fsf.org/blogs/community/googles-decision-to-deprecate-jpeg-xl-emphasizes-the-need-for-browser-choice-and-free-formats&#34;notamment de la part de iGoogle/i avec iJPEG-XL/i/a.&#xA;&#xA;h2Le web social, boulimique, grotesque et égocentrique/h2&#xA;&#xA;Le web 2.0, le web social, a amené les gens à s&#39;exprimer plus facilement, à créer du contenu, à en partager.&#xA;Forcément les gros emdatavores/em comme iFacebook/i maintenant iMeta/i mais aussi iX/i anciennement iTwitter/i, ou encore iReddit/i et j&#39;en passe, se sont rués dessus.&#xA;On incite les gens à créer, commenter, emliker/em, partager. On engloutit autant de données personnelles que l&#39;on peut, soit en exploitant les contenus, soit leurs métadonnées. Et ensuite on se gave encore sur ça en créant de gros corpora de données pour entrainer des modèles d&#39;intelligence artificielle. Et on verrouille aussi les API, faisant qu&#39;un paquet d&#39;applications qui pouvaient interagir avec iTwitter/i ou iReddit/i ont plié boutique.&#xA;&#xA;L&#39;effet pervers de ce web social est qu&#39;il a fait naître les eminfluvoleurs et instabouffons/em, dit autrement les influenceurs et dindons de tous poils qui commentent, donnent leurs avis, lustrent leurs communautés de blaireaux avec des emhot takes/em claquées au sol ou en vendant des produits bidons. Même dans les milieux de la tech on en a, surtout dans le monde du développement web. Des paons et des dindons, formant des communautés de pigeons, gavés d&#39;articles iLinkedIn/i mauvais, de vidéos iYouTube/i médiocres, enfonçant des portes ouvertes et rendant le banal et classique tout simplement incroyable. Et quand on les met en face de leurs impostures, ils lâchent leurs chiens sans sommation pour protéger leur crédibilité fantoche. Ces gens là sont responsables de rendre les autres plus cons qu&#39;avant, et de leur faire croire à des rêves idiots.&#xA;emRegardez, c&#39;est facile de coder, waouh je fais des choses trop bien, vous allez être développeurs grâce à ma formation/em. Résultat ? Trop de personnes s&#39;étant reconverties avec des formations minables, sans culture, sans bagage sérieux, saturant les marchés.&#xA;&#xA;Je pensais que la communauté iDebian/i était une des pires, avec sa mentalité a href=&#34;https://fr.wikipedia.org/wiki/RTFM%28expression%29&#34; title=&#34;Page Wikipédia de RTFM&#34;emRTFM/em/a. Mais une communauté web la surclasse, celle qui adore le iJavaScript/i et le iweb front/i  ; constamment soumise à la emhype/em, à réinventer la roue, à s&#39;extasier devant des choses basiques ou peu originales, et à avoir l&#39;arrogance de croire que le web va tout surclasser. Pire encore, une partie des membres de cette communauté va se former à l&#39;arrache, et se croire meilleure. Heureusement, comme partout, il y a les bons et les mauvais artisans du logiciel, et j&#39;ai de chouettes collègues qui font du développement web, mais bon sang, je n&#39;ai jamais vu autant de emkikoos/em et de crétins dans le développement web emfront end/em. On peut trop rapidement et trop facilement faire des choses, et surtout n&#39;importe quoi et n&#39;importe comment. Les mêmes nous font croire qu&#39;il n&#39;y a pas de problème à parler de emfront end/em quand on parle d&#39;apps iAndroid/i et iiOS/i ; ils n&#39;ont jamais touché à cet art pour comprendre à quel point ce propos est réducteur. Et de temps en temps, les mêmes, toujours, tentent de se tailler la part du lion en poussant leurs technologies à eux. iPhoneGap/i, iCordova/i, iIonic/i, maintenant iReact/i. Autant de dette technique en puissance, voire en acte, et de dépendance à des outils que l&#39;on ne maîtrise pas, sans parler du fait que ni iGoogle/i d&#39;un côté pour iAndroid/i, ni iApple/i pour iiOS/i, ni mêmes d&#39;autres acteurs comme a href=&#34;https://e.foundation/e-os/&#34; title=&#34;Site officiel&#34;i/e//i/a ne recommendent, à l&#39;heure où j&#39;écris ce lignes, de passer par ces outils tiers. Bref, que les clowns du développement web emfront end/em s&#39;occupent déjà de faire des pages HTML propres et arrêtent d&#39;entretenir les porcs comme iGoogle/i et tous ceux qui ont travesti le web et se gavent dessus. Ils pourront donner des leçons et polluer le développement d&#39;apps mobiles une fois que leur maison aura cessé de brûler. On n&#39;a pas besoin qu&#39;ils fassent les pompiers, juste que les flammes ne se propagent pas de chez eux à chez nous. Est-ce du igatekeeping/i ? Probablement, mais on en arrive là pour éviter le nivellement par le bas et l’uniformisation ridicules des environnements.&#xA;&#xA;Le web social a permis le partage de la connaissance, il a aussi aidé à la fabrique du mensonge. On partageait aux autres avant, on s&#39;étale aux yeux du monde maintenant.&#xA;&#xA;On pensait même être tranquille avec le a href=&#34;https://www.fediverse.to/&#34; title=&#34;Un site sur le fediverse&#34;ifediverse/i/a comme dans les écosystèmes a href=&#34;https://joinmastodon.org/fr&#34; title=&#34;Site officiel&#34;iMastodon/i/a ou a href=&#34;https://pixelfed.org/&#34; title=&#34;Site officiel&#34;iPixelfed/i/a, mais on trouve encore des géants du numérique comme iMeta/i qui tentent de mettre un pied dans la porte afin de récupérer toujours plus de données avec iThreads/i par exemple. Ces prédations capitalistes ne sont pas nouvelles ; iGoogle/i avait réussi à torpiller iXMPP/i il y a un moment, et impose ses règles concernant les courriers électroniques avec iGmail/i.&#xA;&#xA;Et forcément, la pub, la pub, les pisteurs, la pub, la pub... qui explosent la taille des pages web et consomment davantage de bande passante.&#xA;&#xA;h2Bref/h2&#xA;&#xA;Le web a href=&#34;https://framablog.org/2020/12/30/le-web-est-il-devenu-trop-complique/&#34; title=&#34;Article Framablog&#34;est devenu trop compliqué/a.&#xA;a href=&#34;https://ploum.net/2024-06-05-complexite-simplicite.html&#34;Nous avons oublié comme faire simple/a.&#xA;On créé tous les jours du code ilegacy/i.&#xA;On est devenu dépendant d&#39;un navigateur.&#xA;On est face aux géants du numérique qui cloisonnent tout.&#xA;Le développement web est un développement au rabais.&#xA;Le web 2.0 a créé des dindons arrogants entretenant la fabrique du mensonge et la superficialité.&#xA;Le web est trop ravagé par les capitalismes de la donnée, de l&#39;attention et de la surveillance.&#xA;On a oublié toutes les valeurs initiales du web, et la merdification continue.&#xA;&#xA;J&#39;espère qu&#39;on aura de belles histoires avec a href=&#34;https://ploum.net/gemini-le-protocole-du-slow-web/index.html&#34; title=&#34;Article de blog concernant Gemini&#34;iGemini/i/a par exemple. Ou a href=&#34;https://kittens.small-web.org/&#34; title=&#34;On n&#39;y parle pas de chats&#34;iKittens/i/a et le emsmall web/em, ou le emslow web/em.&#xA;&#xA;bLe web pue la merde, je ne l&#39;ai jamais autant détesté qu&#39;aujourd&#39;hui. Il était émancipateur. Il est devenu privateur./b&#xA;&#xA;h2Quelques ressources en vrac pour aller plus loin et réfléchir un peu/h2&#xA;&#xA;a href=&#34;https://www.defectivebydesign.org/blog/webenvironmentintegrityisanalloutattackonfreeinternet&#34;1 - Sur le emweb environment integrity/em/a&#xA;a href=&#34;https://web.developpez.com/actu/351558/Firefox-serait-au-bord-du-gouffre-avec-une-part-de-marche-qui-degringole-vers-le-seuil-critique-de-2-pourcent-en-dessous-duquel-certains-sites-Web-gouvernementaux-cessent-de-supporter-un-navigateur/&#34;2 - Firefox meurt/a&#xA;a href=&#34;https://ar.al/2020/08/07/what-is-the-small-web/&#34;3 - À propos du emsmall web/em/a&#xA;a href=&#34;https://www.viennawriter.net/blog/the-fediverse-meta-and-the-tolerance-paradox-en/&#34; title=&#34;Article sur le fediverse et Meta&#34;4 - iMeta/i et le /ifediverse/i&#xA;a href=&#34;https://www.citationneeded.news/we-can-have-a-different-web/&#34;5 - On peut avoir un autre web/a&#xA;a href=&#34;https://gebna.gg/blog/brief-history-of-web-development/&#34;6 - emA brief history of web development. And why your framework doesn&#39;t matter./em/a&#xA;a href=&#34;https://www.arretsurimages.net/chroniques/clic-gauche/apocalypse-google&#34;7 - L’apocalypse Google avec le web synthétique/a&#xA;a href=&#34;https://www.ieee-security.org/TC/SPW2015/W2SP/papers/W2SP2015submission_32.pdf&#34;8 - emTracking Protection in Firefox&#xA;For Privacy and Performance/em/a&#xA;a href=&#34;https://www.24joursdeweb.fr/2023/et-si-on-faisait-du-web-comme-en-1999-ou-presque/&#34;9 - Et si on faisait du web comme en 1999, ou presque ?/a&#xA;a href=&#34;https://www.eff.org/deeplinks/2023/12/meet-spritely-and-veilid&#34;10 - emSpritely and Veilid: Exciting Projects Building the Peer-to-Peer Web/em/a&#xA;a href=&#34;https://visionsmag.com/tariq-krim-le-slow-web-a-la-francaise/&#34;11 - Tariq Krim : le emslow Web/em à la française/a&#xA;a href=&#34;https://solidproject.org/&#34;12 - emThe SOLID project/em/a&#xA;a href=&#34;https://write.as/pylapp/retour-dexperience-concernant-le-navigateur-web-brave&#34;13 - Retour d&#39;expérience concernant le navigateur web Brave/a&#xA;a href=&#34;https://write.as/pylapp/privacy-or-sensitive-data-a-list-of-tools-to-protect-your-ddzdz&#34;14 - emPrivacy or sensitive data… a list of tools to protect your дѕѕ/em/a&#xA;a href=&#34;https://write.as/pylapp/le-jour-ou-le-web-senfonca-un-peu-plus-dans-la-tombe&#34;15 - Le jour où le Web s’enfonça un peu plus dans la tombe/a&#xA;&#xA;h2Wall of shame/h2&#xA;&#xA;table&#xA;tr&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/1.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/2.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/3.png&#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/27/4.jpeg&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/5.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/6.png&#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/27/7.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/8.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/9.png&#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/27/10.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/11.jpg&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/12.png&#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/27/13.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/14.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/27/15.png&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;/tr&#xA;/table&#xA;&#xA;--&#xA;iDernière mise à jour : lundi 23 décembre 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>La supercherie de l’universalité du web</h1>

<p><i>🇫🇷  – Mercredi 30 octobre 2024</i></p>

<p><b><i>Mots clés: <a href="https://write.as/pylapp/tag:web" class="hashtag"><span>#</span><span class="p-category">web</span></a>, <a href="https://write.as/pylapp/tag:internet" class="hashtag"><span>#</span><span class="p-category">internet</span></a>, <a href="https://write.as/pylapp/tag:navigateur" class="hashtag"><span>#</span><span class="p-category">navigateur</span></a>, <a href="https://write.as/pylapp/tag:ViePriv%C3%A9e" class="hashtag"><span>#</span><span class="p-category">ViePrivée</span></a>, <a href="https://write.as/pylapp/tag:merdification" class="hashtag"><span>#</span><span class="p-category">merdification</span></a></i></b></p>

<p>Le web a été totalement travesti ces dernières années, voire décennies. De plus en plus de merdification, de monopoles, de silotages et de nivellement par le bas. Quand j&#39;étais gamin, je voyais le web – au sens large – comme quelque chose d&#39;universel. J&#39;ai écrit mes premières lignes de code pour des pages web via le <a href="https://fr.wikipedia.org/wiki/OpenClassrooms" title="Page Wikipédia d&#39;OpenClassrooms, anciennement Site du Zéro"><i>Site du Zéro</i></a>. Je me rends compte qu&#39;en l&#39;état actuel des choses, cette universalité est une supercherie, une fumisterie grotesque. Ce billet de blog a un gros côté “Team Vieux Cons”, je préviens.</p>

<h2>Comment c&#39;était &#34;avant&#34; ?</h2>

<p>Apparemment il y a des gens qui aiment en mettre d&#39;autres dans des cases, et je serais alors un <i>millennial</i>, un <i>digital native</i> ou un spécimen de la <i>génération Y</i>, en gros je suis né au début des années 1990. De fait, on ne parlait pas encore de “fracture numérique”, l&#39;informatique domestique n&#39;était pas encore démocratisée (pas autant qu&#39;aujourd&#39;hui), et quand on habitait en zone rurale l&#39;ADSL n&#39;était pas encore mis en place, on avait droit à des débits de 56kb/s au mieux avant qu&#39;il n&#39;arrive avec sa vingtaine de Mb/s. Bref, je n&#39;ai pas connu la naissance de l&#39;informatique, ni celle du web, je ne prétends pas la connaître non plus, mais j&#39;ai vu les choses s&#39;installer tranquillement.</p>

<p>Avant, du côté des navigateurs web, il y avait <a href="https://fr.wikipedia.org/wiki/Netscape_Navigator" title="Page Wikipédia de Netscape"><i>Netscape</i></a>,  <a href="https://fr.wikipedia.org/wiki/Internet_Explorer" title="Page Wikipédia d&#39;Internet Explorer"><i>Internet Explorer</i></a>, et d&#39;autres trucs aussi que je n&#39;ai pas connus. Puis <a href="https://www.opera.com/fr" title="Site officiel"><i>Opera</i></a>, <a href="https://support.mozilla.org/fr/products/firefox"><i>Firefox</i></a> et <a href="https://www.apple.com/fr/safari/" title="Site officiel"><i>Safari</i></a>. <i>Chrome</i> ne sera arrivé que bien plus tard vers 2008. <i>Edge</i> n&#39;existait pas, ni <a href="https://brave.com/fr/" title="Site officiel"><i>Brave</i></a>, et on ne parlait pas de <i>Chromium</i>.</p>

<p>Les pages <i>HTML</i> étaient simples. Moches selon les critères de nos jours, mais se composaient de <i>XHTML</i> et de <i>CSS</i> ; le <a href="https://fr.wikipedia.org/wiki/HTML5" title="Page Wikipédia de HTML 5"><i>HTML 5</i></a> et le <a href="https://fr.wikipedia.org/wiki/Feuilles_de_style_en_cascade" title="Page Wikipédia de CSS"><i>CSS 3</i></a> de mémoire étaient arrivés dans les années 2010. Par contre, effectivement, pour certaines choses comme l&#39;audio et la vidéo, on avait du <a href="https://en.wikipedia.org/wiki/Microsoft_Silverlight" title="Page Wikipédia de Microsoft Silverlight"><i>Silverlight</i></a> et du <a href="https://fr.wikipedia.org/wiki/Adobe_Flash" title="Page Wikipédia de Adobe Flash"><i>Flash</i></a>. En dehors de ça, on savait faire simple. On était obligés de faire simple. Les débits, toujours selon les critères de nos jours, étaient médiocres. Les ordinateurs parfois n&#39;avaient pas plus de 2 ou 3 Go de RAM (et bien moins avant). Les pages <i>HTML</i> devaient être légères car sinon mettaient trop de temps à être chargées, et les dépassements de forfaits étaient très vite lourdement facturés. Pas de <i>DRM</i>, pas ou très peu de <i>JavaScript</i> (qu&#39;on désactivait à l&#39;époque pour gagner du temps tout comme l&#39;affichage des images), pas ou peu de publicité (mais vite arrivée en force ensuite), pas de <i>tracking</i>. Bref, du web documentaire que l&#39;on pouvait considérer d&#39;une certaine façon comme épuré, voire pur. Et plus tard, quand on voulait commencer à faire des pages “réactives”, avec quelques requêtes, on faisait du <i>AJAX</i>. Du <i>JavaScript</i> asynchrone, qui consommait du XML ou plus tard du JSON, et ce, au travers de <a href="https://developer.mozilla.org/fr/docs/Web/API/XMLHttpRequest" title="Documentation en ligne"><i>XMLHttpRequest</i></a>. On se contentait aussi des faire des requêtes de formulaires simples, allant taper directement le serveur qui nous renvoyait ensuite tout ou partie de la page visité.</p>

<p>Les premières bibliothèques comme <a href="https://mootools.net/" title="Site officiel"><i>MooTools</i></a> ou <a href="https://jquery.com/" title="Site officiel"><i>jQuery</i></a> ont commencé à venir, et le merdier aussi.</p>

<h2>Les technologies de développement</h2>

<p>On a oublié de faire simple. Et on a cherché à tordre le <i>HTML</i> et le <i>CSS</i> dans tous les sens, à totalement travestir le truc. On est limité, cloitré au navigateur web, mais on va chercher à faire des sites web de plus en plus complexes, et même des <i>Progressive Web Apps</i>.</p>

<p>Le <a href="https://fr.wikipedia.org/wiki/JavaScript" title="Page Wikipédia de JavaScript"><i>JavaScript</i></a> est devenu incontournable et indispensable, quand bien même ce langage de programmation est exécrable et trop permissif. Alors certains diront que l&#39;on a <a href="https://www.typescriptlang.org/" title="Site officiel"><i>TypeScript</i></a> aussi, mais ça reste finalement la même merde qui sera générée / transpilée et exploitée par la suite. On a juste changé l&#39;emballage.</p>

<p>On avait <i>MooTools</i>. Puis <i>jQuery</i>. On avait même des <a href="https://fr.wikipedia.org/wiki/Applet_Java" title="Page Wikipédia des applets Java"><i>applets Java</i></a>. Et ensuite <a href="https://fr.wikipedia.org/wiki/AngularJS" title="Page Wikipédia de AngularJS"><i>AngularJS</i></a>. Puis <a href="https://angular.dev/" title="Site officiel"><i>Angular</i></a>. <a href="https://en.wikipedia.org/wiki/Polymer_(library)" title="Page Wikipédia de Polymer"><i>Polymer</i></a> aussi, qui aussi a rejoint <i>AngularJS</i> dans le <a href="https://killedbygoogle.com/" title="Site du cimetière"><i>Google graveyard</i></a>, et <a href="https://getbootstrap.com/" title="Site officiel"><i>Bootstrap</i></a>. Et enfin <a href="https://fr.legacy.reactjs.org/" title="Site officiel"><i>ReactJS</i></a> qui n&#39;est plus maintenu au profit de <a href="https://react.dev/" title="Site officiel"><i>React</i></a>. Et on a même <a href="https://flutter.dev/multi-platform/web" title="Site officiel"><i>Flutter</i></a> qui s&#39;y met. Certes, je mélange les torchons sales et les serviettes trouées, mais quand même. Le but est le même : faire des pages web affichées par son navigateur web. Mais on a voulu faire des ensembles de pages, qu&#39;on appelle “sites”. Et on a voulu ajouter d&#39;autres logiques dedans et parodier ou plagier gauchement les applications mobiles, en appelant ça “applis web”. Les pages sont de plus en plus complexes. Le <i>DOM</i>, que l&#39;on pouvait facilement fouiller avant, finalement est remplacé par le <i>shadow DOM</i> de plus en plus pénible à investiguer. On va avoir des évènements <i>JavaScript</i> en pagaille, avec des chargements de pages ici ou là, partiels ou non, et une tonne de fichiers JS que l&#39;on va tirer depuis les pages via des <i>CDN</i>, sans même forcément s&#39;assurer qu&#39;ils n&#39;aient pas été compromis. Des requêtes réseaux en pagaille pour aller chercher des ressources devenues indispensables pour faire fonctionner des foutues pages web totalement travesties.</p>

<p>Avant, si on voulait travailler sur un projet web, ou <i>a minima</i> bricoler un truc, on s&#39;en sortait très bien avec les bases du <i>HTML</i> et du <i>CSS</i>, voire du <i>JavaScript</i>. Maintenant, si on ne connait pas la dernière <i>stack</i> à la mode, qui en plus va utiliser des préprocesseurs ou extensions CSS comme <a href="https://sass-lang.com/" title="Site officiel"><i>Sass</i></a> ou <a href="https://lesscss.org/" title="Site officiel"><i>Less</i></a>, et le dernier framework du moment comme <a href="https://fr.vuejs.org/" title="Site"><i>Vue.js</i></a> ou <a href="https://svelte.dev/" title="Site officiel"><i>Svelte</i></a> ou un langage de programmation tout nouveau portée par la <i>hype</i> comme <a href="https://elm-lang.org/" title="Site officiel"><i>Elm</i></a>, on ne s&#39;en sort plus.
Les technologies web d’aujourd’hui sont déjà du <i>code legacy</i>, pas besoin d&#39;attendre demain pour les voir dépréciées et vite remplacées. Tout le monde lave plus blanc que blanc, mais au fond ça reste le trio <i>HTML + CSS + JS</i>. Ça reste de la merde, seule la couleur change, pas l&#39;odeur.</p>

<p>Pire encore, on augmente les surfaces d&#39;attaque et les probabilités d&#39;avoir des problèmes en dépendant d&#39;outils desquels on est devenu trop dépendant. Il a fallu un <i>bad buzz</i> pour que <a href="https://speakerdeck.com/pylapp/comment-choisir-les-bons-composants-open-source-capitole-du-libre-2023?slide=18" title="Diapo d&#39;une conférence que j&#39;avais faite abordant ce sujet"><i>Facebook</i> remplace la licence <i>BSD+Patent</i> de <i>React</i> pour passer à <i>MIT</i></a>. Avec <a href="https://webassembly.org/" title="Site officiel"><i>Web Assembly</i></a> on va injecter du code binaire dans les projets web, faisant que l&#39;on pourra encore plus difficilement savoir ce qu&#39;il s&#39;y passe. Si on prend des outils clés en main comme <a href="https://wordpress.com/fr/" title="Site officiel"><i>WordPress</i></a>, on se prend souvent des alertes à cause de <i>plugins</i> ayant des failles de sécurité, sans parler du psychodrame actuel entre le fondateur de <a href="https://www.blogdumoderateur.com/wordpress-vs-wp-engine-conflit-consequences-ecosysteme-cms/" title="Un article au hasard parlant de l&#39;affaire"><i>WordPress</i> et <i>WP Engine</i></a>. Idem pour les usines à gaz que sont les <i>CMS</i> comme <a href="https://www.drupal.org/" title="Site officiel"><i>Drupal</i></a> et <a href="https://prestashop.fr/" title="Site officiel"><i>PrestaShop</i></a> avec de temps en temps des alertes critiques. On avait même <a href="https://sansec.io/research/polyfill-supply-chain-attack"><i>polyfill.js</i> qui avait été compromis</a>.</p>

<p>Et côté <em>backend</em> et au delà c&#39;est pas glorieux. <a href="https://nodejs.org/fr" title="Site officiel"><i>Node.js</i></a> avec son API standard incapable nécessitant pléthore de dépendances tierces plus à jour, sabotées ou sujettes à des failles de sécurité, <a href="https://fr.wikipedia.org/wiki/Jakarta_EE" title="Page Wikipédia de J2EE"><i>J2EE</i></a>, <a href="https://rubyonrails.org/" title="Site officiel"><i>Ruby on Rails</i></a>, <a href="https://www.php.net/" title="Site officiel"><i>PHP</i></a> et son <em>PreHistoric Programming</em>, <a href="https://symfony.com/" title="Site officiel"><i>Symfony</i></a>, <a href="https://laravel.com/" title="Site officiel"><i>Laravel</i></a>, <a href="https://www.djangoproject.com/" title="Site officiel"><i>Django</i></a>, <a href="https://fr.wikipedia.org/wiki/ASP.NET" title="Page Wikipédia de ASP.net"><i>ASP.net</i></a>, ... On a une tétrachiée d&#39;outils pour faire du <i>backend</i> et plus encore, et qui font plus ou moins la même chose. Et certains organismes de formation sans scrupules iront former des jeunes ou des personnes en reconversion à l&#39;arrache, vider leurs porte-monnaies, les formant sans sérieux, et les balancer sur le marché du travail dans des marchés saturés.</p>

<p>Certains ont tenté de faire des applications mobiles web avec un OS dédié, comme <a href="https://fr.wikipedia.org/wiki/Firefox_OS" title="Page Wikipédia de FirefoxOS"><i>Firefox OS</i></a>, mais le projet a capoté. Peut-être pas pour un mal.</p>

<p>Si je prends une échelle de temps relative, forcément plus courte mais tout de même, du côté du développement d&#39;applications mobiles (natives j&#39;entends, les seules qui vaillent évidement), on a eu moins de changements et de risques de se créer de la dette technique. Du côté du développement d&#39;apps <i>Android</i>, on est juste passé de <i>Java</i> à <i>Kotlin</i>, progressivement. Et <i>Java</i> a été officiellement destitué que tout récemment. Même chose pour <i>iOS</i>, on est passé de <i>Objective-C</i> à <i>Swift</i>, mais en soit, l&#39;ancien langage de programmation n&#39;est pas déprécié pour autant. On garde <i>UIKit</i> et <i>SwiftUI</i> pour la définition des interfaces graphiques, rien de déprécié là aussi. Un peu moins vrai pour <i>Android</i> avec <i>Jetpack Compose</i> qui remplace les <i>layouts XML</i>. Bref, bien moins de changements structurants, de dettes techniques et d&#39;outils dépréciés, car les choses sont davantage normalisées et lisibles. On n&#39;a pas plusieurs crémeries qui vont tenter de vendre leur beurre en tentant de planter les autres. Pour l&#39;embarqué, ça bouge encore moins. On a <i>Qt</i>, et c&#39;est assez. Finalement personne n&#39;a besoin d&#39;un énième <em>framework</em> qui refasse ce que les autres font, mais différemment. Les tendances finiront par arriver, mais tranquillement et proprement. Bref, c&#39;est moins le foutoir.</p>

<h2>La merdification systématique</h2>

<p>Je n&#39;ai pas l&#39;impression que le web ait beaucoup d&#39;innovations qui vont dans le bon sens, à savoir celui du progrès plutôt que celui des intérêts privés et capitalistes. Si on regarde <i>Web Assembly</i>, il y a de l&#39;idée. Avoir un code source quelconque, en tirer un binaire, et balancer ça sur les navigateurs, ok. Toutefois, comment contrôler ce qu&#39;il s&#39;y passe ? Comment s&#39;assurer de la loyauté de ce binaire ? On apporte de l&#39;opacité à un environnement qui, avant, laissait l&#39;utilisateur le bidouiller, fouiner dedans, et voir comment les choses étaient foutues.
Même chose pour le <i>JavaScript</i>, on en vient à intégrer sur les pages web du code propriétaire, opaque, privateur, qui est là pour surveiller, pister ou forger des empreintes numériques permettant de traquer l&#39;utilisateur peu importe où il va. Quand on parle de logiciels, on arrive vite à la dichotomie entre les logiciels libres (au sens donné par la <i>Free Software Foundation</i>, le seul qui vaille) et les logiciels propriétaires. Or, on oublie vite que c&#39;est le même problème pour le code <i>JavaScript</i> qu&#39;on subit lorsque l&#39;on surfe sur le web. Le code <i>JavaScript</i> <a href="https://www.gnu.org/philosophy/javascript-trap.html" title="Traduction d&#39;un article de RMS en français">est un piège</a>, vite déloyal, vite dangereux.</p>

<p>Avant, modulo des animations clignotantes et des GIF horribles, les pages étaient simples. Le contenu était rapidement accessible. Maintenant, c&#39;est une purge. On se prend déjà un bandeau pour accepter les cookies, contraignant à tous les accepter ou passer par un parcours insupportable pour choisir ceux que l&#39;on ne veut pas, en supposant que ces choix soient respectés. À cela s&#39;ajoutent les panneaux publicitaires, proposant tout et n&#39;importe quoi. Et ensuite un <i>paywall</i>, soit en cours de lecture pour appâter l’utilisateur, soit dès l&#39;affichage de la page pour forcer l’utilisateur à accepter tous les cookies (donc le pistage) ou à prendre un abonnement. Les champions sont les sites de presse en ligne que l&#39;on doit plaindre si on les écoutait ; ils ont choisi délibérément de se lier pieds et poings chez <i>Google</i> ou <i>Facebook</i>, mais dès que certains comme <i>Apple</i> et la “gomme magique” de <i>Safari</i> arrivent pour dégager leurs merdes, <a href="https://next.ink/155499/en-france-le-monde-publicitaire-demande-a-apple-de-supprimer-la-gomme-magique-dios-18/" title="Article de Next">ils se plaignent</a>. Ils sont nés avant la honte.</p>

<h2>Des justifications merdeuses</h2>

<p>En discutant avec les gens au sujet du web et des technologies de développement “web”, j&#39;entends toujours les mêmes arguments éculés.</p>

<p><em>Les DRM permettent de fournir une meilleure expérience à l&#39;utilisateur</em>.
Non. Déjà car ici on pense surtout à des consommateurs. Et ensuite parce que ces <i>Digital Rights Management</i> sont des cancers pour le web libre. Zoner géographiquement, empêcher l&#39;accès, la copie, la diffusion, c&#39;est purement de la censure à des fins mercantiles. <a href="https://www.defectivebydesign.org/" title="Site web de Defective By Design">À quel moment on a cru bon d&#39;accepter ces verrous numériques pour le web ?</a></p>

<p><em>Les technos web réduisent les coûts de développement</em>.
Si un choix technique ou technologique est justifié par un argument financier, ce choix est par définition mauvais. Les logiciels faits grâce à (ou à cause de) <i>Electron</i> sont les pires que je n&#39;ai jamais pu utiliser, en terme de performances ou d&#39;efficacité. Idem pour les machins à base de <i>PhoneGap</i>, <i>Ionic</i> ou <i>Cordova</i>. Même la suite <i>Teams</i> de <i>Microsoft</i> passant de <i>Electron</i> à <i>WebView2</i> est une purge à utiliser. Ça bouffe de la RAM, ça <em>glitch</em>, ça <em>refresh</em> mal, l&#39;accessibilité est dégueulasse, ça ne reprend pas les codes plus sains des logiciels natifs.</p>

<p><em>Ça donne une expérience unifiée pour l&#39;utilisateur</em>.
Non. Embarquer des <em>web views</em> dans des applications mobiles est une connerie. On augmente la surface d&#39;attaque, on consomme davantage de bande passante, on se retrouve avec des failles de sécurité en plus tant dans le code web qu&#39;à cause du navigateur faisant le rendu, l’accessibilité est souvent foirée, et on se retrouve parfois avec des régressions identifiées tardivement à cause d&#39;effets de bords indésirés. On modifie la page web pour changer une fonctionnalité, sauf que c&#39;est tracé nulle part côté application et l’utilisateur ne se rend compte de rien. Sans oublier qu&#39;on zappe parfois la mise en cache des données et le mode hors-ligne. Les <em>web views</em> sont un excellent moyen de déposséder l&#39;utilisateur ; suffit de ne pas faire de cache et de changer la page ou la rediriger, et c&#39;est terminé.</p>

<p><em>Le HTTPS permet d&#39;être sécurisé</em>.
Oui, c&#39;est vrai. Mais pour du contenu statique on n&#39;en a pas besoin du tout. À cause du tout HTTPS, on se retrouve avec par exemple des ordinateurs “vieux”, avec des “vieux” navigateurs web, qui n&#39;ont plus leurs certificats à jour. Donc un “vieux” <i>iMac</i>, qui fonctionne bien mais plus mis à jour depuis quelques années toutefois, ne pourra plus permettre à l&#39;utilisateur de naviguer sur les internets car on aura du HTTPS partout et le navigateur web ne pourra afficher le contenu à cause de certificats révoqués ou obsolètes. TLS 1.0 et 1.1 sont obsolètes depuis 2018, donc des certificats racines ne sont plus mis à jour, donc des sites web inaccessibles. Bingo.</p>

<p><em>C&#39;est nouveau, c&#39;est génial</em>.
J&#39;ai entendu ça sur le <i>server-side rendering (SSR)</i>, un cran plus loin dans la merdification. On a des gens qui sont satisfaits d&#39;avoir réinventé la roue : le serveur web qui va construire la vue <i>HTML</i>. Retour aux débuts du web. On avait le serveur qui renvoyait la page à afficher, puis on a fait des <i>API SOAP</i>, puis on a fait des <i>API REST</i>, puis des <i>API GraphQL</i>, et là on fait ce <i>SSR</i>. Et des pignoufs vendent ça comme de l&#39;innovation, quels escrocs. Faire du développement web c&#39;est faire de la <em>hype driven development</em>.</p>

<h2>Des pétards mouillés aussi</h2>

<p>Qui a encore entendu parler du <i>physical web</i> ? Ces pages et sites web qui arrivent sur nos appareils grâce à des <i>beacons</i> qui diffusent des signaux, notamment près des bornes publicitaires ? Un gag.</p>

<p>Et les <i>progressive web apps (PWA)</i> alors ? Un plagiat ridicule des applications mobiles. Les utilisateurs ne comprennent pas comment les installer, ce n&#39;est pas naturel. On est toujours limité de près ou de loin par le navigateur. Ça impose d&#39;avoir du <i>JavaScript</i> pour gérer la mise en cache avec le <i>service worker</i>. Qui, lui, impose d&#39;être en HTTPS pour fonctionner. On pourrait s&#39;attendre à avoir des vraies évolutions, comme des <i>threads</i> ? Les <i>web workers</i> n&#39;y arrivent pas sérieusement. Sans compter qu&#39;encore aujourd’hui des API accessibles par les apps mobiles ne le sont pas par les PWA, et que par essence et par définition les apps mobiles natives seront toujours en avance sur l&#39;usage des terminaux contrairement aux PWA qui n&#39;innoveront jamais et persisteront à corriger le retard.</p>

<h2>Et les neutralités du net et du web ?</h2>

<p>Un lointain souvenir. Les adresses IP des VPN sont de plus en plus sur listes noires. Si on utilise des bloqueurs de pubs les sites sont inutilisables, soit délibérément, soit par conception maladroite. Il y a de plus en plus de discrimination envers les usagers, sans parler des problématiques réseaux. Le simple fait de vouloir utiliser <i>TOR</i> nous prive d&#39;une bonne part du web. Sans parler du fait que de plus en plus de sites web ne fonctionnent pas bien voire refusent de fonctionner selon les navigateurs. Ou alors vous imposeront des contrôles “anti robots” et des <em>captchas</em>, notamment si le site est géré par au hasard <i>Cloudfare</i>. Franchement, j&#39;en ai marre de résoudre des puzzles et d&#39;attendre qu&#39;un système obscur me donnent l&#39;accès à un site web. Parfois même les sessions sont suspendues car on est considéré comme autre chose qu&#39;un humain légitime. Désolé bande de clowns, j&#39;ai un logiciel qui bloque la publicité, le code <i>JavaScript</i> déloyal et qui me fait sortir ailleurs qu&#39;en France, juste pour protéger ma vie privée. Et c&#39;est justement à cause de vous si j&#39;en suis là. Escrocs.</p>

<h2>Un noyautage public</h2>

<p>Et pendant ce temps, on remarque que <i>Google</i> et consorts continuent leur noyautage du web et de ces instances, ainsi que le silotage de tout ça. Les <i>DRM</i> sont validés par le <i>W3C</i>, <i>Chromium</i> prend presque toutes les parts de marché et applique <a href="https://fr.wikipedia.org/wiki/Embrace,_extend_and_extinguish" title="Page Wikipédia de EEE">la stratégie 3E</a> : maintenant que la place est prise, on se débarrasse de ce qui est nuisible, comme par exemple <a href="https://www.01net.com/actualites/chrome-cest-la-fin-pour-ublock-origin-google-desactive-automatiquement-lextension.html" title="Article de 01net.com"><i>uBlock Origin</i></a>. De plus en plus de sites web se plient au règles de <i>Google</i> en terme de <i>SEO</i>.
<i>Google</i> est <a href="https://interpeer.org/blog/2023/07/google-vs-the-open-web/" title="Article sur le projet web environement integrity">en train de foutre en l&#39;air le web ouvert et libre</a>, et ce, délibérément avec son projet de <i>web environement integrity</i>.
On peut aussi parler du <i>Manifest v3</i> de <i>Google</i> <a href="https://www.clubic.com/actualite-509287-google-a-peur-de-firefox-et-on-vous-raconte-pourquoi.html" title="Article de Clubic">encadrant les extensions des navigateurs</a>, toujours pour favoriser les pisteurs et privilégier ce qui intéresse les géants du numérique en torpillant les projets qui préfèrent protéger les utilisateurs.
Ou encore des tentatives pour dégager des formats ouverts, <a href="https://www.fsf.org/blogs/community/googles-decision-to-deprecate-jpeg-xl-emphasizes-the-need-for-browser-choice-and-free-formats">notamment de la part de <i>Google</i> avec <i>JPEG-XL</i></a>.</p>

<h2>Le web social, boulimique, grotesque et égocentrique</h2>

<p>Le web 2.0, le web social, a amené les gens à s&#39;exprimer plus facilement, à créer du contenu, à en partager.
Forcément les gros <em>datavores</em> comme <i>Facebook</i> maintenant <i>Meta</i> mais aussi <i>X</i> anciennement <i>Twitter</i>, ou encore <i>Reddit</i> et j&#39;en passe, se sont rués dessus.
On incite les gens à créer, commenter, <em>liker</em>, partager. On engloutit autant de données personnelles que l&#39;on peut, soit en exploitant les contenus, soit leurs métadonnées. Et ensuite on se gave encore sur ça en créant de gros corpora de données pour entrainer des modèles d&#39;intelligence artificielle. Et on verrouille aussi les API, faisant qu&#39;un paquet d&#39;applications qui pouvaient interagir avec <i>Twitter</i> ou <i>Reddit</i> ont plié boutique.</p>

<p>L&#39;effet pervers de ce web social est qu&#39;il a fait naître les <em>influvoleurs et instabouffons</em>, dit autrement les influenceurs et dindons de tous poils qui commentent, donnent leurs avis, lustrent leurs communautés de blaireaux avec des <em>hot takes</em> claquées au sol ou en vendant des produits bidons. Même dans les milieux de la tech on en a, surtout dans le monde du développement web. Des paons et des dindons, formant des communautés de pigeons, gavés d&#39;articles <i>LinkedIn</i> mauvais, de vidéos <i>YouTube</i> médiocres, enfonçant des portes ouvertes et rendant le banal et classique tout simplement incroyable. Et quand on les met en face de leurs impostures, ils lâchent leurs chiens sans sommation pour protéger leur crédibilité fantoche. Ces gens là sont responsables de rendre les autres plus cons qu&#39;avant, et de leur faire croire à des rêves idiots.
<em>Regardez, c&#39;est facile de coder, waouh je fais des choses trop bien, vous allez être développeurs grâce à ma formation</em>. Résultat ? Trop de personnes s&#39;étant reconverties avec des formations minables, sans culture, sans bagage sérieux, saturant les marchés.</p>

<p>Je pensais que la communauté <i>Debian</i> était une des pires, avec sa mentalité <a href="https://fr.wikipedia.org/wiki/RTFM_%28expression%29" title="Page Wikipédia de RTFM"><em>RTFM</em></a>. Mais une communauté web la surclasse, celle qui adore le <i>JavaScript</i> et le <i>web front</i>  ; constamment soumise à la <em>hype</em>, à réinventer la roue, à s&#39;extasier devant des choses basiques ou peu originales, et à avoir l&#39;arrogance de croire que le web va tout surclasser. Pire encore, une partie des membres de cette communauté va se former à l&#39;arrache, et se croire meilleure. Heureusement, comme partout, il y a les bons et les mauvais artisans du logiciel, et j&#39;ai de chouettes collègues qui font du développement web, mais bon sang, je n&#39;ai jamais vu autant de <em>kikoos</em> et de crétins dans le développement web <em>front end</em>. On peut trop rapidement et trop facilement faire des choses, et surtout n&#39;importe quoi et n&#39;importe comment. Les mêmes nous font croire qu&#39;il n&#39;y a pas de problème à parler de <em>front end</em> quand on parle d&#39;apps <i>Android</i> et <i>iOS</i> ; ils n&#39;ont jamais touché à cet art pour comprendre à quel point ce propos est réducteur. Et de temps en temps, les mêmes, toujours, tentent de se tailler la part du lion en poussant leurs technologies à eux. <i>PhoneGap</i>, <i>Cordova</i>, <i>Ionic</i>, maintenant <i>React</i>. Autant de dette technique en puissance, voire en acte, et de dépendance à des outils que l&#39;on ne maîtrise pas, sans parler du fait que ni <i>Google</i> d&#39;un côté pour <i>Android</i>, ni <i>Apple</i> pour <i>iOS</i>, ni mêmes d&#39;autres acteurs comme <a href="https://e.foundation/e-os/" title="Site officiel"><i>/e/</i></a> ne recommendent, à l&#39;heure où j&#39;écris ce lignes, de passer par ces outils tiers. Bref, que les clowns du développement web <em>front end</em> s&#39;occupent déjà de faire des pages HTML propres et arrêtent d&#39;entretenir les porcs comme <i>Google</i> et tous ceux qui ont travesti le web et se gavent dessus. Ils pourront donner des leçons et polluer le développement d&#39;apps mobiles une fois que leur maison aura cessé de brûler. On n&#39;a pas besoin qu&#39;ils fassent les pompiers, juste que les flammes ne se propagent pas de chez eux à chez nous. Est-ce du <i>gatekeeping</i> ? Probablement, mais on en arrive là pour éviter le nivellement par le bas et l’uniformisation ridicules des environnements.</p>

<p>Le web social a permis le partage de la connaissance, il a aussi aidé à la fabrique du mensonge. On partageait aux autres avant, on s&#39;étale aux yeux du monde maintenant.</p>

<p>On pensait même être tranquille avec le <a href="https://www.fediverse.to/" title="Un site sur le fediverse"><i>fediverse</i></a> comme dans les écosystèmes <a href="https://joinmastodon.org/fr" title="Site officiel"><i>Mastodon</i></a> ou <a href="https://pixelfed.org/" title="Site officiel"><i>Pixelfed</i></a>, mais on trouve encore des géants du numérique comme <i>Meta</i> qui tentent de mettre un pied dans la porte afin de récupérer toujours plus de données avec <i>Threads</i> par exemple. Ces prédations capitalistes ne sont pas nouvelles ; <i>Google</i> avait réussi à torpiller <i>XMPP</i> il y a un moment, et impose ses règles concernant les courriers électroniques avec <i>Gmail</i>.</p>

<p>Et forcément, la pub, la pub, les pisteurs, la pub, la pub... qui explosent la taille des pages web et consomment davantage de bande passante.</p>

<h2>Bref</h2>

<p>Le web <a href="https://framablog.org/2020/12/30/le-web-est-il-devenu-trop-complique/" title="Article Framablog">est devenu trop compliqué</a>.
<a href="https://ploum.net/2024-06-05-complexite-simplicite.html">Nous avons oublié comme faire simple</a>.
On créé tous les jours du code <i>legacy</i>.
On est devenu dépendant d&#39;un navigateur.
On est face aux géants du numérique qui cloisonnent tout.
Le développement web est un développement au rabais.
Le web 2.0 a créé des dindons arrogants entretenant la fabrique du mensonge et la superficialité.
Le web est trop ravagé par les capitalismes de la donnée, de l&#39;attention et de la surveillance.
On a oublié toutes les valeurs initiales du web, et la merdification continue.</p>

<p>J&#39;espère qu&#39;on aura de belles histoires avec <a href="https://ploum.net/gemini-le-protocole-du-slow-web/index.html" title="Article de blog concernant Gemini"><i>Gemini</i></a> par exemple. Ou <a href="https://kittens.small-web.org/" title="On n&#39;y parle pas de chats"><i>Kittens</i></a> et le <em>small web</em>, ou le <em>slow web</em>.</p>

<p><b>Le web pue la merde, je ne l&#39;ai jamais autant détesté qu&#39;aujourd&#39;hui. Il était émancipateur. Il est devenu privateur.</b></p>

<h2>Quelques ressources en vrac pour aller plus loin et réfléchir un peu</h2>

<p><a href="https://www.defectivebydesign.org/blog/web_environment_integrity_is_an_all_out_attack_on_free_internet">1 – Sur le <em>web environment integrity</em></a>
<a href="https://web.developpez.com/actu/351558/Firefox-serait-au-bord-du-gouffre-avec-une-part-de-marche-qui-degringole-vers-le-seuil-critique-de-2-pourcent-en-dessous-duquel-certains-sites-Web-gouvernementaux-cessent-de-supporter-un-navigateur/">2 – Firefox meurt</a>
<a href="https://ar.al/2020/08/07/what-is-the-small-web/">3 – À propos du <em>small web</em></a>
<a href="https://www.viennawriter.net/blog/the-fediverse-meta-and-the-tolerance-paradox-en/" title="Article sur le fediverse et Meta">4 – <i>Meta</i> et le </i>fediverse</i>
<a href="https://www.citationneeded.news/we-can-have-a-different-web/">5 – On peut avoir un autre web</a>
<a href="https://gebna.gg/blog/brief-history-of-web-development/">6 – <em>A brief history of web development. And why your framework doesn&#39;t matter.</em></a>
<a href="https://www.arretsurimages.net/chroniques/clic-gauche/apocalypse-google">7 – L’apocalypse Google avec le web synthétique</a>
<a href="https://www.ieee-security.org/TC/SPW2015/W2SP/papers/W2SP_2015_submission_32.pdf">8 – <em>Tracking Protection in Firefox
For Privacy and Performance</em></a>
<a href="https://www.24joursdeweb.fr/2023/et-si-on-faisait-du-web-comme-en-1999-ou-presque/">9 – Et si on faisait du web comme en 1999, ou presque ?</a>
<a href="https://www.eff.org/deeplinks/2023/12/meet-spritely-and-veilid">10 – <em>Spritely and Veilid: Exciting Projects Building the Peer-to-Peer Web</em></a>
<a href="https://visionsmag.com/tariq-krim-le-slow-web-a-la-francaise/">11 – Tariq Krim : le <em>slow Web</em> à la française</a>
<a href="https://solidproject.org/">12 – <em>The SOLID project</em></a>
<a href="https://write.as/pylapp/retour-dexperience-concernant-le-navigateur-web-brave">13 – Retour d&#39;expérience concernant le navigateur web Brave</a>
<a href="https://write.as/pylapp/privacy-or-sensitive-data-a-list-of-tools-to-protect-your-ddzdz">14 – <em>Privacy or sensitive data… a list of tools to protect your дѕѕ</em></a>
<a href="https://write.as/pylapp/le-jour-ou-le-web-senfonca-un-peu-plus-dans-la-tombe">15 – Le jour où le Web s’enfonça un peu plus dans la tombe</a></p>

<h2>Wall of shame</h2>

<table>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/1.png" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/2.png" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/3.png" class="centerImage toBigImage"/>
</td>
</tr>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/4.jpeg" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/5.png" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/6.png" class="centerImage toBigImage"/>
</td>
</tr>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/7.png" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/8.png" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/9.png" class="centerImage toBigImage"/>
</td>
</tr>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/10.png" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/11.jpg" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/12.png" class="centerImage toBigImage"/>
</td>
</tr>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/13.png" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/14.png" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/27/15.png" class="centerImage toBigImage"/>
</td>
</tr>
</table>

<p>—
<i>Dernière mise à jour : lundi 23 décembre 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/la-supercherie-de-luniversalite-du-web</guid>
      <pubDate>Wed, 30 Oct 2024 09:23:17 +0000</pubDate>
    </item>
    <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>Kenavo l&#39;asso</title>
      <link>https://write.as/pylapp/kenavo-lasso?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1Kenavo l&#39;asso/h1&#xA;&#xA;i🇫🇷 – vendredi 19 avril 2024/i&#xA;&#xA;biMots clés : #AAEE, #ENSSAT, #associatif, #social, #fatigue/i/b&#xA;&#xA;Depuis le temps, il faudrait peut être exorciser le truc pour passer à autre chose.&#xA;Avec le temps, je me rends compte que la ressource la plus précieuse que l&#39;on ait est le temps justement. Temps qui, comme la fatigue, peut être notre ennemi. Et quand on fait de l&#39;associatif, qui est vraiment important en soit si on s&#39;y retrouve et que l&#39;on a l&#39;impression d&#39;être utile, le temps et la fatigue peuvent jouer énormément.&#xA;&#xA;J&#39;ai obtenu mon diplôme d&#39;ingénieur &#34;informatique, multimédia et réseaux&#34; à a href=&#34;https://www.enssat.fr/&#34;l&#39;ENSSAT, sur Lannion/a, école d&#39;ailleurs que je recommande tant pour son équipe éducative, les enseignements, les intervenants extérieurs, le programme et aussi la volonté de toujours faire mieux. C&#39;était en 2015, et j&#39;ai rejoint son association d&#39;anciens élèves en 2016. Si c&#39;était à refaire, je le referais sans hésiter.&#xA;&#xA;L&#39;ENSSAT est une &#34;petite&#34; école d&#39;ingénieur, mais qui bouge et qui grossit. Son association d&#39;anciens élèves, a href=&#34;https://aaee.enssat.fr/&#34;l&#39;AAEE/a, est aussi de taille modeste. En effet, on est loin de ces très grandes écoles corporatistes, usines à ingénieurs de salon généralistes, avec des réseaux d&#39;anciens énormes, qui parfois ont pour travers de maintenir le réseautage et l&#39;entre-soit. En rejoignant l&#39;association, j&#39;avais envie de m&#39;y investir, de faire des choses pour elle et pour l&#39;école, et aussi de travailler sur ça avec d&#39;anciens élèves, d&#39;anciens camarades, et si ce n&#39;était pas encore le cas, de bons potes. Mais 6 ans après, il était temps d&#39;arrêter, de suivre de loin et de soutenir comme je pouvais, car le temps disponible se faisait rare et l&#39;énergie n&#39;était plus là, alors autant ne pas s&#39;acharner si on a fait sa part. Je n&#39;aime pas l&#39;idée de faire du ijob protection/i et de garder sa place au chaud ; si je ne sers à rien, je sors.&#xA;&#xA;En soit, le bilan n&#39;était pas si mal. On a organisé des évènements comme des iafterworks/i dans différentes villes, la traditionnelle rencontre annuelle entre étudiants et anciens, et aussi des ibrunchs/i. En plus de ça, du relai d&#39;information aux diplômés, des discussions avec abbr title=&#34;Ingénieurs Et Scientifiques de France&#34;IESF/abbr, de la communication sur les réseaux sociaux et d&#39;autres chantiers plus ou moins inachevés. Un autre projet important concernait la emcaisse de secours/em que l&#39;on maintenait pour les étudiants en galère, que ce soit pour avancer des frais ou parce que les fins de mois étaient trop difficiles. Ça fait se nouer le ventre, mais ça permet de garder les pieds sur terre. Au moins on en aura aidé et sorti de la galère.&#xA;&#xA;Le sujet de cette caisse de secours était épineux. D&#39;une part des étudiants, une fois diplômés, et avec des situations correctes, malgré les relances, refusaient de rembourser les prêts d&#39;honneur qu&#39;on leur avait octroyés pour les sortir de la merde. On s&#39;est posé la question de passer par un huissier ou une entreprise spécialisée, mais ça nous aurait coûté encore plus d&#39;argent sur un budget serré. Et d&#39;autre part, des diplômés se permettaient de critiquer nos actions ; on se faisait reprocher d&#39;aider des étudiants en galère alors qu&#39;on ne leur payait pas les premiers verres en iafterworks/i, à eux (qui avaient une activité salariée). Peu importe l&#39;école, il y aura toujours de beaux connards.&#xA;&#xA;Un autre sujet pénible était le peu de retours sur nos iafterworks/i. La chose est d&#39;une simplicité dingue pourtant : chercher un bar, convenir d&#39;une date, et venir. Pour ces évènements, on a eu peu de monde par moment, et pour ceux qui ont bien marché il a fallu vraiment insister pour faire venir du monde. Pire encore, des lieux avaient été réservés pour un nombre de personnes ayant accepté de venir, et les entrées étaient bien en dessous des chiffres prévus. Manque de respect et fatigue de voir que des adultes ne sont même pas capables de tenir un engagement ou de prévenir.&#xA;&#xA;On nous a reproché de ne pas être visible sur les réseaux sociaux. Toujours preneurs de remarques et suggestions, on a amélioré la chose : a href=&#34;https://twitter.com/anciensEnssat&#34;Twitter/a (pas encore X à l&#39;époque), a href=&#34;https://www.instagram.com/anciensenssat/&#34;Instagram/a, a href=&#34;https://mamot.fr/@anciensEnssat&#34;Mastodon/a, une a href=&#34;https://www.linkedin.com/company/84089191/admin/feed/posts/&#34;page publique LinkedIn/a et une refonte du a href=&#34;https://www.linkedin.com/groups/1278167/&#34;groupe privé/a. Même avec ces efforts, pas de retours, pas d&#39;avis, pas d&#39;abonnés. On avait même mis en place un serveur iDiscord/i pour favoriser les échanges et le partage d&#39;information, et ça ne décolle toujours pas. Le bilan était décevant, et on ne comprend pas pourquoi ça n&#39;a pas décollé.&#xA;&#xA;On avait aussi pas mal travaillé sur le partage des cours aux anciens diplômés afin de favoriser la diffusion des connaissances. Ce fut une belle galère ; entre les problématiques techniques de la plateforme à choisir et les réticences de certains enseignants, on n&#39;avait finalement pas pu aller bien loin.&#xA;&#xA;L&#39;autre sujet le plus chaud concernait IESF. J&#39;ai une particulière aversion pour les corporatismes de tous bords et de tous poils, qui se contentent d&#39;exister et se tapent sur le ventre à la moindre occasion de rappeler qu&#39;ils sont là. Cette association était pénible et le dialogue était plus que compliqué avec. En même temps, les conseils d&#39;administration de ventres bedonnants et de cheveux blancs semblent bien, bien loin de la réalité du terrain et du métier d&#39;ingénieur ainsi que des associations d&#39;alumni qui ne sont pas assez grosses et prestigieuses pour eux.&#xA;Déjà, la cotisation à payer tous les ans était exorbitante et représentait une partie énorme de notre budget. Pourtant, les services disponibles en contre-parties ne nous étaient d&#39;aucune utilité. Peut-être que pour de grosses et vieilles associations parisiennes ils l&#39;étaient, mais pour le reste du pays non. Malgré des tractations pénibles ayant réussi à leur arracher une réduction dérisoire de 50 €, l&#39;adhésion était à 500 € par an. Près de la moitié de notre budget pour louer des salles sur Paris à prix réduits, bénéficier du service a href=&#34;https://www.iesf.fr/752p54972/labellis.html&#34;Labellis/a pour certifier via iblockchains/i les diplômes, et inscrire les étudiants au Registre National des Ingénieurs (RNI), chasse gardée d&#39;IESF, c&#39;est non. Car oui, même si on a un diplôme d&#39;ingénieur, validé par la CTI, on peut ne pas être dans ce RNI car une association poussiéreuse fait du igate keeping/i.  On a pourtant demandé des métriques sur ces services : qui les utilisent, combien de requêtes sont faîtes, quels types de résultats, bref on voulait savoir dans quoi notre argent allait servir. On n&#39;a jamais eu les chiffres demandés à part des approximations grossières au pifomètre. On nous affirmait que des milliers de requêtes étaient faîtes par mois sur le RNI ; un débugueur de navigateur web nous montrait que la saisie de chaque caractère dans le formulaire de recherche envoyait une requête. Autrement dit, si je saisis mon nom, j&#39;envoie 10 requêtes, de quoi donner des chiffres incroyables ! Outre le fait que l&#39;autocomplétion n&#39;est pas compatible avec l&#39;ecoconception et n&#39;est pas vraiment recommandée dans le RGESN, ce calcul grossier de métriques est ridicule. &#34;Ingénieurs et scientifiques&#34; donc. Les prises de contact en direct n&#39;aboutissaient pas, il fallait les chatouiller sur les réseaux sociaux pour susciter des réactions agacées, mais amenant quand même la possibilité de discuter un peu. Ce ne fut pas utile iin fine/i, mais bon, au moins leur responsable communication s&#39;est donné la peine d&#39;échanger, merci à lui. On avait réussi à remonter le fait qu&#39;IESF était trop franco-parisienne et exclusive, ce qui a mené à une création maladroite d&#39;entités régionales IESF, plus ou moins inféodées à la structure principale, mais pas trop. Dit autrement, pour profiter de IESF Bretagne, il fallait adhérer à IESF Bretagne. Pour profiter d&#39;IESF France, il fallait y adhérer aussi, donc double peine, double adhésion, encore plus de dépenses. Et l&#39;entité nationale ne soutenait pas d&#39;une quelconque manière l&#39;entité régionale, pas la bretonne en tout cas.&#xA;Bref, quand le budget d&#39;une association est constitué des dons et adhésions de ses membres, c&#39;était dur de justifier ce gaspillage de moyens pour des services rendus inutiles ou dont l’utilité n&#39;était pas démontrée. À la fin, on a finit par se faire exclure, n&#39;ayant pas payé notre dernière cotisation. On nous avait même dit que les temps étaient durs pour eux aussi ; en même temps quand on voyait les bilans en assemblées générales, il aurait été facile d&#39;économiser sur certaines rémunérations, les cocktails et des services payés bien trop chers. Ils nous demandaient même de payer pour avoir le résultat des enquêtes d&#39;insertions des ingénieurs que nous avions nous-mêmes relayés auprès de nos diplômés ! À force de les secouer, nous avions enfin pu avoir a href=&#34;https://aaee.enssat.fr/news/news?newsid=167&#34;un échange entre le président de IESF et la présidente de l&#39;association de l&#39;époque/a.&#xA;Mais bon, ils nous auront vite oubliés je pense, à défaut d&#39;avoir vraiment pensé aux petites structures. C&#39;est pas faute a href=&#34;https://aaee.enssat.fr/news/news?newsid=174&#34;d&#39;avoir tenté de rejoindre le poste d&#39;administrateur IESF/a sans succès.&#xA;&#xA;En plus de ça, les critiques des uns et des autres finissaient par être pénibles à encaisser. Entre les anciens qui critiquent sans s&#39;investir ou comprendre, et les étudiants qui font de même, dur de consolider la diaspora enssatienne et d&#39;en faire quelque chose de chouette. Heureusement que l&#39;on avait quand même des anciens qui étaient là et savaient soutenir au besoin. On sait sur qui on peut compter.&#xA;&#xA;On a eu aussi pour projet de valoriser certains profils de femmes ingénieures, ou encore de faire des témoignages de personnes étant dans de grands groupes, peut-être qu&#39;en flattant les égos ça aurait marché : a href=&#34;https://www.linkedin.com/in/jean-emmanuel-ezin-71991019/&#34;Saint Gobain/a, a href=&#34;https://www.linkedin.com/in/sylvainragot/&#34;Ubisoft/a, a href=&#34;https://www.linkedin.com/in/fabien-le-poche-9664a67a/&#34;Arkéa/a, a href=&#34;https://www.linkedin.com/in/nadine-varet-9696105/&#34;Cisco et SFR/a, a href=&#34;https://www.linkedin.com/in/jean-christophe-varet-114274b/&#34;Airbus Helicopters/a, a href=&#34;https://www.linkedin.com/in/pascal-dussert-56b28a4/&#34;Philips/a, a href=&#34;https://www.linkedin.com/in/mathias-marie-95798322/&#34;ING/a, a href=&#34;https://www.linkedin.com/in/franck-maussion-26a41964/&#34;Sagem/a, a href=&#34;https://www.linkedin.com/in/laurent-olichet-b5600856/&#34;VMWare/a, a href=&#34;https://www.linkedin.com/in/jeromedubreuil-cto-cdo-cpo/&#34;Decathlon/a, a href=&#34;https://www.linkedin.com/in/mathiassalle/&#34;Google/a, a href=&#34;https://www.linkedin.com/in/gaellerousset/&#34;STMicroelectronics et NXP/a, a href=&#34;https://www.linkedin.com/in/sabine-kerherv%C3%A9-3403961/&#34;Enedis/a, a href=&#34;https://www.linkedin.com/in/michaelbordfr/&#34;Betclic/a, a href=&#34;https://www.linkedin.com/in/quocthainguyen/&#34;Huawei/a, a href=&#34;https://www.linkedin.com/in/marcbee/&#34;Amadeus/a, a href=&#34;https://www.linkedin.com/in/julie-rabette/&#34;Nokia/a, a href=&#34;https://www.linkedin.com/in/nadabrisville/&#34;Microsoft/a, le a href=&#34;https://www.linkedin.com/in/guillaume-chataignier-2268b1100/&#34;CEA/a, a href=&#34;https://www.linkedin.com/in/davidletacon/&#34;NVIDIA/a, a href=&#34;https://www.linkedin.com/in/gharoland/&#34;Oracle/a, mais aussi à l&#39;époque iIntel/i, iFacebook/i, a href=&#34;https://www.linkedin.com/in/antoinemenes/&#34;l&#39;Armée de l&#39;Air et de l&#39;Espace/a..... Bref il y avait moyen de faire quelque chose. Certains n&#39;ont jamais répondu ou voulu répondre, et quand aux données récoltées et analysées, peu de personnes dans l&#39;association ne voulaient les exploiter et contacter les anciens ayant répondu.&#xA;&#xA;Autre point de crispation, des divergences de point de vue avec certaines instances de l&#39;école. Jusque là, on s&#39;occupait de grossir l&#39;association et de s&#39;affairer à construire la diaspora enssatienne, en reprenant contact avec tout le monde. Mais avec le nouveau conseil de l’époque, il y avait trop de divergence. Les cheveux blancs du monde d&#39;avant préféraient que ce soit l&#39;association qui verse une cotisation à l&#39;école, sans forcément réfléchir aux conséquences que ça avait, et la direction de l&#39;école préférait s&#39;aligner sur les autres établissements en ne soutenant pas la cotisation à IESF. &#xA;&#xA;Concernant les finances, on avait ponctuellement et marginalement du isponsoring/i d&#39;entreprises locales notamment pour éditer nos annuaires papiers. On a pu creuser le sujet aussi d&#39;être reconnu d&#39;intérêt général ou d&#39;utilité publique, mais les associations d&#39;anciens élèves ne sont pas compatibles avec ces critères. Ainsi, pas de dons défiscalisés possibles, donc peu d&#39;entrées d&#39;argent.&#xA;&#xA;Et à ça s&#39;ajoutent les autres crispations : peu de réponses des diplômés, peu d&#39;investissement d&#39;une partie du conseil d&#39;administration, concours de yakafokonsufide, des critiques de toutes parts... bref il fallait s&#39;arrêter.&#xA;&#xA;Y&#39;avait encore pas mal de choses à faire : faire des interviews des diplômés, chercher des faits marquants des anciens, se rapprocher d&#39;entreprises pour leur parler de la taxe d&#39;apprentissage, mettre à jour le site web, gérer le recouvrement de la caisse de secours, dynamiser l&#39;année avec des évènements dans plusieurs villes... mais trop peu de moyens humains n&#39;étaient mis, même pas un tiers du conseil d&#39;administration à faire tourner la boutique, et faisant partie du reste des personnes actives, ça m&#39;a usé d&#39;en faire autant avec si peu de copains.&#xA;&#xA;C&#39;est con, mais ça fait du bien de se vider la tête une dernière fois pour ne plus y penser. Au moins j&#39;ai gardé de bons potes qui se reconnaitront, le noyau dur du conseil d&#39;administration, les vieux schnocks. J&#39;ai constaté qu&#39;avec d&#39;autres membres du bureau il y avait trop de divergences de points de vue sur la façon de faire, autant partir plutôt que de laisser les relations se dégrader et finir fâchés.&#xA;&#xA;On aurait pu faire tellement plus et bien mieux, mais bon, c&#39;était chouette quand même. Bon courage à celles et ceux qui prendront la suite.&#xA;&#xA;--&#xA;iDernière mise à jour : mardi 23 avril 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>Kenavo l&#39;asso</h1>

<p><i>🇫🇷 – vendredi 19 avril 2024</i></p>

<p><b><i>Mots clés : <a href="https://write.as/pylapp/tag:AAEE" class="hashtag"><span>#</span><span class="p-category">AAEE</span></a>, <a href="https://write.as/pylapp/tag:ENSSAT" class="hashtag"><span>#</span><span class="p-category">ENSSAT</span></a>, <a href="https://write.as/pylapp/tag:associatif" class="hashtag"><span>#</span><span class="p-category">associatif</span></a>, <a href="https://write.as/pylapp/tag:social" class="hashtag"><span>#</span><span class="p-category">social</span></a>, <a href="https://write.as/pylapp/tag:fatigue" class="hashtag"><span>#</span><span class="p-category">fatigue</span></a></i></b></p>

<p>Depuis le temps, il faudrait peut être exorciser le truc pour passer à autre chose.
Avec le temps, je me rends compte que la ressource la plus précieuse que l&#39;on ait est le temps justement. Temps qui, comme la fatigue, peut être notre ennemi. Et quand on fait de l&#39;associatif, qui est vraiment important en soit si on s&#39;y retrouve et que l&#39;on a l&#39;impression d&#39;être utile, le temps et la fatigue peuvent jouer énormément.</p>

<p>J&#39;ai obtenu mon diplôme d&#39;ingénieur “informatique, multimédia et réseaux” à <a href="https://www.enssat.fr/">l&#39;ENSSAT, sur Lannion</a>, école d&#39;ailleurs que je recommande tant pour son équipe éducative, les enseignements, les intervenants extérieurs, le programme et aussi la volonté de toujours faire mieux. C&#39;était en 2015, et j&#39;ai rejoint son association d&#39;anciens élèves en 2016. Si c&#39;était à refaire, je le referais sans hésiter.</p>

<p>L&#39;ENSSAT est une “petite” école d&#39;ingénieur, mais qui bouge et qui grossit. Son association d&#39;anciens élèves, <a href="https://aaee.enssat.fr/">l&#39;AAEE</a>, est aussi de taille modeste. En effet, on est loin de ces très grandes écoles corporatistes, usines à ingénieurs de salon généralistes, avec des réseaux d&#39;anciens énormes, qui parfois ont pour travers de maintenir le réseautage et l&#39;entre-soit. En rejoignant l&#39;association, j&#39;avais envie de m&#39;y investir, de faire des choses pour elle et pour l&#39;école, et aussi de travailler sur ça avec d&#39;anciens élèves, d&#39;anciens camarades, et si ce n&#39;était pas encore le cas, de bons potes. Mais 6 ans après, il était temps d&#39;arrêter, de suivre de loin et de soutenir comme je pouvais, car le temps disponible se faisait rare et l&#39;énergie n&#39;était plus là, alors autant ne pas s&#39;acharner si on a fait sa part. Je n&#39;aime pas l&#39;idée de faire du <i>job protection</i> et de garder sa place au chaud ; si je ne sers à rien, je sors.</p>

<p>En soit, le bilan n&#39;était pas si mal. On a organisé des évènements comme des <i>afterworks</i> dans différentes villes, la traditionnelle rencontre annuelle entre étudiants et anciens, et aussi des <i>brunchs</i>. En plus de ça, du relai d&#39;information aux diplômés, des discussions avec <abbr title="Ingénieurs Et Scientifiques de France">IESF</abbr>, de la communication sur les réseaux sociaux et d&#39;autres chantiers plus ou moins inachevés. Un autre projet important concernait la <em>caisse de secours</em> que l&#39;on maintenait pour les étudiants en galère, que ce soit pour avancer des frais ou parce que les fins de mois étaient trop difficiles. Ça fait se nouer le ventre, mais ça permet de garder les pieds sur terre. Au moins on en aura aidé et sorti de la galère.</p>

<p>Le sujet de cette caisse de secours était épineux. D&#39;une part des étudiants, une fois diplômés, et avec des situations correctes, malgré les relances, refusaient de rembourser les prêts d&#39;honneur qu&#39;on leur avait octroyés pour les sortir de la merde. On s&#39;est posé la question de passer par un huissier ou une entreprise spécialisée, mais ça nous aurait coûté encore plus d&#39;argent sur un budget serré. Et d&#39;autre part, des diplômés se permettaient de critiquer nos actions ; on se faisait reprocher d&#39;aider des étudiants en galère alors qu&#39;on ne leur payait pas les premiers verres en <i>afterworks</i>, à eux (qui avaient une activité salariée). Peu importe l&#39;école, il y aura toujours de beaux connards.</p>

<p>Un autre sujet pénible était le peu de retours sur nos <i>afterworks</i>. La chose est d&#39;une simplicité dingue pourtant : chercher un bar, convenir d&#39;une date, et venir. Pour ces évènements, on a eu peu de monde par moment, et pour ceux qui ont bien marché il a fallu vraiment insister pour faire venir du monde. Pire encore, des lieux avaient été réservés pour un nombre de personnes ayant accepté de venir, et les entrées étaient bien en dessous des chiffres prévus. Manque de respect et fatigue de voir que des adultes ne sont même pas capables de tenir un engagement ou de prévenir.</p>

<p>On nous a reproché de ne pas être visible sur les réseaux sociaux. Toujours preneurs de remarques et suggestions, on a amélioré la chose : <a href="https://twitter.com/anciensEnssat">Twitter</a> (pas encore X à l&#39;époque), <a href="https://www.instagram.com/anciensenssat/">Instagram</a>, <a href="https://mamot.fr/@anciensEnssat">Mastodon</a>, une <a href="https://www.linkedin.com/company/84089191/admin/feed/posts/">page publique LinkedIn</a> et une refonte du <a href="https://www.linkedin.com/groups/1278167/">groupe privé</a>. Même avec ces efforts, pas de retours, pas d&#39;avis, pas d&#39;abonnés. On avait même mis en place un serveur <i>Discord</i> pour favoriser les échanges et le partage d&#39;information, et ça ne décolle toujours pas. Le bilan était décevant, et on ne comprend pas pourquoi ça n&#39;a pas décollé.</p>

<p>On avait aussi pas mal travaillé sur le partage des cours aux anciens diplômés afin de favoriser la diffusion des connaissances. Ce fut une belle galère ; entre les problématiques techniques de la plateforme à choisir et les réticences de certains enseignants, on n&#39;avait finalement pas pu aller bien loin.</p>

<p>L&#39;autre sujet le plus chaud concernait IESF. J&#39;ai une particulière aversion pour les corporatismes de tous bords et de tous poils, qui se contentent d&#39;exister et se tapent sur le ventre à la moindre occasion de rappeler qu&#39;ils sont là. Cette association était pénible et le dialogue était plus que compliqué avec. En même temps, les conseils d&#39;administration de ventres bedonnants et de cheveux blancs semblent bien, bien loin de la réalité du terrain et du métier d&#39;ingénieur ainsi que des associations d&#39;alumni qui ne sont pas assez grosses et prestigieuses pour eux.
Déjà, la cotisation à payer tous les ans était exorbitante et représentait une partie énorme de notre budget. Pourtant, les services disponibles en contre-parties ne nous étaient d&#39;aucune utilité. Peut-être que pour de grosses et vieilles associations parisiennes ils l&#39;étaient, mais pour le reste du pays non. Malgré des tractations pénibles ayant réussi à leur arracher une réduction dérisoire de 50 €, l&#39;adhésion était à 500 € par an. Près de la moitié de notre budget pour louer des salles sur Paris à prix réduits, bénéficier du service <a href="https://www.iesf.fr/752_p_54972/labellis.html">Labellis</a> pour certifier via <i>blockchains</i> les diplômes, et inscrire les étudiants au Registre National des Ingénieurs (RNI), chasse gardée d&#39;IESF, c&#39;est non. Car oui, même si on a un diplôme d&#39;ingénieur, validé par la CTI, on peut ne pas être dans ce RNI car une association poussiéreuse fait du <i>gate keeping</i>.  On a pourtant demandé des métriques sur ces services : qui les utilisent, combien de requêtes sont faîtes, quels types de résultats, bref on voulait savoir dans quoi notre argent allait servir. On n&#39;a jamais eu les chiffres demandés à part des approximations grossières au pifomètre. On nous affirmait que des milliers de requêtes étaient faîtes par mois sur le RNI ; un débugueur de navigateur web nous montrait que la saisie de chaque caractère dans le formulaire de recherche envoyait une requête. Autrement dit, si je saisis mon nom, j&#39;envoie 10 requêtes, de quoi donner des chiffres incroyables ! Outre le fait que l&#39;autocomplétion n&#39;est pas compatible avec l&#39;ecoconception et n&#39;est pas vraiment recommandée dans le RGESN, ce calcul grossier de métriques est ridicule. “Ingénieurs et scientifiques” donc. Les prises de contact en direct n&#39;aboutissaient pas, il fallait les chatouiller sur les réseaux sociaux pour susciter des réactions agacées, mais amenant quand même la possibilité de discuter un peu. Ce ne fut pas utile <i>in fine</i>, mais bon, au moins leur responsable communication s&#39;est donné la peine d&#39;échanger, merci à lui. On avait réussi à remonter le fait qu&#39;IESF était trop franco-parisienne et exclusive, ce qui a mené à une création maladroite d&#39;entités régionales IESF, plus ou moins inféodées à la structure principale, mais pas trop. Dit autrement, pour profiter de IESF Bretagne, il fallait adhérer à IESF Bretagne. Pour profiter d&#39;IESF France, il fallait y adhérer aussi, donc double peine, double adhésion, encore plus de dépenses. Et l&#39;entité nationale ne soutenait pas d&#39;une quelconque manière l&#39;entité régionale, pas la bretonne en tout cas.
Bref, quand le budget d&#39;une association est constitué des dons et adhésions de ses membres, c&#39;était dur de justifier ce gaspillage de moyens pour des services rendus inutiles ou dont l’utilité n&#39;était pas démontrée. À la fin, on a finit par se faire exclure, n&#39;ayant pas payé notre dernière cotisation. On nous avait même dit que les temps étaient durs pour eux aussi ; en même temps quand on voyait les bilans en assemblées générales, il aurait été facile d&#39;économiser sur certaines rémunérations, les cocktails et des services payés bien trop chers. Ils nous demandaient même de payer pour avoir le résultat des enquêtes d&#39;insertions des ingénieurs que nous avions nous-mêmes relayés auprès de nos diplômés ! À force de les secouer, nous avions enfin pu avoir <a href="https://aaee.enssat.fr/news/news?newsid=167">un échange entre le président de IESF et la présidente de l&#39;association de l&#39;époque</a>.
Mais bon, ils nous auront vite oubliés je pense, à défaut d&#39;avoir vraiment pensé aux petites structures. C&#39;est pas faute <a href="https://aaee.enssat.fr/news/news?newsid=174">d&#39;avoir tenté de rejoindre le poste d&#39;administrateur IESF</a> sans succès.</p>

<p>En plus de ça, les critiques des uns et des autres finissaient par être pénibles à encaisser. Entre les anciens qui critiquent sans s&#39;investir ou comprendre, et les étudiants qui font de même, dur de consolider la diaspora enssatienne et d&#39;en faire quelque chose de chouette. Heureusement que l&#39;on avait quand même des anciens qui étaient là et savaient soutenir au besoin. On sait sur qui on peut compter.</p>

<p>On a eu aussi pour projet de valoriser certains profils de femmes ingénieures, ou encore de faire des témoignages de personnes étant dans de grands groupes, peut-être qu&#39;en flattant les égos ça aurait marché : <a href="https://www.linkedin.com/in/jean-emmanuel-ezin-71991019/">Saint Gobain</a>, <a href="https://www.linkedin.com/in/sylvainragot/">Ubisoft</a>, <a href="https://www.linkedin.com/in/fabien-le-poche-9664a67a/">Arkéa</a>, <a href="https://www.linkedin.com/in/nadine-varet-9696105/">Cisco et SFR</a>, <a href="https://www.linkedin.com/in/jean-christophe-varet-114274b/">Airbus Helicopters</a>, <a href="https://www.linkedin.com/in/pascal-dussert-56b28a4/">Philips</a>, <a href="https://www.linkedin.com/in/mathias-marie-95798322/">ING</a>, <a href="https://www.linkedin.com/in/franck-maussion-26a41964/">Sagem</a>, <a href="https://www.linkedin.com/in/laurent-olichet-b5600856/">VMWare</a>, <a href="https://www.linkedin.com/in/jeromedubreuil-cto-cdo-cpo/">Decathlon</a>, <a href="https://www.linkedin.com/in/mathiassalle/">Google</a>, <a href="https://www.linkedin.com/in/gaellerousset/">STMicroelectronics et NXP</a>, <a href="https://www.linkedin.com/in/sabine-kerherv%C3%A9-3403961/">Enedis</a>, <a href="https://www.linkedin.com/in/michaelbordfr/">Betclic</a>, <a href="https://www.linkedin.com/in/quocthainguyen/">Huawei</a>, <a href="https://www.linkedin.com/in/marcbee/">Amadeus</a>, <a href="https://www.linkedin.com/in/julie-rabette/">Nokia</a>, <a href="https://www.linkedin.com/in/nadabrisville/">Microsoft</a>, le <a href="https://www.linkedin.com/in/guillaume-chataignier-2268b1100/">CEA</a>, <a href="https://www.linkedin.com/in/davidletacon/">NVIDIA</a>, <a href="https://www.linkedin.com/in/gharoland/">Oracle</a>, mais aussi à l&#39;époque <i>Intel</i>, <i>Facebook</i>, <a href="https://www.linkedin.com/in/antoinemenes/">l&#39;Armée de l&#39;Air et de l&#39;Espace</a>..... Bref il y avait moyen de faire quelque chose. Certains n&#39;ont jamais répondu ou voulu répondre, et quand aux données récoltées et analysées, peu de personnes dans l&#39;association ne voulaient les exploiter et contacter les anciens ayant répondu.</p>

<p>Autre point de crispation, des divergences de point de vue avec certaines instances de l&#39;école. Jusque là, on s&#39;occupait de grossir l&#39;association et de s&#39;affairer à construire la diaspora enssatienne, en reprenant contact avec tout le monde. Mais avec le nouveau conseil de l’époque, il y avait trop de divergence. Les cheveux blancs du monde d&#39;avant préféraient que ce soit l&#39;association qui verse une cotisation à l&#39;école, sans forcément réfléchir aux conséquences que ça avait, et la direction de l&#39;école préférait s&#39;aligner sur les autres établissements en ne soutenant pas la cotisation à IESF.</p>

<p>Concernant les finances, on avait ponctuellement et marginalement du <i>sponsoring</i> d&#39;entreprises locales notamment pour éditer nos annuaires papiers. On a pu creuser le sujet aussi d&#39;être reconnu d&#39;intérêt général ou d&#39;utilité publique, mais les associations d&#39;anciens élèves ne sont pas compatibles avec ces critères. Ainsi, pas de dons défiscalisés possibles, donc peu d&#39;entrées d&#39;argent.</p>

<p>Et à ça s&#39;ajoutent les autres crispations : peu de réponses des diplômés, peu d&#39;investissement d&#39;une partie du conseil d&#39;administration, concours de yakafokonsufide, des critiques de toutes parts... bref il fallait s&#39;arrêter.</p>

<p>Y&#39;avait encore pas mal de choses à faire : faire des interviews des diplômés, chercher des faits marquants des anciens, se rapprocher d&#39;entreprises pour leur parler de la taxe d&#39;apprentissage, mettre à jour le site web, gérer le recouvrement de la caisse de secours, dynamiser l&#39;année avec des évènements dans plusieurs villes... mais trop peu de moyens humains n&#39;étaient mis, même pas un tiers du conseil d&#39;administration à faire tourner la boutique, et faisant partie du reste des personnes actives, ça m&#39;a usé d&#39;en faire autant avec si peu de copains.</p>

<p>C&#39;est con, mais ça fait du bien de se vider la tête une dernière fois pour ne plus y penser. Au moins j&#39;ai gardé de bons potes qui se reconnaitront, le noyau dur du conseil d&#39;administration, les vieux schnocks. J&#39;ai constaté qu&#39;avec d&#39;autres membres du bureau il y avait trop de divergences de points de vue sur la façon de faire, autant partir plutôt que de laisser les relations se dégrader et finir fâchés.</p>

<p>On aurait pu faire tellement plus et bien mieux, mais bon, c&#39;était chouette quand même. Bon courage à celles et ceux qui prendront la suite.</p>

<p>—
<i>Dernière mise à jour : mardi 23 avril 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/kenavo-lasso</guid>
      <pubDate>Fri, 19 Apr 2024 14:20:21 +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>J&#39;ai quitté Twitter à cause de Musk et des communautés tech</title>
      <link>https://write.as/pylapp/pourquoi-jai-quitte-twitter?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1J&#39;ai quitté Twitter à cause de Musk et des communautés tech/h1&#xA;&#xA;i🇫🇷 – jeudi 27 juillet 2023/i&#xA;&#xA;bMots clés : #Twitter, #tech, #dev, #Musk, #communautés/b&#xA;&#xA;Mardi 25 juillet 2023, j&#39;ai décidé de laisser tomber Twitter, et finalement on s&#39;en fout. Mais je trouve que c&#39;est pertinent d&#39;expliquer pourquoi, et je n&#39;ai plus envie de me répéter car au delà des lubies idiotes d&#39;Elon Musk il y a aussi une autre variable à prendre en compte : les communautés.&#xA;&#xA;h2Musk, ou le saccage accéléré de l&#39;outil/h2&#xA;&#xA;Elon Musk, de mon modeste point de vue, a flingué Twitter, même s&#39;il n&#39;a pas eu l&#39;exclusivité de le faire. Depuis un moment la publicité occupait une place non négligeable, tout comme les trolls ou les comptes de robots. Mais en soit, on y était déjà habitué, ici ou ailleurs.&#xA;En quelques mois, ce libertarien d&#39;extrême droite néo-fachiste de Musk aura pourri Twitter après le irunning gag/i a href=&#34;https://www.numerama.com/tech/1134804-elon-musk-achete-twitter-pour-le-detruire.html&#34; title=&#34;Article de Numerama&#34;de l&#39;achat de la plateforme/a.&#xA;&#xA;Déjà, les clients tiers ont été chassés sans sommation. Et c&#39;est dommage. Dommageable car on avait grâce à ces apps open source une diversité d&#39;usage, de abbr title=&#34;Interface Utilisateur&#34;UI/abbr et de abbr title=&#34;eXpérience Utilisateur&#34;UX/abbr permettant de profiter de Twitter mais différemment. À l&#39;époque j&#39;aimais bien a href=&#34;https://www.frandroid.com/android/105022tweetline-un-nouveau-client-twitter-alternatif-en-version-alpha&#34; title=&#34;Article de FrAndroid&#34;Tweetline/a et a href=&#34;https://github.com/TwidereProject&#34; title=&#34;Espace GitHub de Twidere&#34;Twidere/a.&#xA;Chasser ces apps est un coup dur pour les développeurs et les utilisateurs, et permet d&#39;imposer l&#39;app officielle gavée de traceurs, de permissions à demander et de publicité (comme le montre a href=&#34;https://reports.exodus-privacy.eu.org/fr/reports/com.twitter.android/latest/&#34; title=&#34;Rapport de Exodus Privacy&#34;ce rapport de εxodus/a).&#xA;&#xA;Ensuite les API ont été partiellement fermées ou a href=&#34;https://www.numerama.com/tech/1256120-elon-musk-saccage-encore-les-regles-de-twitter-et-va-tuer-des-milliers-de-comptes.html&#34; title=&#34;Article de Numerama&#34;sont devenues payantes/a, avec des tarifs exorbitants. Des services intéressants se sont donc retrouvés obligés de fermer boutique car financièrement ils n&#39;étaient plus viables.&#xA;&#xA;L&#39;autre coup de massue fut la refonte des comptes certifiés. Dorénavant, il suffit de remplir quelques règles et de payer, alors qu&#39;avant un simulacre d&#39;enquête était fait et des éléments attestant de la notoriété de l’utilisateur devaient être fournis. Sauf qu&#39;avoir le badge bleu est indécent : leurs tweets sont mis en avant (sans critère de qualité quelconque) et la limite des 250 caractères saute, faisant qu&#39;un compte &#34;badge bleu&#34; pouvait bien plus s&#39;exprimer sur le réseau, et de façon totalement inéquitable par rapport aux autres usagers.&#xA;&#xA;On pourrait s&#39;arrêter là, mais non. Musk veut doper le court du imemecoin/i Dogecoin car il en posséderait une grande quantité ? a href=&#34;https://www.lemonde.fr/pixels/article/2023/04/04/twitter-remplace-son-logo-par-celui-du-dogecoin-dont-certains-investisseurs-sont-en-conflit-avec-elon-musk61682114408996.html&#34; title=&#34;Article du Monde&#34;Il créé de la hype autours et change le logo de la plateforme/a. Niveau de maturité ? Zéro.&#xA;&#xA;Lorsque l&#39;algorithme de recommandation a href=&#34;https://github.com/twitter/the-algorithm&#34; title=&#34;Dépôt GitHub de l&#39;agortihme&#34;a été rendu open source/a (soyons sérieux, par soucis de transparence totalement intéressé plus que réelle motivation à rejoindre ce mouvement), surprise (ou non) : les comptes certifiés sont mis en avant, et les tweets de Musk aussi. Quand on sait que le premier écran que l&#39;on voit sur les apps Android et iOS est l&#39;écran de contenu &#34;recommandé&#34;, ça en dit long : écoutez l&#39;appel de l&#39;argent et de Saint Elon, et ensuite allez voir ce qui vous plait.&#xA;&#xA;a href=&#34;https://actualitescanada.com/elon-musk-menace-de-reattribuer-le-twitter-de-npr/&#34; title=&#34;Article de Actualités Canada&#34;Des comptes sont menacés de voir leurs pseudos réattribués/a, des médias qui refusaient le racket de Musk ont vu a href=&#34;https://www.ouest-france.fr/high-tech/twitter/propagande-elon-musk-fait-supprimer-le-badge-de-certification-du-new-york-times-sur-twitter-b5d8ee0a-d1e4-11ed-9a9a-51eac6843105&#34; title=&#34;Article de Ouest France&#34;disparaitre leur badge/a, et la censure est mise en place.&#xA;Mais pas une censure &#34;juste&#34;, non.br /&#xA;a href=&#34;https://www.01net.com/actualites/twitter-suspend-le-compte-mastodon-et-bloque-les-url-renvoyant-vers-la-plate-forme.html&#34; title=&#34;Article de 01Net&#34;Les références à Mastodon étaient interdites entrainant des blocages/a, il en serait de même pour a href=&#34;https://bsky.app/&#34; title=&#34;Site officiel de Bluesky&#34;Bluesky/a. Quand à tout ce qui touche de près ou de loin à l&#39;univers abbr title=&#34;Lesbiennes Gays Bisexuels Transgenres Queers Intersexes&#34;LGBTQIA+/abbr, a href=&#34;https://www.madmoizelle.com/pourquoi-elon-musk-veut-bannir-le-mot-cisgenre-de-twitter-1543967&#34; title=&#34;Article de Madmoizelle&#34;même des termes naïfs comme &#34;cisgenre&#34;/a, les réactions arrivent. Par contre des États voyous, eux, a href=&#34;https://www.lefigaro.fr/conjoncture/twitter-accuse-de-censurer-des-messages-a-la-demande-du-gouvernement-turc-elon-musk-repond-20230515&#34; title=&#34;Article du Figaro&#34;pouvaient demander de censurer du contenu/a important, sans problème. Musk prônait la liberté d&#39;expression à l&#39;américaine, le business et les idéologies personnelles priment.&#xA;&#xA;On aurait pu s&#39;arrêter là, mais c&#39;est sans compter sur a href=&#34;https://www.lemondeinformatique.fr/actualites/lire-twitter-cherche-a-renegocier-ses-factures-google-cloud-et-aws-90691.html&#34; title=&#34;Article du Monde Informatique&#34;la pingrerie de Musk/a qui refusait de payer ses factures chez abbr title=&#34;Google Cloud Platform&#34;GCP/abbr. Résultat ? Un irate limit/i très faible (a href=&#34;https://www.journaldugeek.com/2023/07/03/twitter-est-en-train-de-devenir-pay-to-win-et-cest-un-sacre-probleme/&#34; title=&#34;Article du Journal du Geek&#34;surtout quand on n&#39;a pas payé pour le badge bleu),/a et une app qui se sabote elle-même : les limites étant basses, quelques scrolls et c&#39;était fini. Remarque c&#39;était rigolo de polluer les fils de chacun avec des tweets inutiles. Le pire dans tout ça, c&#39;est que Musk n’assumait pas, ou plutôt arguait que c&#39;était normal et a href=&#34;https://www.bfmtv.com/tech/twitter-elon-musk-justifie-limiter-le-nombre-de-lectures-par-jour-pour-nous-eloigner-des-ecransAV-202307020208.html&#34; title=&#34;Article de BFMTV&#34;qu&#39;il fallait ça pour aller prendre l&#39;air dehors/a. Un imbécile.&#xA;&#xA;Et pendant ce temps, les comptes suspendus reviennent a href=&#34;https://www.latribune.fr/technos-medias/trump-fait-son-grand-retour-sur-twitter-grace-a-elon-musk-941427.html&#34; title=&#34;Article de La Tribune&#34;(comme celui de Trump)/a, et les robots qui spamment et inondent d&#39;arnaques prolifèrent plus que jamais. Là où on pouvait avant voir sans connexion un profil Twitter, maintenant il faut se connecter au service. On pourrait parler aussi des équipes qui ont été virées par Musk, ou du fait a href=&#34;https://www.nouvelobs.com/economie/20230724.OBS76131/elon-musk-rebaptise-twitter-x-d-ou-vient-cette-passion-pour-le-x.html&#34; title=&#34;Article du Nouvel Obs&#34;qu&#39;il a décidé de rebaptiser Twitter en X/a. Maintenant on aura &#34;x.com&#34; au lieu de &#34;twitter.com&#34;. Donc en plus de ruiner le produit, il ruine l&#39;identité sans même se rendre compte qu&#39;il risque d&#39;être davantage censuré par des proxys. Pourquoi pas pr0n.com tant qu&#39;à faire ?&#xA;&#xA;Bref, sur le côté produit, Musk a saccagé une bonne partie, rendant plus difficile l&#39;accès à de l&#39;information potable. Musk est imprévisible, gamin, mégalomane et dangereux. Et en plus de ça a href=&#34;https://www.fastcompany.com/90933866/elon-musk-x-stealing-more-users-twitter-handles&#34; title=&#34;Article de fastcompany.com&#34;chipe les pseudonymes des autres/a car il le veut et il le peut. &#xA;&#xA;h2La toxicité des communautés et des influenceurs tech/h2&#xA;&#xA;Mais ce n&#39;est pas tout, car il y a aussi à prendre en compte les ✨communautés✨. Et suite aux derniers problèmes / dramas / polémiques / coups d&#39;éclat d&#39;imbéciles, j&#39;ose partager et relayer un constat qui en dérange plus d&#39;un : bla communauté tech / dév est une a href=&#34;https://dictionnaire.sensagent.com/p%C3%A9tasse/fr-fr/&#34; title=&#34;Définition&#34;pétasse/a 🤪, ravagée par des dindons 🦃 de la tech et des paons 🦚 du web/b.&#xA;Oui, comme certains l&#39;affirmaient avant de recevoir une volée de bois vert, cette communauté est bconsanguine et toxique/b (évidement il y a des membres qui sortent positivement du lot, heureusement).&#xA;br /&#xA;&#xA;En quelques mois, on a enchainé merde sur merde, et à chaque esclandre, tout partait en vrille et prenait des proportions énormes. Pourquoi ? Parce qu&#39;une partie de ces gens sont gonflés à l&#39;égo. Leur orgueil est consacré. Leur vanité est un privilège. Certain sont cons comme des balais et laisseront faire leurs chiens de la casse s&#39;acharner sur des personnes. Tout le monde n&#39;est pas comme ça ; et même si j&#39;ai pu me prendre le tête avec certains, avec mon style au napalm, on finissait toujours par discuter en off après, et ça restait adulte et courtois. On peut ne pas être d&#39;accord, mais on se respecte, et on prendra une mousse un jour.br /&#xA;&#xA;Sauf qu&#39;en 2023, et depuis des années, être adulte ça ne fait pas de ireach/i. Il faut entretenir le ifame/i. Et si par des pics assassins a href=&#34;https://www.numerama.com/tech/1451366-faire-un-ratio-sur-twitter-quest-ce-que-cest.html&#34; title=&#34;Article de Numerama&#34;on peut ratio un compte/a, c&#39;est encore mieux. Et quand on ne veut pas laisser de chance à une personne de s&#39;expliquer, ou autrement dit si on veut entretenir le harcèlement, on iquote tweet/i ou on fait une capture d&#39;écran des messages. C&#39;est malsain, puéril, toxique et au raz des pâquerettes.&#xA;Sauf que ces façons de faire ne sont pas appliquées par tout le monde : elles sont appliquées par des gros comptes qui justifient leur réalité et leur vérité par le nombre de ifollowers/i qu&#39;ils ont. Et tous les moutons de Panurge exécrables les suivent joyeusement en disant amen. Et c&#39;est leur fond de commerce à ces idiots. Faire un ithread/i avec plein de ihot takes/i, de fausses vérités et de raccourcis grossiers passe très bien vu que la communauté derrière va iliker/i, iretweeter/i et mettre en avant gratuitement. Et si on a le malheur de démonter un à un des arguments, on se fait insulter et bloquer. En soi, que l&#39;on raconte sa routine matinale en commençant par des prières, qu&#39;on compare des pays sur le développement de features bidons (après avoir allumé des développeurs débutants), que l&#39;on raconte sa vie de junior (en ventant des tutos bâclés et surfaits sur Git), qu&#39;on fasse des vidéos survolées et imprécises avec Jammy ou qu&#39;on cherche à vendre des formations alors que ça fait 2 ans qu&#39;on est sur le terrain, d&#39;accord. C&#39;est un choix, un droit, j&#39;accroche pas, ce n&#39;est pas ma came, mais pourquoi pas, ça plaira à des gens j&#39;imagine. Mais quand j&#39;explique à quelqu&#39;un point par point que chacun de ces tweets est faux, grossier ou inexact (surtout quand c&#39;est évident), j&#39;apprécie qu&#39;on dise merci plutôt que de me faire insulter et bloquer. Des paons.br /&#xA;&#xA;Sauf qu&#39;à côté de ça, on assiste encore et toujours à des guerres de factions : un groupe VS un autre. Des fortes têtes VS d&#39;autres. Des groupes fermés quasi sectaires avec des relents patriarcaux et condescendants VS des gens qui font le job et osent ouvrir leur gueule en public pour des causes justes. Des clichés sur pattes hypocrites, faux et mielleux VS des gens plus humbles et qui essayent de faire bouger les choses. Du gate-keeping VS des personnes authentiques. Des conservateurs VS des wokistes. Des idev influenceurs avocado seniors/i VS des gens qui semblent être les seuls sur le terrain. Des personnes qui passent leur vie sur Twitch, Discord, Instagram et Twitter VS des développeurs... qui codent, eux.&#xA;Avec ce niveau, on pourrait croire que la médiocrité est devenue tendance, et que le nivellement par le bas est une norme.&#xA;&#xA;Bref, Twitter n&#39;est plus fiable pour aller chercher de l&#39;info devenue difficile à traiter. Twitter n&#39;est déjà plus fiable et stable en tant que logiciel. Et la qualité du contenu est reléguée très loin pour favoriser ce qui va faire de l&#39;audience. Peu surprenant.&#xA;&#xA;Twitter comme d&#39;autres réseaux sociaux est devenu la caricature du Web 2.0 : un poulailler, une basse-cours et une fosse à purin.br /&#xA;&#xA;Je n&#39;adhère plus, donc vais me recentrer sur a href=&#34;https://framapiaf.org/@pylapp&#34; title=&#34;Mon profil Mastodon&#34;Mastodon/a. Et pour celles et ceux qui veulent papoter, il y a a href=&#34;https://matrix.to/#/@pylapp:matrix.org&#34; title=&#34;Me contacter sur Matrix&#34;Matrix/a et tout ce qui est listé a href=&#34;https://pylapersonne.info/menu&#34; title=&#34;Ma présence sur le web&#34;ici/a. Et je m&#39;en tiens à mes sujets favoris clairement affichés pour ne pas polluer les fils des autres.&#xA;Désolé les copains si je vous ai déçu, choqué ou surpris, mais je préfère laisser tomber et papoter avec vous abbr title=&#34;In Real Life, dans la vraie vie&#34;IRL/abbr ou en privé, que ça reste sympa même si on n&#39;est pas d&#39;accord.&#xA;&#xA;J&#39;aurais tenu longtemps pour attendre que mes comptes préférés arrivent dans le fediverse, maintenant tanpis. Quelle tristesse.&#xA;&#xA;bCiao Twitter, c&#39;était sympa pendant presque 10 ans. Ton boss t&#39;a coulé, les communautés t&#39;ont achevé./b&#xA;&#xA;--&#xA;iDernière mise à jour : lundi 04 décembre 2023/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>J&#39;ai quitté Twitter à cause de Musk et des communautés tech</h1>

<p><i>🇫🇷 – jeudi 27 juillet 2023</i></p>

<p><b>Mots clés : <a href="https://write.as/pylapp/tag:Twitter" class="hashtag"><span>#</span><span class="p-category">Twitter</span></a>, <a href="https://write.as/pylapp/tag:tech" class="hashtag"><span>#</span><span class="p-category">tech</span></a>, <a href="https://write.as/pylapp/tag:dev" class="hashtag"><span>#</span><span class="p-category">dev</span></a>, <a href="https://write.as/pylapp/tag:Musk" class="hashtag"><span>#</span><span class="p-category">Musk</span></a>, <a href="https://write.as/pylapp/tag:communaut%C3%A9s" class="hashtag"><span>#</span><span class="p-category">communautés</span></a></b></p>

<p>Mardi 25 juillet 2023, j&#39;ai décidé de laisser tomber Twitter, et finalement on s&#39;en fout. Mais je trouve que c&#39;est pertinent d&#39;expliquer pourquoi, et je n&#39;ai plus envie de me répéter car au delà des lubies idiotes d&#39;Elon Musk il y a aussi une autre variable à prendre en compte : les communautés.</p>

<h2>Musk, ou le saccage accéléré de l&#39;outil</h2>

<p>Elon Musk, de mon modeste point de vue, a flingué Twitter, même s&#39;il n&#39;a pas eu l&#39;exclusivité de le faire. Depuis un moment la publicité occupait une place non négligeable, tout comme les trolls ou les comptes de robots. Mais en soit, on y était déjà habitué, ici ou ailleurs.
En quelques mois, ce libertarien d&#39;extrême droite néo-fachiste de Musk aura pourri Twitter après le <i>running gag</i> <a href="https://www.numerama.com/tech/1134804-elon-musk-achete-twitter-pour-le-detruire.html" title="Article de Numerama">de l&#39;achat de la plateforme</a>.</p>

<p>Déjà, les clients tiers ont été chassés sans sommation. Et c&#39;est dommage. Dommageable car on avait grâce à ces apps open source une diversité d&#39;usage, de <abbr title="Interface Utilisateur">UI</abbr> et de <abbr title="eXpérience Utilisateur">UX</abbr> permettant de profiter de Twitter mais différemment. À l&#39;époque j&#39;aimais bien <a href="https://www.frandroid.com/android/105022_tweetline-un-nouveau-client-twitter-alternatif-en-version-alpha" title="Article de FrAndroid">Tweetline</a> et <a href="https://github.com/TwidereProject" title="Espace GitHub de Twidere">Twidere</a>.
Chasser ces apps est un coup dur pour les développeurs et les utilisateurs, et permet d&#39;imposer l&#39;app officielle gavée de traceurs, de permissions à demander et de publicité (comme le montre <a href="https://reports.exodus-privacy.eu.org/fr/reports/com.twitter.android/latest/" title="Rapport de Exodus Privacy">ce rapport de εxodus</a>).</p>

<p>Ensuite les API ont été partiellement fermées ou <a href="https://www.numerama.com/tech/1256120-elon-musk-saccage-encore-les-regles-de-twitter-et-va-tuer-des-milliers-de-comptes.html" title="Article de Numerama">sont devenues payantes</a>, avec des tarifs exorbitants. Des services intéressants se sont donc retrouvés obligés de fermer boutique car financièrement ils n&#39;étaient plus viables.</p>

<p>L&#39;autre coup de massue fut la refonte des comptes certifiés. Dorénavant, il suffit de remplir quelques règles et de payer, alors qu&#39;avant un simulacre d&#39;enquête était fait et des éléments attestant de la notoriété de l’utilisateur devaient être fournis. Sauf qu&#39;avoir le badge bleu est indécent : leurs tweets sont mis en avant (sans critère de qualité quelconque) et la limite des 250 caractères saute, faisant qu&#39;un compte “badge bleu” pouvait bien plus s&#39;exprimer sur le réseau, et de façon totalement inéquitable par rapport aux autres usagers.</p>

<p>On pourrait s&#39;arrêter là, mais non. Musk veut doper le court du <i>memecoin</i> Dogecoin car il en posséderait une grande quantité ? <a href="https://www.lemonde.fr/pixels/article/2023/04/04/twitter-remplace-son-logo-par-celui-du-dogecoin-dont-certains-investisseurs-sont-en-conflit-avec-elon-musk_6168211_4408996.html" title="Article du Monde">Il créé de la hype autours et change le logo de la plateforme</a>. Niveau de maturité ? Zéro.</p>

<p>Lorsque l&#39;algorithme de recommandation <a href="https://github.com/twitter/the-algorithm" title="Dépôt GitHub de l&#39;agortihme">a été rendu open source</a> (soyons sérieux, par soucis de transparence totalement intéressé plus que réelle motivation à rejoindre ce mouvement), surprise (ou non) : les comptes certifiés sont mis en avant, et les tweets de Musk aussi. Quand on sait que le premier écran que l&#39;on voit sur les apps Android et iOS est l&#39;écran de contenu “recommandé”, ça en dit long : écoutez l&#39;appel de l&#39;argent et de Saint Elon, et ensuite allez voir ce qui vous plait.</p>

<p><a href="https://actualitescanada.com/elon-musk-menace-de-reattribuer-le-twitter-de-npr/" title="Article de Actualités Canada">Des comptes sont menacés de voir leurs pseudos réattribués</a>, des médias qui refusaient le racket de Musk ont vu <a href="https://www.ouest-france.fr/high-tech/twitter/propagande-elon-musk-fait-supprimer-le-badge-de-certification-du-new-york-times-sur-twitter-b5d8ee0a-d1e4-11ed-9a9a-51eac6843105" title="Article de Ouest France">disparaitre leur badge</a>, et la censure est mise en place.
Mais pas une censure “juste”, non.<br/>
<a href="https://www.01net.com/actualites/twitter-suspend-le-compte-mastodon-et-bloque-les-url-renvoyant-vers-la-plate-forme.html" title="Article de 01Net">Les références à Mastodon étaient interdites entrainant des blocages</a>, il en serait de même pour <a href="https://bsky.app/" title="Site officiel de Bluesky">Bluesky</a>. Quand à tout ce qui touche de près ou de loin à l&#39;univers <abbr title="Lesbiennes Gays Bisexuels Transgenres Queers Intersexes">LGBTQIA+</abbr>, <a href="https://www.madmoizelle.com/pourquoi-elon-musk-veut-bannir-le-mot-cisgenre-de-twitter-1543967" title="Article de Madmoizelle">même des termes naïfs comme “cisgenre”</a>, les réactions arrivent. Par contre des États voyous, eux, <a href="https://www.lefigaro.fr/conjoncture/twitter-accuse-de-censurer-des-messages-a-la-demande-du-gouvernement-turc-elon-musk-repond-20230515" title="Article du Figaro">pouvaient demander de censurer du contenu</a> important, sans problème. Musk prônait la liberté d&#39;expression à l&#39;américaine, le business et les idéologies personnelles priment.</p>

<p>On aurait pu s&#39;arrêter là, mais c&#39;est sans compter sur <a href="https://www.lemondeinformatique.fr/actualites/lire-twitter-cherche-a-renegocier-ses-factures-google-cloud-et-aws-90691.html" title="Article du Monde Informatique">la pingrerie de Musk</a> qui refusait de payer ses factures chez <abbr title="Google Cloud Platform">GCP</abbr>. Résultat ? Un <i>rate limit</i> très faible (<a href="https://www.journaldugeek.com/2023/07/03/twitter-est-en-train-de-devenir-pay-to-win-et-cest-un-sacre-probleme/" title="Article du Journal du Geek">surtout quand on n&#39;a pas payé pour le badge bleu),</a> et une app qui se sabote elle-même : les limites étant basses, quelques scrolls et c&#39;était fini. Remarque c&#39;était rigolo de polluer les fils de chacun avec des tweets inutiles. Le pire dans tout ça, c&#39;est que Musk n’assumait pas, ou plutôt arguait que c&#39;était normal et <a href="https://www.bfmtv.com/tech/twitter-elon-musk-justifie-limiter-le-nombre-de-lectures-par-jour-pour-nous-eloigner-des-ecrans_AV-202307020208.html" title="Article de BFMTV">qu&#39;il fallait ça pour aller prendre l&#39;air dehors</a>. Un imbécile.</p>

<p>Et pendant ce temps, les comptes suspendus reviennent <a href="https://www.latribune.fr/technos-medias/trump-fait-son-grand-retour-sur-twitter-grace-a-elon-musk-941427.html" title="Article de La Tribune">(comme celui de Trump)</a>, et les robots qui spamment et inondent d&#39;arnaques prolifèrent plus que jamais. Là où on pouvait avant voir sans connexion un profil Twitter, maintenant il faut se connecter au service. On pourrait parler aussi des équipes qui ont été virées par Musk, ou du fait <a href="https://www.nouvelobs.com/economie/20230724.OBS76131/elon-musk-rebaptise-twitter-x-d-ou-vient-cette-passion-pour-le-x.html" title="Article du Nouvel Obs">qu&#39;il a décidé de rebaptiser Twitter en X</a>. Maintenant on aura “x.com” au lieu de “twitter.com”. Donc en plus de ruiner le produit, il ruine l&#39;identité sans même se rendre compte qu&#39;il risque d&#39;être davantage censuré par des proxys. Pourquoi pas pr0n.com tant qu&#39;à faire ?</p>

<p>Bref, sur le côté produit, Musk a saccagé une bonne partie, rendant plus difficile l&#39;accès à de l&#39;information potable. Musk est imprévisible, gamin, mégalomane et dangereux. Et en plus de ça <a href="https://www.fastcompany.com/90933866/elon-musk-x-stealing-more-users-twitter-handles" title="Article de fastcompany.com">chipe les pseudonymes des autres</a> car il le veut et il le peut.</p>

<h2>La toxicité des communautés et des influenceurs tech</h2>

<p>Mais ce n&#39;est pas tout, car il y a aussi à prendre en compte les ✨communautés✨. Et suite aux derniers problèmes / dramas / polémiques / coups d&#39;éclat d&#39;imbéciles, j&#39;ose partager et relayer un constat qui en dérange plus d&#39;un : <b>la communauté tech / dév est une <a href="https://dictionnaire.sensagent.com/p%C3%A9tasse/fr-fr/" title="Définition">pétasse</a> 🤪, ravagée par des dindons 🦃 de la tech et des paons 🦚 du web</b>.
Oui, comme certains l&#39;affirmaient avant de recevoir une volée de bois vert, cette communauté est <b>consanguine et toxique</b> (évidement il y a des membres qui sortent positivement du lot, heureusement).
<br/></p>

<p>En quelques mois, on a enchainé merde sur merde, et à chaque esclandre, tout partait en vrille et prenait des proportions énormes. Pourquoi ? Parce qu&#39;une partie de ces gens sont gonflés à l&#39;égo. Leur orgueil est consacré. Leur vanité est un privilège. Certain sont cons comme des balais et laisseront faire leurs chiens de la casse s&#39;acharner sur des personnes. Tout le monde n&#39;est pas comme ça ; et même si j&#39;ai pu me prendre le tête avec certains, avec mon style au napalm, on finissait toujours par discuter en off après, et ça restait adulte et courtois. On peut ne pas être d&#39;accord, mais on se respecte, et on prendra une mousse un jour.<br/></p>

<p>Sauf qu&#39;en 2023, et depuis des années, être adulte ça ne fait pas de <i>reach</i>. Il faut entretenir le <i>fame</i>. Et si par des pics assassins <a href="https://www.numerama.com/tech/1451366-faire-un-ratio-sur-twitter-quest-ce-que-cest.html" title="Article de Numerama">on peut ratio un compte</a>, c&#39;est encore mieux. Et quand on ne veut pas laisser de chance à une personne de s&#39;expliquer, ou autrement dit si on veut entretenir le harcèlement, on <i>quote tweet</i> ou on fait une capture d&#39;écran des messages. C&#39;est malsain, puéril, toxique et au raz des pâquerettes.
Sauf que ces façons de faire ne sont pas appliquées par tout le monde : elles sont appliquées par des gros comptes qui justifient leur réalité et leur vérité par le nombre de <i>followers</i> qu&#39;ils ont. Et tous les moutons de Panurge exécrables les suivent joyeusement en disant amen. Et c&#39;est leur fond de commerce à ces idiots. Faire un <i>thread</i> avec plein de <i>hot takes</i>, de fausses vérités et de raccourcis grossiers passe très bien vu que la communauté derrière va <i>liker</i>, <i>retweeter</i> et mettre en avant gratuitement. Et si on a le malheur de démonter un à un des arguments, on se fait insulter et bloquer. En soi, que l&#39;on raconte sa routine matinale en commençant par des prières, qu&#39;on compare des pays sur le développement de features bidons (après avoir allumé des développeurs débutants), que l&#39;on raconte sa vie de junior (en ventant des tutos bâclés et surfaits sur Git), qu&#39;on fasse des vidéos survolées et imprécises avec Jammy ou qu&#39;on cherche à vendre des formations alors que ça fait 2 ans qu&#39;on est sur le terrain, d&#39;accord. C&#39;est un choix, un droit, j&#39;accroche pas, ce n&#39;est pas ma came, mais pourquoi pas, ça plaira à des gens j&#39;imagine. Mais quand j&#39;explique à quelqu&#39;un point par point que chacun de ces tweets est faux, grossier ou inexact (surtout quand c&#39;est évident), j&#39;apprécie qu&#39;on dise merci plutôt que de me faire insulter et bloquer. Des paons.<br/></p>

<p>Sauf qu&#39;à côté de ça, on assiste encore et toujours à des guerres de factions : un groupe VS un autre. Des fortes têtes VS d&#39;autres. Des groupes fermés quasi sectaires avec des relents patriarcaux et condescendants VS des gens qui font le job et osent ouvrir leur gueule en public pour des causes justes. Des clichés sur pattes hypocrites, faux et mielleux VS des gens plus humbles et qui essayent de faire bouger les choses. Du gate-keeping VS des personnes authentiques. Des conservateurs VS des wokistes. Des <i>dev influenceurs avocado seniors</i> VS des gens qui semblent être les seuls sur le terrain. Des personnes qui passent leur vie sur Twitch, Discord, Instagram et Twitter VS des développeurs... qui codent, eux.
Avec ce niveau, on pourrait croire que la médiocrité est devenue tendance, et que le nivellement par le bas est une norme.</p>

<p>Bref, Twitter n&#39;est plus fiable pour aller chercher de l&#39;info devenue difficile à traiter. Twitter n&#39;est déjà plus fiable et stable en tant que logiciel. Et la qualité du contenu est reléguée très loin pour favoriser ce qui va faire de l&#39;audience. Peu surprenant.</p>

<p>Twitter comme d&#39;autres réseaux sociaux est devenu la caricature du Web 2.0 : un poulailler, une basse-cours et une fosse à purin.<br/></p>

<p>Je n&#39;adhère plus, donc vais me recentrer sur <a href="https://framapiaf.org/@pylapp" title="Mon profil Mastodon">Mastodon</a>. Et pour celles et ceux qui veulent papoter, il y a <a href="https://matrix.to/#/@pylapp:matrix.org" title="Me contacter sur Matrix">Matrix</a> et tout ce qui est listé <a href="https://pylapersonne.info/menu" title="Ma présence sur le web">ici</a>. Et je m&#39;en tiens à mes sujets favoris clairement affichés pour ne pas polluer les fils des autres.
Désolé les copains si je vous ai déçu, choqué ou surpris, mais je préfère laisser tomber et papoter avec vous <abbr title="In Real Life, dans la vraie vie">IRL</abbr> ou en privé, que ça reste sympa même si on n&#39;est pas d&#39;accord.</p>

<p>J&#39;aurais tenu longtemps pour attendre que mes comptes préférés arrivent dans le fediverse, maintenant tanpis. Quelle tristesse.</p>

<p><b>Ciao Twitter, c&#39;était sympa pendant presque 10 ans. Ton boss t&#39;a coulé, les communautés t&#39;ont achevé.</b></p>

<p>—
<i>Dernière mise à jour : lundi 04 décembre 2023</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/pourquoi-jai-quitte-twitter</guid>
      <pubDate>Thu, 27 Jul 2023 14:08:42 +0000</pubDate>
    </item>
    <item>
      <title>Au fait, pensez-vous à signer vos commits ?</title>
      <link>https://write.as/pylapp/au-fait-pensez-vous-a-signer-vos-commits?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1Au fait, pensez-vous à signer vos commits ?/h1&#xA;&#xA;i🇫🇷 – mercredi 8 juin 2022/i&#xA;&#xA;biMots clés : #Git, #commits, #GPG, #signature, #cryptographie/i/b&#xA;&#xA;Au jour d&#39;aujourd&#39;hui il est indéniable que le code source a une valeur concrète, tant pour ce qui est de la propriété intellectuelle et du patrimoine logiciel qui en découle que pour les sommes investies pour son écriture. En 2009, a href=&#34;https://www.silicon.fr/la-valeur-des-logiciels-open-source-estimee-a-400-milliards-de-dollars-35259.html&#34; title=&#34;Aller à l&#39;article de silicon.fr&#34; alt=&#34;Aller à l&#39;article de silicon.fr&#34;un article de silicon.fr/a est paru et évoquait le fait que la valeur des logiciels open source est estimée à 400 milliards de dollars américains, explosant les quelques 25 milliards de dollars américains pour l&#39;écosystème emLinux/em !&#xA; &#xA;Le fait est qu&#39;il faut être capable de définir, et surtout certifier, qui est l&#39;auteur des commits pour savoir à qui appartient la contribution induite. Lorsque des entreprises travaillent avec des filiales ou des prestataires, ou quand du code source est cédé à une fondation ou un organisme tiers, voire même si les projets open source sont critiques, certifier l&#39;origine du commit est rassurant.&#xA;&#xA;Certes, on pourrait se contenter de regarder l&#39;identité de l&#39;auteur, avec par exemple la bonne vieille commande igit log/i, permettant de ressortir l&#39;historique emGit/em et d&#39;obtenir des détails sur les derniers commits.&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/22/author.png&#34; title=&#34;Affichage d&#39;un commit Git&#34; alt=&#34;Affichage d&#39;un commit Git. On distingue notamment une section \&#34;Author\&#34; de valeur \&#34;Pierre-Yves Lapersonne\&#34; avec pour adresse email \&#34;dev@pylapersonne.info\&#34;. Il y a aussi un champ \&#34;Signed-off-by:\&#34; avec les même valeurs&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;Sauf que le champ iAuthor/i d&#39;un icommit/i est définit par deux éléments : les champs iuser.name/i et iuser.email/i de la configuration emGit/em (locale ou globale). Or, ces champs peuvent être définis par n&#39;importe qui, avec n&#39;importe quelle valeur, sans vraiment de contrôle naïf et natif sur ça. Ils ne sont donc pas à considérer comme fiables.&#xA;&#xA;On pourrait aussi regarder du côté du iDeveloper Certificate of Origin (DCO)/i, avec notamment l&#39;option i-s/i dans la commande emGit/em de icommit/i. Or le iDCO/i n&#39;est pas dédié à cette question, mais plutôt au fait que l&#39;on confirme avoir les autorisations qui vont bien pour faire ce icommit/i, apporter cette contribution, a href=&#34;https://en.wikipedia.org/wiki/DeveloperCertificateof_Origin#:~:text=The%20Developer%20Certificate%20of%20Origin,Contributor%20License%20Agreement%20(CLA).&#34; title=&#34;Aller à la page Wikipedia sur le DCO&#34; alt=&#34;Aller à la page Wikipedia sur le DCO&#34;dans le respect des licences par exemple/a. C&#39;est intéressant, mais pas adapté.&#xA;&#xA;On peut par contre considérer la signature des icommits/i via... une clé emGPG/em (option i-S/i).&#xA;&#xA;L&#39;idée est simple finalement : on créé une clé emGPG/em, on la dépose dans son compte sur sa forge logicielle (emGitHub/em ou emGitLab/em par exemple), et on définit dans le dépôt en local la clé à utiliser (iuser.signingkey/i). Ainsi, on peut plus fortement confirmer que le icommit/i est bien signé par une personne via sa clé emGPG/em avec la même adresse e-mail entre celle du commit et celle de la clé. C&#39;est d&#39;ailleurs très pratique car via sa forge on peut facilement voir que le commit est vérifié (iellipse bleue/i), avec une clé emGPG/em d&#39;identifiant donné (irectangle vert/i), et d&#39;ailleurs signé avec le DCO (irectangle rouge/i). Bon le hic c&#39;est qu&#39;il faut être capable d&#39;avoir une autorité permettant de vérifier les clés, ou alors de placer une confiance aveugle envers la forge logicielle concernée dont peut-être les administrateurs seraient peu scrupuleux et capables d&#39;altérer les clés publiques enregistrées. À creuser en tout cas.&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/22/verified.png&#34; title=&#34;Extrait de l&#39;interface web de GitHub indiquant que le commit concerné est bien cryptographiquement vérifié&#34; alt=&#34;Extrait de l&#39;interface web de GitHub indiquant que le commit concerné est bien cryptographiquement vérifié&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/22/show.png&#34; title=&#34;Affichage d&#39;un commit Git avec détails sur la clé GPG utilisée&#34; alt=&#34;Affichage d&#39;un commit Git. On distingue entre autres une rubrique concernant la clé GPG utilisée avec la cryptographie utilisée et l&#39;empreinte de la clé ainsi que l&#39;adresse email utilisée&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;Ce faisant, il est même possible de vérifier ia posteriori/i la signature d&#39;un commit via la commande igit show [commit] --show-signature/i, ou plus appropriée la commande igit verify-commit [commit]/i qui renvoie le strict nécessaire en terme d&#39;informations.&#xA;&#xA;img style=&#34;border: 1px black solid;&#34; src=&#34;https://pylapersonne.info/data/cdn/blog/22/verify.png&#34; title=&#34;Message indiquant que le commit concerné est bien cryptographiquement vérifié&#34; alt=&#34;Message indiquant que le commit concerné est bien cryptographiquement vérifié&#34; class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;Remarque, ce serait intéressant d&#39;avoir des ihooks/i vérifiant au moment du icommit/i s&#39;il est bien signé. Dans des projets critiques ou sensibles, on saura ainsi s&#39;il n&#39;y a pas un contributeur tiers qui aurait commis des icommits/i sans autorisation. Ce n&#39;est pas suffisant, mais ça aide.&#xA;&#xA;On peut ainsi voir que pour le commit donné, il y a bien eu une signature avec une clé emGPG/em de type emEDDSA/em avec l&#39;identifiant indiqué (dont on retrouve une partie à la fin), et une note indiquant que c&#39;est bien la bonne adresse email qui est utilisée.&#xA;&#xA;Bref, pensez à signer vos commits. C&#39;est rigolo et ça fait classe.&#xA;&#xA;Pour en savoir davantage, je vous conseille a href=&#34;https://daily-dev-tips.com/posts/how-to-verify-your-commits-on-github/&#34; title=&#34;Aller à l&#39;article de daily-dev-tips.com sur la vérification cryptographique des commits&#34; alt=&#34;Aller à l&#39;article de daily-dev-tips.com sur la vérification cryptographique des commits&#34;cet article assez simple/a et aussi cette page de la documentation emGitHub/em à propos d&#39;une nouvelle fonctionnalité chez eux : a href=&#34;https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits&#34; title=&#34;Aller à la page GitHub sur le mode vigilant&#34; alt=&#34;Aller à la page GitHub sur le mode vigilant&#34;&#34;le mode vigilant&#34;/a.&#xA;&#xA;--&#xA;iDernière mise à jour : lundi 3 octobre 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>Au fait, pensez-vous à signer vos commits ?</h1>

<p><i>🇫🇷 – mercredi 8 juin 2022</i></p>

<p><b><i>Mots clés : <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:GPG" class="hashtag"><span>#</span><span class="p-category">GPG</span></a>, <a href="https://write.as/pylapp/tag:signature" class="hashtag"><span>#</span><span class="p-category">signature</span></a>, <a href="https://write.as/pylapp/tag:cryptographie" class="hashtag"><span>#</span><span class="p-category">cryptographie</span></a></i></b></p>

<p>Au jour d&#39;aujourd&#39;hui il est indéniable que le code source a une valeur concrète, tant pour ce qui est de la propriété intellectuelle et du patrimoine logiciel qui en découle que pour les sommes investies pour son écriture. En 2009, <a href="https://www.silicon.fr/la-valeur-des-logiciels-open-source-estimee-a-400-milliards-de-dollars-35259.html" title="Aller à l&#39;article de silicon.fr">un article de silicon.fr</a> est paru et évoquait le fait que la valeur des logiciels open source est estimée à 400 milliards de dollars américains, explosant les quelques 25 milliards de dollars américains pour l&#39;écosystème <em>Linux</em> !</p>

<p>Le fait est qu&#39;il faut être capable de définir, et surtout certifier, qui est l&#39;auteur des commits pour savoir à qui appartient la contribution induite. Lorsque des entreprises travaillent avec des filiales ou des prestataires, ou quand du code source est cédé à une fondation ou un organisme tiers, voire même si les projets open source sont critiques, certifier l&#39;origine du commit est rassurant.</p>

<p>Certes, on pourrait se contenter de regarder l&#39;identité de l&#39;auteur, avec par exemple la bonne vieille commande <i>git log</i>, permettant de ressortir l&#39;historique <em>Git</em> et d&#39;obtenir des détails sur les derniers commits.</p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/22/author.png" title="Affichage d&#39;un commit Git" alt="Affichage d&#39;un commit Git. On distingue notamment une section \" class="centerImage toBigImage"/></p>

<p>Sauf que le champ <i>Author</i> d&#39;un <i>commit</i> est définit par deux éléments : les champs <i>user.name</i> et <i>user.email</i> de la configuration <em>Git</em> (locale ou globale). Or, ces champs peuvent être définis par n&#39;importe qui, avec n&#39;importe quelle valeur, sans vraiment de contrôle naïf et natif sur ça. Ils ne sont donc pas à considérer comme fiables.</p>

<p>On pourrait aussi regarder du côté du <i>Developer Certificate of Origin (DCO)</i>, avec notamment l&#39;option <i>-s</i> dans la commande <em>Git</em> de <i>commit</i>. Or le <i>DCO</i> n&#39;est pas dédié à cette question, mais plutôt au fait que l&#39;on confirme avoir les autorisations qui vont bien pour faire ce <i>commit</i>, apporter cette contribution, <a href="https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin#:~:text=The%20Developer%20Certificate%20of%20Origin,Contributor%20License%20Agreement%20(CLA)." title="Aller à la page Wikipedia sur le DCO">dans le respect des licences par exemple</a>. C&#39;est intéressant, mais pas adapté.</p>

<p>On peut par contre considérer la signature des <i>commits</i> via... une clé <em>GPG</em> (option <i>-S</i>).</p>

<p>L&#39;idée est simple finalement : on créé une clé <em>GPG</em>, on la dépose dans son compte sur sa forge logicielle (<em>GitHub</em> ou <em>GitLab</em> par exemple), et on définit dans le dépôt en local la clé à utiliser (<i>user.signingkey</i>). Ainsi, on peut plus fortement confirmer que le <i>commit</i> est bien signé par une personne via sa clé <em>GPG</em> avec la même adresse e-mail entre celle du commit et celle de la clé. C&#39;est d&#39;ailleurs très pratique car via sa forge on peut facilement voir que le commit est vérifié (<i>ellipse bleue</i>), avec une clé <em>GPG</em> d&#39;identifiant donné (<i>rectangle vert</i>), et d&#39;ailleurs signé avec le DCO (<i>rectangle rouge</i>). Bon le hic c&#39;est qu&#39;il faut être capable d&#39;avoir une autorité permettant de vérifier les clés, ou alors de placer une confiance aveugle envers la forge logicielle concernée dont peut-être les administrateurs seraient peu scrupuleux et capables d&#39;altérer les clés publiques enregistrées. À creuser en tout cas.</p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/22/verified.png" title="Extrait de l&#39;interface web de GitHub indiquant que le commit concerné est bien cryptographiquement vérifié" alt="Extrait de l&#39;interface web de GitHub indiquant que le commit concerné est bien cryptographiquement vérifié" class="centerImage toBigImage"/></p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/22/show.png" title="Affichage d&#39;un commit Git avec détails sur la clé GPG utilisée" alt="Affichage d&#39;un commit Git. On distingue entre autres une rubrique concernant la clé GPG utilisée avec la cryptographie utilisée et l&#39;empreinte de la clé ainsi que l&#39;adresse email utilisée" class="centerImage toBigImage"/></p>

<p>Ce faisant, il est même possible de vérifier <i>a posteriori</i> la signature d&#39;un commit via la commande <i>git show [commit] —show-signature</i>, ou plus appropriée la commande <i>git verify-commit [commit]</i> qui renvoie le strict nécessaire en terme d&#39;informations.</p>

<p><img style="border: 1px black solid;" src="https://pylapersonne.info/data/cdn/blog/22/verify.png" title="Message indiquant que le commit concerné est bien cryptographiquement vérifié" alt="Message indiquant que le commit concerné est bien cryptographiquement vérifié" class="centerImage toBigImage"/></p>

<p>Remarque, ce serait intéressant d&#39;avoir des <i>hooks</i> vérifiant au moment du <i>commit</i> s&#39;il est bien signé. Dans des projets critiques ou sensibles, on saura ainsi s&#39;il n&#39;y a pas un contributeur tiers qui aurait commis des <i>commits</i> sans autorisation. Ce n&#39;est pas suffisant, mais ça aide.</p>

<p>On peut ainsi voir que pour le commit donné, il y a bien eu une signature avec une clé <em>GPG</em> de type <em>EDDSA</em> avec l&#39;identifiant indiqué (dont on retrouve une partie à la fin), et une note indiquant que c&#39;est bien la bonne adresse email qui est utilisée.</p>

<p>Bref, pensez à signer vos commits. C&#39;est rigolo et ça fait classe.</p>

<p>Pour en savoir davantage, je vous conseille <a href="https://daily-dev-tips.com/posts/how-to-verify-your-commits-on-github/" title="Aller à l&#39;article de daily-dev-tips.com sur la vérification cryptographique des commits">cet article assez simple</a> et aussi cette page de la documentation <em>GitHub</em> à propos d&#39;une nouvelle fonctionnalité chez eux : <a href="https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits" title="Aller à la page GitHub sur le mode vigilant">“le mode vigilant”</a>.</p>

<p>—
<i>Dernière mise à jour : lundi 3 octobre 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/au-fait-pensez-vous-a-signer-vos-commits</guid>
      <pubDate>Wed, 17 May 2023 11:35:39 +0000</pubDate>
    </item>
    <item>
      <title>Retour d&#39;expérience concernant le navigateur web Brave</title>
      <link>https://write.as/pylapp/retour-dexperience-concernant-le-navigateur-web-brave?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1Retour d&#39;expérience concernant le navigateur web Brave/h1&#xA;&#xA;i🇫🇷 – mardi 23 août 2022/i&#xA;&#xA;biMots clés : #Brave, #privacy, #ViePrivée, #web, #cryptomonnaies/i/b&#xA;&#xA;h2Un peu de contexte/h2&#xA;&#xA;    En 2016 Brendan Eich (créateur de iJavaScript/i, cofondateur de la iMozilla Foundation/i, cocréateur du langage de programmation iRust/i) lançait son nouveau projet du moment : un navigateur web respectueux de la vie privée et voulant redéfinir le modèle économique du web bien sclérosé par les capitalismes de la donnée personnelle, de l&#39;attention et de la publicité. En plus de 20 ans d&#39;existence, le web a largement été bouffé par la publicité à tout va, les régies publicitaires sans scrupules, et les piliers du web et du numérique plus généralement : &lt;a href=&#34;https://islean-consulting.fr/fr/transformation-digitale/gafam-natu-batx-numerique/&#34; title=&#34;Qui sont ces « GAFAM », « NATU », « BATX » dont tout le monde parle ?&#xA; (site web islean-consulting.fr, accès libre)&#34;  GAFAM, NATU, BATX/a. Bref, Brendan Eich lança le navigateur web Brave, et a href=&#34;https://www.usine-digitale.fr/article/le-double-pari-de-brave-le-nouveau-navigateur-web-de-l-ex-patron-de-mozilla.N549113&#34; title=&#34;Le double pari de Brave, le nouveau navigateur web de l&#39;ex patron de Mozilla (site web usine-digitale.fr, accès libre)&#34;en 2017 grâce à une grosse emInitial Coin Offering (ICO)/em/a le projet du iBasic Attention Token/i démarra.&#xA;&#xA;    De mon côté, je ne sais plus comment j&#39;en suis arrivé à essayer a href=&#34;https://brave.com/fr/&#34; title=&#34;Site web officiel du navigateur web Brave&#34;iBrave/i/a et à l&#39;utiliser pendant 3 ans, mais je suppose que je devais avoir appris l&#39;existence des a href=&#34;https://basicattentiontoken.org/fr/&#34; title=&#34;Site web officiel du projet Basic Attention Token&#34;iBasic Attention Tokens/i/a, étant déjà bien calé avec mon iFirefox/i.&#xA;&#xA;    Après environ trois ans d&#39;utilisation, j&#39;aimerai faire un bilan.&#xA;&#xA;h2Le navigateur web/h2&#xA;&#xA;    En soit, je n&#39;ai pas vraiment utilisé d&#39;autres navigateurs que celui-ci depuis un sacré moment. iInternet Explorer/i ? Oublié depuis mes années lycée. iEdge/i ? Jamais touché. iChrome/i ? Abandonné depuis les premières polémiques avec iGoogle/i. De temps en temps iChromium/i, essentiellement iFirefox/i. Presque jamais iSafari/i. Très vaguement iOpera/i. Ainsi il parait un peu hasardeux de comparer iBrave/i à d&#39;autres navigateurs web, je doute qu&#39;il n&#39;y ait aucun article à ce sujet.&#xA;&#xA;    Sous le capot, c&#39;est du iChromium/i. Certes cette base est utilisée dans d&#39;autres navigateurs (dont iOpera/i, iEdge/i et iVivaldi/i), mais ça reste du iGoogle / Alphabet/i derrière, et on finit par centraliser les navigateurs vers une seule solution, qui même si elle est a href=&#34;https://github.com/chromium/chromium&#34; title=&#34;Dépôt GitHub du projet Chromium&#34;open source sous licence BSD 3-Clause/a appartient à un emGAFAM/em. Bref, ce n&#39;est pas une bonne idée.&#xA;&#xA;    J&#39;ai pu utiliser ce navigateur que ce soit sur ordinateur (essentiellement imacOS/i) que sur smartphone (iiOS/i). En soit, il y a un réel comfort d&#39;utilisation pour des tâches basiques : navigation sur le web, gestion des marque-pages, gestion de l&#39;historique. À savoir pour les développeurs web, forcément iBrave/i pour iiOS/i utilise le framework iWebKit/i d&#39;iApple/i, tout comme ses concurrents.&#xA;&#xA;h2L&#39;usage/h2&#xA;&#xA;h3La publicité embarquée/h3&#xA;&#xA;    Mon besoin était le suivant : je navigue sur les internets, en voulant un minimum de protection pour ma vie privée (mes exigences n&#39;étant pas nécessairement les mêmes que celles des autres), et en voulant éviter de me bouffer de la publicité à tout va, tout en profitant des ibasic attention tokens/i. Et sans aucun emadd-on/em à installer.&#xA;&#xA;    Concernant la facilité d&#39;utilisation, c&#39;est classique, et je n&#39;ai rien à dire de négatif à ce sujet et je mets iBrave/i au même niveau que ses concurrents (à tort ?). Pour ce qui des publicités et des traceurs sur les sites web, je suis satisfait. J&#39;ai pu tester le site web de a href=&#34;https://www.20minutes.fr/&#34; title=&#34;Site web de 20 Minutes&#34;20 Minutes/a, choisi arbitrairement, en ayant activé les a href=&#34;https://brave.com/shields/&#34; title=&#34;Description des Brave Shields sur le site web officiel&#34;emBrave shields/em/a et en les désactivant : de manière propre et transparente les publicités disparaissent et des pisteurs sont bloqués. Pour rappel, supprimer les publicités peut vous éviter de perdre votre attention, vous laisse davantage maitres de votre navigation web, et peut aussi réduire l&#39;impact sur le traffic (moins de contenu tiers à télécharger sur votre appareil). Ci-dessous une comparaison avec la page sans les emshields/em activés, et la page avec ceux-ci activés.&#xA;&#xA;table&#xA;tr&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/21/avec-pub.png&#34; title=&#34;Page d&#39;accueil du site de news 20 Minutes.fr avec deux encarts publicitaires&#34; alt=&#34;Page d&#39;accueil du site de news 20 Minutes.fr avec deux encarts publicitaire&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/21/sans-pub.png&#34; title=&#34;Page d&#39;accueil du site de news 20 Minutes.fr avec deux encarts publicitaire&#34; alt=&#34;Page d&#39;accueil du site de news 20 Minutes.fr avec deux encarts publicitaire&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;/tr&#xA;/table&#xA;&#xA;h3La vie privée/h3&#xA;&#xA;    Comme évoqué précédemment, les emBrave shields/em permettent de protéger un minimum votre vie privée en agissant sur plusieurs leviers :&#xA;ul&#xA;liLe bloquage des traqueurs, balises et publicités, avec un mode &#34;agressif&#34; possible/li&#xA;liLe forçage des requêtes vers HTTPS/li&#xA;liLe bloquage de scripts (dont du code iJavaScript/i)/li&#xA;liLe bloquage des captures d&#39;empreintes numériques/li&#xA;liLe bloquage des cookies interdomaines/li&#xA;/ul&#xA;&#xA;    La prise en main est simple au possible, même s&#39;il me semble que d&#39;autres navigateurs embarquent par défaut certains de ces éléments. L&#39;interface est simple, intuitive, et permet de voir aussitôt ou presque le résultat sur la page donnée. On accède au panneau de contrôle notamment via l&#39;icône de la tête de lion dans la barre de recherche du navigateur, voyez ce panneau ci-dessous.&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/21/shields.png&#34; title=&#34;Panneau de contrôle des protections Brave Shields&#34; alt=&#34;Panneau de contrôle des protections proposées par le navigateur web Brave&#34;  class=&#34;centerImage toBigImage&#34;/&#xA;&#xA;    Si vous voulez en savoir davantage, consultez cet a href=&#34;https://brave.com/shields/&#34; title=&#34;Page du site web de Brave sur les boucliers de protections&#34; alt=&#34;Page du site web de Brave sur les boucliers de protections&#34;hyperlien sur les emprivacy shields/em/a et celui-ci a href=&#34;https://brave.com/privacy-features/&#34; title=&#34;Page du site web de Brave sur les fonctionnalités protectrices de la vie privée&#34; alt=&#34;Page du site web de Brave sur les fonctionnalités protectrices de la vie privée&#34;sur les autres fonctionnalités protectrices de la vie privée/a.&#xA;&#xA;    Pour celles et ceux qui veulent aller plus loin, les préférences du navigateur proposent bien plus encore. Il est possible de forcer le navigateur web à afficher les pages originelles plutôt que les rendus optimisés pour les appareils mobiles, rendus générés par iGoogle/i et son projet a href=&#34;https://amp.dev/index-2021/&#34; title=&#34;Site web du projet AMP&#34; alt=&#34;Site web du projet AMP&#34;AMP/a. On peut aussi définir les listes de filtres à appliquer pour bloquer tout ou partie du contenu indésirable que l&#39;on peut rencontrer au cours de sa navigation ; ces listes pouvant être déjà proposées ou définies à la main. De même, il est possible d&#39;autoriser ou non les intégrations de réseaux sociaux et de services tiers (iGoogle/i, iFacebook/i, iTwitter/i et iLinkedIn/i). Et comme beaucoup de ses concurrents, on peut avec iBrave/i définir son moteur de recherche par défaut (dont celui de iBrave/i, iQwant/i, iDuckDuckGo/i, iStartpage/i, iEcosia/i et iGoogle/i). Bref, ce que propose nativement iBrave/i est déjà pas mal, même s&#39;il serait intéressant de faire une comparaison avec un a href=&#34;https://www.torproject.org/fr/download/&#34; title=&#34;Site web du projet du navigateur web basé sur TOR&#34; alt=&#34;Site web du projet du navigateur web basé sur TOR&#34;iTor Browser/i/a emvanilla/em ou un iFirefox/i avec des emadd-ons/em comme a href=&#34;https://privacybadger.org/&#34; title=&#34;Site web de Privacy Badger&#34; alt=&#34;Site web de Privacy Badger&#34;iPrivacy Badger/i/a et a href=&#34;https://noscript.net//&#34; title=&#34;Site web de NoScript&#34; alt=&#34;Site web de NoScript&#34;iNoScript/i/a.&#xA;&#xA;    Enfin, iBrave/i propose en plus du mode &#34;navigation privée&#34;, un mode &#34;navigation privée avec emTOR/em&#34;. On peut ainsi passer par le système de routage en oignons pour être potentiellement moins pistés. Toutefois, j&#39;ai déjà fait la comparaison entre ce mode et le navigateur emTOR/em mentionné précédemment, et j&#39;ai eu davantage de sites web qui plantaient avec iBrave/i qu&#39;avec le navigateur dédié à l&#39;oignon. De plus, il faudrait regarder si pour ces deux cas le emweb fingerprinting/em n&#39;est pas fructueux ; le navigateur à l&#39;oignon va bien définir une fenêtre de navigation spéciale pour fausser ce calcul d&#39;empreinte, mais emquid/em de iBrave/i ? Avec mon pote a href=&#34;https://www.linkedin.com/in/sebastienvitard/&#34; title=&#34;Page LinkedIn de Seb&#34; alt=&#34;Page LinkedIn de Seb&#34;Seb/a on avait pu proposer ce sujet lors du a href=&#34;https://cafe-vie-privee-lannion.bzh/&#34; title=&#34;Site web du Café Vie Privée de Lannion de 2018&#34; alt=&#34;Site web du Café Vie Privée de Lannion de 2018&#34;Café Vie Privée/a que l&#39;on avait monté à Lannion en 2018. Le support de présentation est d&#39;ailleurs a href=&#34;https://cafe-vie-privee-lannion.bzh/contents/slidedecks/slides/web.pdf&#34; title=&#34;Support au format PDF (1,6 Mo)&#34; alt=&#34;Support au format PDF (1,6 Mo)&#34;ici/a.&#xA;&#xA;h3La publicité proposée/h3&#xA;&#xA;    L&#39;un des idéaux de iBrave/i est de proposer autre chose concernant la publicité qui est jusque-là imposée aux usagers du web. Pourquoi devoir subir tous ces encarts publicitaires douteux, sachant que les régies quand ce ne sont pas les géants du web nous pistent pour toujours nous proposer autre chose ? Est-ce que la consommation de ces publicités ne représente pas un travail d&#39;un genre nouveau ?&#xA;&#xA;    En 2021 le livre blanc du projet iBasic Attention Token/i a href=&#34;https://basicattentiontoken.org/static-assets/documents/BasicAttentionTokenWhitePaper-4.pdf&#34; title=&#34;Livre blanc (.pdf, 4,5 Mo)&#34; alt=&#34;Accéder au livre blanc (.pdf, 4,5 Mo)&#34;fut publié/a, et les différents chiffres présentés sur le site web a href=&#34;https://basicattentiontoken.org/fr/&#34; title=&#34;Site web du projet Basic Attention Token&#34; alt=&#34;Site web du projet Basic Attention Token&#34;basicattentiontoken.org/a sont intéressants : presque 60 millions d&#39;utilisateurs mensuels du navigateur, plus de 400 annonceurs enregistrés et près de 2 000 campagnes en cours.&#xA;&#xA;    De manière générale, durant votre navigation sur le web vous pourrez recevoir sur votre appareil une notification assez classique, mettant en avant tel ou tel produit ou service. En cliquant sur cette notification, vous irez dans un onglet dédié tout droit vers le contenu publicitaire, et vous serez emin fine/em emprorata temporis/em rémunéré. Dit autrement, plus vous consommez de pubs de ce genre, plus vous cagnottez en emBasic Attention Tokens/em (BAT). Par la suite, vous percevrez mensuellement une somme de BAT, et c&#39;est reparti pour un autre mois. Bref, on ne vous force pas à voir de la pub, et on vous rémunère au temps passé si vous le faîtes. Curieux paradigme rafraîchissant dans un système où le pigeon qui regarde, clic, et achète est le même qui se bouffe toutes les pubs.&#xA;&#xA;    Que faire alors de ces emtokens/em BAT ? Vous pouvez faire par exemple du emstaking/em, emi.e./em vous les mettez de côté en attendant / spéculant sur le fait que ça prenne de la valeur. Bref vous entretenez tout ce côté abscons, abjecte et malsain au possible que l&#39;Homme a donné aux cryptomonnaies : vous spéculez, reproduisant le même schéma qui a échoué et qui devait être combattu par les premières cryptomonnaies. L&#39;autre solution est de les convertir en devises &#34;classiques&#34;, mais un bref coup d&#39;oeil aux taux de conversion devrait vous faire comprendre que ces tokens &#34;ne valent pas grand chose&#34;. D&#39;après a href=&#34;https://coinmarketcap.com/currencies/basic-attention-token/&#34; title=&#34;Page du site web CoinMarketCap dédiée au BAT&#34; alt=&#34;Page du site web CoinMarketCap dédiée au BAT&#34;CoinMarketCap/a, 1 BAT vaut 0,365 dollar américain ou 0,37 euro d&#39;après a href=&#34;https://www.coinbase.com/fr/converter/bat/eur&#34; title=&#34;Page du site web Coinbase dédiée au BAT&#34; alt=&#34;Page du site web Coinbase dédiée au BAT&#34;Coinbase/a. La dernière solution, la plus fidèle à la philosophie du projet, est de reverser ces emtokens/em à des créateurs de contenus référencés chez iBrave/i. La chose est aisée : emvia/em un autre bouton sur la barre de recherche du navigateur, on peut apprendre si le site web consulté est enregistré auprès de iBrave/i et peut recevoir des emtokens/em. En quelques clics, on envoie mensuellement ou en une seule fois une certaines quantité de tokens, iBrave/i en retenant un petit pourcentage en guise de frais.&#xA;D&#39;ailleurs il y a quelques infos a href=&#34;https://publishers.basicattentiontoken.org/&#34; title=&#34;Page web dédiée aux créateurs de contenus sur le site officiel du projet BAT&#34; alt=&#34;Page web dédiée aux créateurs de contenus sur le site officiel du projet BAT&#34;sur cette page web/a concernant les emBrave publishers/em qui publient du contenu. La procédure est très rapide, et on peut le faire pour son site web, son profil iTwitter/i et aussi son profil iGitHub/i. Il faudra pour ça avoir un compte dédié à la gestion de vos cryptoactifs.&#xA;&#xA;table&#xA;tr&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/21/creator.png&#34; title=&#34;Panneau contextuel pour donner des BAT à un site web&#34; alt=&#34;Panneau contextuel pour donner des BAT à un site web&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;td style=&#34;border-width: 0;&#34;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/21/sponsor.png&#34; title=&#34;Panneau contextuel pour présenter le créateur à soutenir&#34; alt=&#34;Panneau contextuel pour présenter le créateur à soutenir&#34; class=&#34;centerImage toBigImage&#34;/&#xA;/td&#xA;/tr&#xA;/table&#xA;&#xA;h2Et finalement ?/h2&#xA;&#xA;    Finalement je suis mitigé, car je suis déçu. Au début du projet, les choses étaient simples et faciles, mais je commence à cumuler les frustrations qui me feraient partir de nouveau vers iFirefox/i.&#xA;&#xA;    D&#39;une part, les publicités ne m&#39;intéressent pas car elles tournent toujours autours de projets de cryptoactifs, ou de jeux Web3. Et j&#39;ai été amené plusieurs fois sans raison apparante à refaire les réglages des notifications entre les versions imacOS/i et iiOS/i du navigateur. En plus de ça, je note que iBrave/i décide d&#39;aller plus loin en proposant un emwallet/em pour gérer d&#39;autres cryptoactifs, ce qui ne correspond plus à mon besoin initial. Il y a aussi d&#39;autres services qui ne m&#39;intéressent pas, comme le support natif iWebTorrent/i et aussi iWidevine/i (a href=&#34;https://write.as/pylapp/le-jour-ou-le-web-senfonca-un-peu-plus-dans-la-tombe&#34; title=&#34;Article (site write.as) sur les dérives du web&#34; alt=&#34;Article (site write.as) sur les dérives du web&#34;dehors les DRM !/a).&#xA;&#xA;    Puis vinrent les grosses frustrations. Auparavant, les choses se passaient bien sur iiOS/i. Mais gagner des emtokens/em BAT et les envoyer via une app sur un appareil iApple/i sans accepter leur racket ? Un rêve éveillé. a href=&#34;https://brave.com/rewards-ios/&#34; title=&#34;Communication de Brave sur iOS&#34; alt=&#34;Communication de Brave sur iOS&#34;Le coup de grâce finit par tomber fin 2020/a, et ça m&#39;a vraiment saoulé.&#xA;Je continuais tout de même de tester sur imacOS/i le système des iBasic Attention Tokens/i avec un des services emwallet/em proposés pour gérer mes BAT, et il s&#39;avère que du jour au lendemain, ma &#34;région&#34; (emi.e./em le pays du coq au vin et du claquos sur la baguette) n&#39;était a href=&#34;https://community.brave.com/t/erreur-region-non-prise-en-charge/415018&#34; title=&#34;Forum de discussion Brave&#34; alt=&#34;Forum de discussion Brave&#34;plus prise en charge/a ! Expliquez-moi donc comment utiliser un navigateur web qui cumule des emtokens/em sans emwallet/em ? Impossible.&#xA;&#xA;h2Conclusion/h2&#xA;&#xA;    Bref, devant des pubs qui ne me plaisaient pas, sachant que le nouveau paradigme proposé par les BAT ne semble pas vraiment prendre en 6 ans, et que l&#39;on est toujours tributaire des &#34;gros&#34; (iApple/i et ses règles, et les lois des pays), j&#39;ai du mal à voir un intérêt à iBrave/i, alors que j&#39;y ai vraiment cru. Toutefois, ça reste une solution intéressante pour naviguer tranquillement sur le web sans avoir à installer des extensions et faire trop de configuration.&#xA;C&#39;est toujours un beau projet, et c&#39;est audacieux. En soit je ne regrette pas du tout d&#39;être passé à ce navigateur web et d&#39;avoir essayé son service basé sur les BAT. Mais quitte à avoir un navigateur web, autant qu&#39;il corresponde davantage à mes besoins, ce qui n&#39;est plus le cas aujourd&#39;hui. Bref, iBasic Attention Tokens/i comme iBrave/i et cryptoactifs, je laisse tomber. Mais merci pour ce moment ! En attendant des jours meilleurs, je retourne sur iFirefox/i 🔥&#xA;&#xA;D&#39;ailleurs si vous voulez creuser un peu les sujets de l&#39;hygiène numérique et de la protection de la vie privée, 3 hyperliens en vrac :&#xA;a href=&#34;https://write.as/pylapp/a-propos-dhygiene-numerique&#34;Un article sur l&#39;hygiène numérique/a&#xA;a href=&#34;https://write.as/pylapp/privacy-or-sensitive-data-a-list-of-tools-to-protect-your-ddzdz&#34;Un article (en anglais) sur la vie privée et des outils à avoir pour le numérique/a&#xA;a href=&#34;https://cafe-vie-privee-lannion.bzh/&#34;Le site web du Café Vie Privée de Lannion de 2018/a&#xA;&#xA;bSortez couverts !/b&#xA;&#xA;--&#xA;iDernière mise à jour : mardi 23 mai 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>Retour d&#39;expérience concernant le navigateur web Brave</h1>

<p><i>🇫🇷 – mardi 23 août 2022</i></p>

<p><b><i>Mots clés : <a href="https://write.as/pylapp/tag:Brave" class="hashtag"><span>#</span><span class="p-category">Brave</span></a>, <a href="https://write.as/pylapp/tag:privacy" class="hashtag"><span>#</span><span class="p-category">privacy</span></a>, <a href="https://write.as/pylapp/tag:ViePriv%C3%A9e" class="hashtag"><span>#</span><span class="p-category">ViePrivée</span></a>, <a href="https://write.as/pylapp/tag:web" class="hashtag"><span>#</span><span class="p-category">web</span></a>, <a href="https://write.as/pylapp/tag:cryptomonnaies" class="hashtag"><span>#</span><span class="p-category">cryptomonnaies</span></a></i></b></p>

<h2>Un peu de contexte</h2>

<p>    En 2016 Brendan Eich (créateur de <i>JavaScript</i>, cofondateur de la <i>Mozilla Foundation</i>, cocréateur du langage de programmation <i>Rust</i>) lançait son nouveau projet du moment : un navigateur web respectueux de la vie privée et voulant redéfinir le modèle économique du web bien sclérosé par les capitalismes de la donnée personnelle, de l&#39;attention et de la publicité. En plus de 20 ans d&#39;existence, le web a largement été bouffé par la publicité à tout va, les régies publicitaires sans scrupules, et les piliers du web et du numérique plus généralement : <a href="https://islean-consulting.fr/fr/transformation-digitale/gafam-natu-batx-numerique/">GAFAM, NATU, BATX</a>. Bref, Brendan Eich lança le navigateur web Brave, et <a href="https://www.usine-digitale.fr/article/le-double-pari-de-brave-le-nouveau-navigateur-web-de-l-ex-patron-de-mozilla.N549113" title="Le double pari de Brave, le nouveau navigateur web de l&#39;ex patron de Mozilla (site web usine-digitale.fr, accès libre)">en 2017 grâce à une grosse <em>Initial Coin Offering (ICO)</em></a> le projet du <i>Basic Attention Token</i> démarra.</p>

<p>    De mon côté, je ne sais plus comment j&#39;en suis arrivé à essayer <a href="https://brave.com/fr/" title="Site web officiel du navigateur web Brave"><i>Brave</i></a> et à l&#39;utiliser pendant 3 ans, mais je suppose que je devais avoir appris l&#39;existence des <a href="https://basicattentiontoken.org/fr/" title="Site web officiel du projet Basic Attention Token"><i>Basic Attention Tokens</i></a>, étant déjà bien calé avec mon <i>Firefox</i>.</p>

<p>    Après environ trois ans d&#39;utilisation, j&#39;aimerai faire un bilan.</p>

<h2>Le navigateur web</h2>

<p>    En soit, je n&#39;ai pas vraiment utilisé d&#39;autres navigateurs que celui-ci depuis un sacré moment. <i>Internet Explorer</i> ? Oublié depuis mes années lycée. <i>Edge</i> ? Jamais touché. <i>Chrome</i> ? Abandonné depuis les premières polémiques avec <i>Google</i>. De temps en temps <i>Chromium</i>, essentiellement <i>Firefox</i>. Presque jamais <i>Safari</i>. Très vaguement <i>Opera</i>. Ainsi il parait un peu hasardeux de comparer <i>Brave</i> à d&#39;autres navigateurs web, je doute qu&#39;il n&#39;y ait aucun article à ce sujet.</p>

<p>    Sous le capot, c&#39;est du <i>Chromium</i>. Certes cette base est utilisée dans d&#39;autres navigateurs (dont <i>Opera</i>, <i>Edge</i> et <i>Vivaldi</i>), mais ça reste du <i>Google / Alphabet</i> derrière, et on finit par centraliser les navigateurs vers une seule solution, qui même si elle est <a href="https://github.com/chromium/chromium" title="Dépôt GitHub du projet Chromium">open source sous licence BSD 3-Clause</a> appartient à un <em>GAFAM</em>. Bref, ce n&#39;est pas une bonne idée.</p>

<p>    J&#39;ai pu utiliser ce navigateur que ce soit sur ordinateur (essentiellement <i>macOS</i>) que sur smartphone (<i>iOS</i>). En soit, il y a un réel comfort d&#39;utilisation pour des tâches basiques : navigation sur le web, gestion des marque-pages, gestion de l&#39;historique. À savoir pour les développeurs web, forcément <i>Brave</i> pour <i>iOS</i> utilise le framework <i>WebKit</i> d&#39;<i>Apple</i>, tout comme ses concurrents.</p>

<h2>L&#39;usage</h2>

<h3>La publicité embarquée</h3>

<p>    Mon besoin était le suivant : je navigue sur les internets, en voulant un minimum de protection pour ma vie privée (mes exigences n&#39;étant pas nécessairement les mêmes que celles des autres), et en voulant éviter de me bouffer de la publicité à tout va, tout en profitant des <i>basic attention tokens</i>. Et sans aucun <em>add-on</em> à installer.</p>

<p>    Concernant la facilité d&#39;utilisation, c&#39;est classique, et je n&#39;ai rien à dire de négatif à ce sujet et je mets <i>Brave</i> au même niveau que ses concurrents (à tort ?). Pour ce qui des publicités et des traceurs sur les sites web, je suis satisfait. J&#39;ai pu tester le site web de <a href="https://www.20minutes.fr/" title="Site web de 20 Minutes">20 Minutes</a>, choisi arbitrairement, en ayant activé les <a href="https://brave.com/shields/" title="Description des Brave Shields sur le site web officiel"><em>Brave shields</em></a> et en les désactivant : de manière propre et transparente les publicités disparaissent et des pisteurs sont bloqués. Pour rappel, supprimer les publicités peut vous éviter de perdre votre attention, vous laisse davantage maitres de votre navigation web, et peut aussi réduire l&#39;impact sur le traffic (moins de contenu tiers à télécharger sur votre appareil). Ci-dessous une comparaison avec la page sans les <em>shields</em> activés, et la page avec ceux-ci activés.</p>

<table>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/21/avec-pub.png" title="Page d&#39;accueil du site de news 20 Minutes.fr avec deux encarts publicitaires" alt="Page d&#39;accueil du site de news 20 Minutes.fr avec deux encarts publicitaire" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/21/sans-pub.png" title="Page d&#39;accueil du site de news 20 Minutes.fr avec deux encarts publicitaire" alt="Page d&#39;accueil du site de news 20 Minutes.fr avec deux encarts publicitaire" class="centerImage toBigImage"/>
</td>
</tr>
</table>

<h3>La vie privée</h3>

<p>    Comme évoqué précédemment, les <em>Brave shields</em> permettent de protéger un minimum votre vie privée en agissant sur plusieurs leviers :
<ul><li>Le bloquage des traqueurs, balises et publicités, avec un mode “agressif” possible</li>
<li>Le forçage des requêtes vers HTTPS</li>
<li>Le bloquage de scripts (dont du code <i>JavaScript</i>)</li>
<li>Le bloquage des captures d&#39;empreintes numériques</li>
<li>Le bloquage des cookies interdomaines</li></ul></p>

<p>    La prise en main est simple au possible, même s&#39;il me semble que d&#39;autres navigateurs embarquent par défaut certains de ces éléments. L&#39;interface est simple, intuitive, et permet de voir aussitôt ou presque le résultat sur la page donnée. On accède au panneau de contrôle notamment via l&#39;icône de la tête de lion dans la barre de recherche du navigateur, voyez ce panneau ci-dessous.</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/21/shields.png" title="Panneau de contrôle des protections Brave Shields" alt="Panneau de contrôle des protections proposées par le navigateur web Brave" class="centerImage toBigImage"/></p>

<p>    Si vous voulez en savoir davantage, consultez cet <a href="https://brave.com/shields/" title="Page du site web de Brave sur les boucliers de protections">hyperlien sur les <em>privacy shields</em></a> et celui-ci <a href="https://brave.com/privacy-features/" title="Page du site web de Brave sur les fonctionnalités protectrices de la vie privée">sur les autres fonctionnalités protectrices de la vie privée</a>.</p>

<p>    Pour celles et ceux qui veulent aller plus loin, les préférences du navigateur proposent bien plus encore. Il est possible de forcer le navigateur web à afficher les pages originelles plutôt que les rendus optimisés pour les appareils mobiles, rendus générés par <i>Google</i> et son projet <a href="https://amp.dev/index-2021/" title="Site web du projet AMP">AMP</a>. On peut aussi définir les listes de filtres à appliquer pour bloquer tout ou partie du contenu indésirable que l&#39;on peut rencontrer au cours de sa navigation ; ces listes pouvant être déjà proposées ou définies à la main. De même, il est possible d&#39;autoriser ou non les intégrations de réseaux sociaux et de services tiers (<i>Google</i>, <i>Facebook</i>, <i>Twitter</i> et <i>LinkedIn</i>). Et comme beaucoup de ses concurrents, on peut avec <i>Brave</i> définir son moteur de recherche par défaut (dont celui de <i>Brave</i>, <i>Qwant</i>, <i>DuckDuckGo</i>, <i>Startpage</i>, <i>Ecosia</i> et <i>Google</i>). Bref, ce que propose nativement <i>Brave</i> est déjà pas mal, même s&#39;il serait intéressant de faire une comparaison avec un <a href="https://www.torproject.org/fr/download/" title="Site web du projet du navigateur web basé sur TOR"><i>Tor Browser</i></a> <em>vanilla</em> ou un <i>Firefox</i> avec des <em>add-ons</em> comme <a href="https://privacybadger.org/" title="Site web de Privacy Badger"><i>Privacy Badger</i></a> et <a href="https://noscript.net//" title="Site web de NoScript"><i>NoScript</i></a>.</p>

<p>    Enfin, <i>Brave</i> propose en plus du mode “navigation privée”, un mode “navigation privée avec <em>TOR</em>”. On peut ainsi passer par le système de routage en oignons pour être potentiellement moins pistés. Toutefois, j&#39;ai déjà fait la comparaison entre ce mode et le navigateur <em>TOR</em> mentionné précédemment, et j&#39;ai eu davantage de sites web qui plantaient avec <i>Brave</i> qu&#39;avec le navigateur dédié à l&#39;oignon. De plus, il faudrait regarder si pour ces deux cas le <em>web fingerprinting</em> n&#39;est pas fructueux ; le navigateur à l&#39;oignon va bien définir une fenêtre de navigation spéciale pour fausser ce calcul d&#39;empreinte, mais <em>quid</em> de <i>Brave</i> ? Avec mon pote <a href="https://www.linkedin.com/in/sebastienvitard/" title="Page LinkedIn de Seb">Seb</a> on avait pu proposer ce sujet lors du <a href="https://cafe-vie-privee-lannion.bzh/" title="Site web du Café Vie Privée de Lannion de 2018">Café Vie Privée</a> que l&#39;on avait monté à Lannion en 2018. Le support de présentation est d&#39;ailleurs <a href="https://cafe-vie-privee-lannion.bzh/contents/slidedecks/slides/web.pdf" title="Support au format PDF (1,6 Mo)">ici</a>.</p>

<h3>La publicité proposée</h3>

<p>    L&#39;un des idéaux de <i>Brave</i> est de proposer autre chose concernant la publicité qui est jusque-là imposée aux usagers du web. Pourquoi devoir subir tous ces encarts publicitaires douteux, sachant que les régies quand ce ne sont pas les géants du web nous pistent pour toujours nous proposer autre chose ? Est-ce que la consommation de ces publicités ne représente pas un travail d&#39;un genre nouveau ?</p>

<p>    En 2021 le livre blanc du projet <i>Basic Attention Token</i> <a href="https://basicattentiontoken.org/static-assets/documents/BasicAttentionTokenWhitePaper-4.pdf" title="Livre blanc (.pdf, 4,5 Mo)">fut publié</a>, et les différents chiffres présentés sur le site web <a href="https://basicattentiontoken.org/fr/" title="Site web du projet Basic Attention Token">basicattentiontoken.org</a> sont intéressants : presque 60 millions d&#39;utilisateurs mensuels du navigateur, plus de 400 annonceurs enregistrés et près de 2 000 campagnes en cours.</p>

<p>    De manière générale, durant votre navigation sur le web vous pourrez recevoir sur votre appareil une notification assez classique, mettant en avant tel ou tel produit ou service. En cliquant sur cette notification, vous irez dans un onglet dédié tout droit vers le contenu publicitaire, et vous serez <em>in fine</em> <em>prorata temporis</em> rémunéré. Dit autrement, plus vous consommez de pubs de ce genre, plus vous cagnottez en <em>Basic Attention Tokens</em> (BAT). Par la suite, vous percevrez mensuellement une somme de BAT, et c&#39;est reparti pour un autre mois. Bref, on ne vous force pas à voir de la pub, et on vous rémunère au temps passé si vous le faîtes. Curieux paradigme rafraîchissant dans un système où le pigeon qui regarde, clic, et achète est le même qui se bouffe toutes les pubs.</p>

<p>    Que faire alors de ces <em>tokens</em> BAT ? Vous pouvez faire par exemple du <em>staking</em>, <em>i.e.</em> vous les mettez de côté en attendant / spéculant sur le fait que ça prenne de la valeur. Bref vous entretenez tout ce côté abscons, abjecte et malsain au possible que l&#39;Homme a donné aux cryptomonnaies : vous spéculez, reproduisant le même schéma qui a échoué et qui devait être combattu par les premières cryptomonnaies. L&#39;autre solution est de les convertir en devises “classiques”, mais un bref coup d&#39;oeil aux taux de conversion devrait vous faire comprendre que ces tokens “ne valent pas grand chose”. D&#39;après <a href="https://coinmarketcap.com/currencies/basic-attention-token/" title="Page du site web CoinMarketCap dédiée au BAT">CoinMarketCap</a>, 1 BAT vaut 0,365 dollar américain ou 0,37 euro d&#39;après <a href="https://www.coinbase.com/fr/converter/bat/eur" title="Page du site web Coinbase dédiée au BAT">Coinbase</a>. La dernière solution, la plus fidèle à la philosophie du projet, est de reverser ces <em>tokens</em> à des créateurs de contenus référencés chez <i>Brave</i>. La chose est aisée : <em>via</em> un autre bouton sur la barre de recherche du navigateur, on peut apprendre si le site web consulté est enregistré auprès de <i>Brave</i> et peut recevoir des <em>tokens</em>. En quelques clics, on envoie mensuellement ou en une seule fois une certaines quantité de tokens, <i>Brave</i> en retenant un petit pourcentage en guise de frais.
D&#39;ailleurs il y a quelques infos <a href="https://publishers.basicattentiontoken.org/" title="Page web dédiée aux créateurs de contenus sur le site officiel du projet BAT">sur cette page web</a> concernant les <em>Brave publishers</em> qui publient du contenu. La procédure est très rapide, et on peut le faire pour son site web, son profil <i>Twitter</i> et aussi son profil <i>GitHub</i>. Il faudra pour ça avoir un compte dédié à la gestion de vos cryptoactifs.</p>

<table>
<tr>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/21/creator.png" title="Panneau contextuel pour donner des BAT à un site web" alt="Panneau contextuel pour donner des BAT à un site web" class="centerImage toBigImage"/>
</td>
<td style="border-width: 0;">
<img src="https://pylapersonne.info/data/cdn/blog/21/sponsor.png" title="Panneau contextuel pour présenter le créateur à soutenir" alt="Panneau contextuel pour présenter le créateur à soutenir" class="centerImage toBigImage"/>
</td>
</tr>
</table>

<h2>Et finalement ?</h2>

<p>    Finalement je suis mitigé, car je suis déçu. Au début du projet, les choses étaient simples et faciles, mais je commence à cumuler les frustrations qui me feraient partir de nouveau vers <i>Firefox</i>.</p>

<p>    D&#39;une part, les publicités ne m&#39;intéressent pas car elles tournent toujours autours de projets de cryptoactifs, ou de jeux Web3. Et j&#39;ai été amené plusieurs fois sans raison apparante à refaire les réglages des notifications entre les versions <i>macOS</i> et <i>iOS</i> du navigateur. En plus de ça, je note que <i>Brave</i> décide d&#39;aller plus loin en proposant un <em>wallet</em> pour gérer d&#39;autres cryptoactifs, ce qui ne correspond plus à mon besoin initial. Il y a aussi d&#39;autres services qui ne m&#39;intéressent pas, comme le support natif <i>WebTorrent</i> et aussi <i>Widevine</i> (<a href="https://write.as/pylapp/le-jour-ou-le-web-senfonca-un-peu-plus-dans-la-tombe" title="Article (site write.as) sur les dérives du web">dehors les DRM !</a>).</p>

<p>    Puis vinrent les grosses frustrations. Auparavant, les choses se passaient bien sur <i>iOS</i>. Mais gagner des <em>tokens</em> BAT et les envoyer via une app sur un appareil <i>Apple</i> sans accepter leur racket ? Un rêve éveillé. <a href="https://brave.com/rewards-ios/" title="Communication de Brave sur iOS">Le coup de grâce finit par tomber fin 2020</a>, et ça m&#39;a vraiment saoulé.
Je continuais tout de même de tester sur <i>macOS</i> le système des <i>Basic Attention Tokens</i> avec un des services <em>wallet</em> proposés pour gérer mes BAT, et il s&#39;avère que du jour au lendemain, ma “région” (<em>i.e.</em> le pays du coq au vin et du claquos sur la baguette) n&#39;était <a href="https://community.brave.com/t/erreur-region-non-prise-en-charge/415018" title="Forum de discussion Brave">plus prise en charge</a> ! Expliquez-moi donc comment utiliser un navigateur web qui cumule des <em>tokens</em> sans <em>wallet</em> ? Impossible.</p>

<h2>Conclusion</h2>

<p>    Bref, devant des pubs qui ne me plaisaient pas, sachant que le nouveau paradigme proposé par les BAT ne semble pas vraiment prendre en 6 ans, et que l&#39;on est toujours tributaire des “gros” (<i>Apple</i> et ses règles, et les lois des pays), j&#39;ai du mal à voir un intérêt à <i>Brave</i>, alors que j&#39;y ai vraiment cru. Toutefois, ça reste une solution intéressante pour naviguer tranquillement sur le web sans avoir à installer des extensions et faire trop de configuration.
C&#39;est toujours un beau projet, et c&#39;est audacieux. En soit je ne regrette pas du tout d&#39;être passé à ce navigateur web et d&#39;avoir essayé son service basé sur les BAT. Mais quitte à avoir un navigateur web, autant qu&#39;il corresponde davantage à mes besoins, ce qui n&#39;est plus le cas aujourd&#39;hui. Bref, <i>Basic Attention Tokens</i> comme <i>Brave</i> et cryptoactifs, je laisse tomber. Mais merci pour ce moment ! En attendant des jours meilleurs, je retourne sur <i>Firefox</i> 🔥</p>

<p>D&#39;ailleurs si vous voulez creuser un peu les sujets de l&#39;hygiène numérique et de la protection de la vie privée, 3 hyperliens en vrac :
– <a href="https://write.as/pylapp/a-propos-dhygiene-numerique">Un article sur l&#39;hygiène numérique</a>
– <a href="https://write.as/pylapp/privacy-or-sensitive-data-a-list-of-tools-to-protect-your-ddzdz">Un article (en anglais) sur la vie privée et des outils à avoir pour le numérique</a>
– <a href="https://cafe-vie-privee-lannion.bzh/">Le site web du Café Vie Privée de Lannion de 2018</a></p>

<p><b>Sortez couverts !</b></p>

<p>—
<i>Dernière mise à jour : mardi 23 mai 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/retour-dexperience-concernant-le-navigateur-web-brave</guid>
      <pubDate>Wed, 17 May 2023 11:31:17 +0000</pubDate>
    </item>
    <item>
      <title>Some words about secrets leaks in Git repositories</title>
      <link>https://write.as/pylapp/some-words-about-secrets-leaks-in-git-repositories?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[h1Some words about secrets leaks in Git repositories/h1&#xA;&#xA;i🇺🇸 – Sunday, March 6th 2022/i&#xA;&#xA;biKeywords: #Git, #GitLeaks, #leaks, #secrets, #repository/i/b&#xA;&#xA;    We all know it could be quite easy to leak secrets or sensitive data in our iGit/i repositories.&#xA;&#xA;    In most of cases we just acted too fast, or were not aware we added in the version control systems (VCS) such sensitive files or objects.&#xA;Bad iSSH/i configuration with private or public keys in the VCS tree, API keys defined in hard-coded variables in the source code, keystore files with credentials in the iGradle/i files (including alias, key and password of course), IP addresses, sensitive URL, and so on.&#xA;&#xA;    And when we work on public or shared repositories, we have all those sensitive data spread outside!&#xA;&#xA;    When people get noticed of these leaks, they may apply bad patterns to fix these issues, for example :&#xA;ul&#xA;    liMake a commit &#34;just to remove the change&#34;, (useless because the Git history still contains the data)/li&#xA;    liMake the project private (bad, because users won&#39;t be able to get it)/li&#xA;    liDelete the repository (useless if there are forks of it) /li&#xA;/ul&#xA;&#xA;    One tool can be useful, a href=&#34;https://github.com/zricethezav/gitleaks&#34; title=&#34;GitHub project of GitLeaks&#34;Gitleaks/a.&#xA;&#xA;    Note that iGitleaks/i looks both in the files tree of the project and the iGit/i history. That&#39;s a reason why we must not make such &#34;fix commit&#34; because the history keeps traces of what we do and tried to hide.&#xA;&#xA;    So, I would like to share three useful and cool things:&#xA;&#xA;a href=&#34;https://rtyley.github.io/bfg-repo-cleaner/&#34; title=&#34;Website of BFG Repo Cleaner&#34;BFG Repo-Cleaner/a which is awesome and allows you to get rid of commited files (like keystores or SSH keys...) and keep the history clean&#xA;a href=&#34;https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository&#34; title=&#34;GitHub doc&#34;This page on GitHub about removing sensitive data/a&#xA;And a href=&#34;https://gitleaks.io/&#34; title=&#34;Gitleaks website&#34;Gitleaks/a to look in your repositories for leaks&#xA;&#xA;The command to run iGitleaks/i is very simple:&#xA;&#xA;img src=&#34;https://pylapersonne.info/data/cdn/blog/20/commande.png&#34; title=&#34;Shell command to run gitleakswhere. json is the type ouf output for the report called report.json created after the scan of your git repository named folder.&#34; alt=&#34;Shell command to run gitleakswhere. json is the type ouf output for the report called report.json created after the scan of your git repository named folder.&#34; class=&#34;centerImage toBigImage&#34;&#xA;&#xA;    Beware if you scan big repositories (like a fork  or a project with an old history), iGitleaks/i will take long time to run.&#xA;&#xA;In addition, the iGit/i configuration value idiff.renameLimit/i should be updated to allow iGitleaks/i to work.&#xA;&#xA;    Note that the a href=&#34;https://opensource.orange.com/fr/accueil/&#34; title=&#34;Orange Opensource website&#34;Orange/a group provides a iGitLab CI/i template dedicated to iGitLeaks/i with the iTo Be Continous/i project! Get it a href=&#34;https://to-be-continuous.pages.gitlab.tech.orange/doc/ref/gitleaks/&#34; title=&#34;Web site of To Be Continuous&#34;here/a.&#xA;&#xA;Have fun by scanning your projects!&#xA;--&#xA;iLast update: Wednesday, August, 10th 2022/i&#xA;iPreviously on a href=&#34;https://medium.com/@pylapp&#34; title=&#34;Old profile on Medium.com website, deleted&#34; alt=&#34;Old profile on Medium.com website, deleted&#34;Medium/a and a title=&#34;Old profile on paper.wf website, no more available, deleted account&#34; alt=&#34;Old profile on paper.wf website, no more available, deleted account&#34; href=&#34;https://paper.wf/pylapp&#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>Some words about secrets leaks in Git repositories</h1>

<p><i>🇺🇸 – Sunday, March 6th 2022</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:GitLeaks" class="hashtag"><span>#</span><span class="p-category">GitLeaks</span></a>, <a href="https://write.as/pylapp/tag:leaks" class="hashtag"><span>#</span><span class="p-category">leaks</span></a>, <a href="https://write.as/pylapp/tag:secrets" class="hashtag"><span>#</span><span class="p-category">secrets</span></a>, <a href="https://write.as/pylapp/tag:repository" class="hashtag"><span>#</span><span class="p-category">repository</span></a></i></b></p>

<p>    We all know it could be quite easy to leak secrets or sensitive data in our <i>Git</i> repositories.</p>

<p>    In most of cases we just acted too fast, or were not aware we added in the version control systems (VCS) such sensitive files or objects.
Bad <i>SSH</i> configuration with private or public keys in the VCS tree, API keys defined in hard-coded variables in the source code, keystore files with credentials in the <i>Gradle</i> files (including alias, key and password of course), IP addresses, sensitive URL, and so on.</p>

<p>    And when we work on public or shared repositories, we have all those sensitive data spread outside!</p>

<p>    When people get noticed of these leaks, they may apply bad patterns to fix these issues, for example :
<ul>    <li>Make a commit “just to remove the change”, (useless because the Git history still contains the data)</li>
    <li>Make the project private (bad, because users won&#39;t be able to get it)</li>
    <li>Delete the repository (useless if there are forks of it) </li></ul></p>

<p>    One tool can be useful, <a href="https://github.com/zricethezav/gitleaks" title="GitHub project of GitLeaks">Gitleaks</a>.</p>

<p>    Note that <i>Gitleaks</i> looks both in the files tree of the project and the <i>Git</i> history. That&#39;s a reason why we must not make such “fix commit” because the history keeps traces of what we do and tried to hide.</p>

<p>    So, I would like to share three useful and cool things:</p>
<ul><li><a href="https://rtyley.github.io/bfg-repo-cleaner/" title="Website of BFG Repo Cleaner">BFG Repo-Cleaner</a> which is awesome and allows you to get rid of commited files (like keystores or SSH keys...) and keep the history clean</li>
<li><a href="https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository" title="GitHub doc">This page on GitHub about removing sensitive data</a></li>
<li>And <a href="https://gitleaks.io/" title="Gitleaks website">Gitleaks</a> to look in your repositories for leaks</li></ul>

<p>The command to run <i>Gitleaks</i> is very simple:</p>

<p><img src="https://pylapersonne.info/data/cdn/blog/20/commande.png" title="Shell command to run gitleakswhere. json is the type ouf output for the report called report.json created after the scan of your git repository named folder." alt="Shell command to run gitleakswhere. json is the type ouf output for the report called report.json created after the scan of your git repository named folder." class="centerImage toBigImage"></p>

<p>    Beware if you scan big repositories (like a fork  or a project with an old history), <i>Gitleaks</i> will take long time to run.</p>

<p>In addition, the <i>Git</i> configuration value <i>diff.renameLimit</i> should be updated to allow <i>Gitleaks</i> to work.</p>

<p>    Note that the <a href="https://opensource.orange.com/fr/accueil/" title="Orange Opensource website">Orange</a> group provides a <i>GitLab CI</i> template dedicated to <i>GitLeaks</i> with the <i>To Be Continous</i> project! Get it <a href="https://to-be-continuous.pages.gitlab.tech.orange/doc/ref/gitleaks/" title="Web site of To Be Continuous">here</a>.</p>

<p>Have fun by scanning your projects!
—
<i>Last update: Wednesday, August, 10th 2022</i>
<i>Previously on <a href="https://medium.com/@pylapp" title="Old profile on Medium.com website, deleted">Medium</a> and <a title="Old profile on paper.wf website, no more available, deleted account" href="https://paper.wf/pylapp">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/some-words-about-secrets-leaks-in-git-repositories</guid>
      <pubDate>Wed, 17 May 2023 11:16:15 +0000</pubDate>
    </item>
  </channel>
</rss>